Browse Source

wip, new mappings

Kajetan Johannes Hammerle 2 years ago
parent
commit
200b079afe
35 changed files with 432 additions and 445 deletions
  1. 5 7
      build.gradle
  2. 61 60
      src/main/java/me/km/Client.java
  3. 4 5
      src/main/java/me/km/KajetansMod.java
  4. 2 2
      src/main/java/me/km/ObjectRegistry.java
  5. 1 2
      src/main/java/me/km/blocks/BlockBookshelf.java
  6. 1 2
      src/main/java/me/km/blocks/cookingpot/BlockCookingPot.java
  7. 8 6
      src/main/java/me/km/events/PlayerMoveData.java
  8. 48 43
      src/main/java/me/km/inventory/CustomContainer.java
  9. 23 21
      src/main/java/me/km/inventory/InventoryUtils.java
  10. 10 10
      src/main/java/me/km/inventory/ModInventory.java
  11. 6 4
      src/main/java/me/km/inventory/ServerCustomContainer.java
  12. 6 4
      src/main/java/me/km/networking/CustomInventory.java
  13. 14 45
      src/main/java/me/km/networking/CustomInventoryScreen.java
  14. 4 4
      src/main/java/me/km/networking/ItemStackDisplayGui.java
  15. 2 2
      src/main/java/me/km/networking/KeyManager.java
  16. 6 6
      src/main/java/me/km/networking/PlayerDisplayGui.java
  17. 4 4
      src/main/java/me/km/networking/PlayerHeadGui.java
  18. 10 10
      src/main/java/me/km/networking/StatusDisplayGui.java
  19. 11 11
      src/main/java/me/km/overrides/ModEntityPlayerMP.java
  20. 46 46
      src/main/java/me/km/overrides/ModPlayerList.java
  21. 7 5
      src/main/java/me/km/overrides/PlayerScoreboard.java
  22. 2 2
      src/main/java/me/km/permissions/Command.java
  23. 7 7
      src/main/java/me/km/permissions/ModCommandManager.java
  24. 4 3
      src/main/java/me/km/permissions/Permissions.java
  25. 4 4
      src/main/java/me/km/playerbank/PlayerManager.java
  26. 12 11
      src/main/java/me/km/plots/ProtectionEvents.java
  27. 1 1
      src/main/java/me/km/plots/WorldPlotMap.java
  28. 3 3
      src/main/java/me/km/utils/ClientReflectionUtils.java
  29. 13 9
      src/main/java/me/km/utils/ItemStackUtils.java
  30. 2 3
      src/main/java/me/km/utils/Location.java
  31. 52 50
      src/main/java/me/km/utils/Mapper.java
  32. 39 40
      src/main/java/me/km/utils/Utils.java
  33. 8 8
      src/main/java/me/km/world/ModWorldInfo.java
  34. 4 3
      src/main/java/me/km/world/WorldEvents.java
  35. 2 2
      src/main/resources/META-INF/mods.toml

+ 5 - 7
build.gradle

@@ -5,7 +5,7 @@ buildscript {
         mavenCentral()
     }
     dependencies {
-        classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
+        classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
     }
 }
 apply plugin: 'net.minecraftforge.gradle'
@@ -16,7 +16,7 @@ group = 'me.hammerle.km'
 archivesBaseName = 'km'
 
 minecraft {
-    mappings channel: 'snapshot', version: '20201028-1.16.3'
+    mappings channel: 'official', version: '1.16.5'
 
     runs {
         client {
@@ -40,10 +40,8 @@ compileJava {
 }
 
 dependencies {
-    minecraft 'net.minecraftforge:forge:1.16.4-35.1.13'
+    minecraft 'net.minecraftforge:forge:1.16.5-36.2.20'
     
-    compile 'mysql:mysql-connector-java:5.1.42'
-    
-    compile files('./libs/SnuviScriptRecoded.jar')
-    compile files('./libs/kcm-1.0.jar')
+    implementation files('./libs/SnuviScriptRecoded.jar')
+    implementation files('./libs/kcm-1.0.jar')
 }

+ 61 - 60
src/main/java/me/km/Client.java

@@ -34,7 +34,7 @@ import net.minecraft.client.renderer.entity.EntityRendererManager;
 import net.minecraft.client.world.ClientWorld;
 import net.minecraft.entity.Entity;
 import net.minecraft.item.BlockItem;
-import static net.minecraft.item.ItemModelsProperties.registerProperty;
+import net.minecraft.item.ItemModelsProperties;
 import net.minecraft.item.ItemStack;
 import net.minecraft.particles.ParticleTypes;
 import net.minecraft.util.ResourceLocation;
@@ -72,27 +72,27 @@ public class Client {
     }
 
     private static void registerColors() {
-        RenderTypeLookup.setRenderLayer(ModBlocks.lantern, RenderType.getTranslucent());
-        RenderTypeLookup.setRenderLayer(ModBlocks.tallGrass, RenderType.getCutout());
-        RenderTypeLookup.setRenderLayer(ModBlocks.cherrySapling, RenderType.getCutout());
-        RenderTypeLookup.setRenderLayer(ModBlocks.apricotSapling, RenderType.getCutout());
-        RenderTypeLookup.setRenderLayer(ModBlocks.pearSapling, RenderType.getCutout());
-        RenderTypeLookup.setRenderLayer(ModBlocks.plumSapling, RenderType.getCutout());
-        RenderTypeLookup.setRenderLayer(ModBlocks.cherryLeaves, RenderType.getCutoutMipped());
-        RenderTypeLookup.setRenderLayer(ModBlocks.apricotLeaves, RenderType.getCutoutMipped());
-        RenderTypeLookup.setRenderLayer(ModBlocks.pearLeaves, RenderType.getCutoutMipped());
-        RenderTypeLookup.setRenderLayer(ModBlocks.plumLeaves, RenderType.getCutoutMipped());
-        RenderTypeLookup.setRenderLayer(ModBlocks.wheat, RenderType.getCutout());
-        RenderTypeLookup.setRenderLayer(ModBlocks.carrots, RenderType.getCutout());
-        RenderTypeLookup.setRenderLayer(ModBlocks.potatoes, RenderType.getCutout());
-        RenderTypeLookup.setRenderLayer(ModBlocks.beetroots, RenderType.getCutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.lantern, RenderType.translucent());
+        RenderTypeLookup.setRenderLayer(ModBlocks.tallGrass, RenderType.cutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.cherrySapling, RenderType.cutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.apricotSapling, RenderType.cutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.pearSapling, RenderType.cutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.plumSapling, RenderType.cutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.cherryLeaves, RenderType.cutoutMipped());
+        RenderTypeLookup.setRenderLayer(ModBlocks.apricotLeaves, RenderType.cutoutMipped());
+        RenderTypeLookup.setRenderLayer(ModBlocks.pearLeaves, RenderType.cutoutMipped());
+        RenderTypeLookup.setRenderLayer(ModBlocks.plumLeaves, RenderType.cutoutMipped());
+        RenderTypeLookup.setRenderLayer(ModBlocks.wheat, RenderType.cutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.carrots, RenderType.cutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.potatoes, RenderType.cutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.beetroots, RenderType.cutout());
 
         BlockColors bColors = Minecraft.getInstance().getBlockColors();
         bColors.register((state, w, pos, tintIndex) -> {
             if(w == null || pos == null) {
                 return -16777216;
             }
-            TileEntityCookingPot tile = (TileEntityCookingPot) w.getTileEntity(pos);
+            TileEntityCookingPot tile = (TileEntityCookingPot) w.getBlockEntity(pos);
             if(tile == null) {
                 return -16777216;
             }
@@ -102,7 +102,7 @@ public class Client {
 
         IBlockColor tallGrass = (state, w, pos, tintIndex) -> {
             if(w != null && pos != null) {
-                return BiomeColors.getGrassColor(w, pos);
+                return BiomeColors.getAverageGrassColor(w, pos);
             }
             return GrassColors.get(0.5D, 1.0D);
         };
@@ -117,21 +117,23 @@ public class Client {
                 ModItems.gemStone, ModItems.rawGemStone, ModItems.flawlessGemStone);
 
         iColors.register((stack, tintIndex) -> tallGrass.getColor(
-                ((BlockItem) stack.getItem()).getBlock().getDefaultState(), null, null, tintIndex),
-                ModBlocks.tallGrass);
-
-        registerProperty(ModItems.sling, new ResourceLocation("pull"), (stack, w, ent) -> {
-            if(ent == null) {
-                return 0.0F;
-            } else {
-                return ent.getActiveItemStack() != stack ? 0.0f
-                        : (float) (stack.getUseDuration() - ent.getItemInUseCount()) / 20.0f;
-            }
-        });
-        registerProperty(ModItems.sling, new ResourceLocation("pulling"), (ent, w, stack) -> {
-            return stack != null && stack.isHandActive() && stack.getActiveItemStack() == ent ? 1.0F
-                    : 0.0F;
-        });
+                ((BlockItem) stack.getItem()).getBlock().defaultBlockState(), null, null,
+                tintIndex), ModBlocks.tallGrass);
+        ItemModelsProperties.register(ModItems.sling, new ResourceLocation("pull"),
+                (stack, w, ent) -> {
+                    if(ent == null) {
+                        return 0.0F;
+                    } else {
+                        return ent.getUseItem() != stack ? 0.0f
+                                : (float) (stack.getUseDuration() - ent.getUseItemRemainingTicks())
+                                        / 20.0f;
+                    }
+                });
+        ItemModelsProperties.register(ModItems.sling, new ResourceLocation("pulling"),
+                (ent, w, stack) -> {
+                    return stack != null && stack.isUsingItem() && stack.getUseItem() == ent ? 1.0F
+                            : 0.0F;
+                });
     }
 
     @SubscribeEvent
@@ -148,16 +150,16 @@ public class Client {
     @SuppressWarnings("")
     private void animateTick(Block b) {
         Minecraft mc = Minecraft.getInstance();
-        if(mc.isGamePaused() || mc.world == null) {
+        if(mc.isPaused() || mc.level == null) {
             return;
         }
-        int posX = MathHelper.floor(mc.player.getPosX());
-        int posY = MathHelper.floor(mc.player.getPosY());
-        int posZ = MathHelper.floor(mc.player.getPosZ());
+        int posX = MathHelper.floor(mc.player.getX());
+        int posY = MathHelper.floor(mc.player.getY());
+        int posZ = MathHelper.floor(mc.player.getZ());
 
         boolean flag = false;
-        if(mc.playerController.getCurrentGameType() == GameType.CREATIVE) {
-            for(ItemStack itemstack : mc.player.getHeldEquipment()) {
+        if(mc.gameMode.getPlayerMode() == GameType.CREATIVE) {
+            for(ItemStack itemstack : mc.player.getHandSlots()) {
                 if(itemstack.getItem() == b.asItem()) {
                     flag = true;
                     break;
@@ -170,17 +172,17 @@ public class Client {
 
         BlockPos.Mutable pos = new BlockPos.Mutable();
         for(int j = 0; j < 667; ++j) {
-            animateTick(mc.world, b, posX, posY, posZ, 16, pos);
-            animateTick(mc.world, b, posX, posY, posZ, 32, pos);
+            animateTick(mc.level, b, posX, posY, posZ, 16, pos);
+            animateTick(mc.level, b, posX, posY, posZ, 32, pos);
         }
     }
 
     private void animateTick(ClientWorld w, Block b, int x, int y, int z, int offset,
             BlockPos.Mutable pos) {
-        x += w.rand.nextInt(offset) - w.rand.nextInt(offset);
-        y += w.rand.nextInt(offset) - w.rand.nextInt(offset);
-        z += w.rand.nextInt(offset) - w.rand.nextInt(offset);
-        pos.setPos(x, y, z);
+        x += w.random.nextInt(offset) - w.random.nextInt(offset);
+        y += w.random.nextInt(offset) - w.random.nextInt(offset);
+        z += w.random.nextInt(offset) - w.random.nextInt(offset);
+        pos.set(x, y, z);
         BlockState blockstate = w.getBlockState(pos);
         if(blockstate.getBlock() == b) {
             w.addParticle(ParticleTypes.BARRIER, x + 0.5, y + 0.5, z + 0.5, 0.0, 0.0, 0.0);
@@ -192,25 +194,25 @@ public class Client {
         e.setResult(Event.Result.DENY);
 
         Entity ent = e.getEntity();
-        EntityRendererManager erm = Minecraft.getInstance().getRenderManager();
+        EntityRendererManager erm = Minecraft.getInstance().getEntityRenderDispatcher();
         EntityRenderer<? super Entity> renderer = erm.getRenderer(ent);
 
         if(ClientReflectionUtils.canRenderName(renderer, ent)) {
-            double d0 = erm.squareDistanceTo(ent);
+            double d0 = erm.distanceToSqr(ent);
             if(!(d0 > 4096.0D)) {
                 boolean flag = !ent.isDiscrete();
                 MatrixStack mStack = e.getMatrixStack();
-                mStack.push();
-                mStack.translate(0.0, ent.getHeight() + 0.5F, 0.0);
-                mStack.rotate(erm.getCameraOrientation());
+                mStack.pushPose();
+                mStack.translate(0.0, ent.getBbHeight() + 0.5F, 0.0);
+                mStack.mulPose(erm.cameraOrientation());
                 mStack.scale(-0.025f, -0.025f, 0.025f);
 
-                Matrix4f matrix4f = mStack.getLast().getMatrix();
+                Matrix4f matrix4f = mStack.last().pose();
                 Minecraft mc = Minecraft.getInstance();
-                float f1 = mc.gameSettings.getTextBackgroundOpacity(0.25F);
+                float f1 = mc.options.getBackgroundOpacity(0.25F);
                 int j = (int) (f1 * 255.0F) << 24;
 
-                FontRenderer fontrenderer = erm.getFontRenderer();
+                FontRenderer fontrenderer = erm.getFont();
 
                 ITextComponent text = ent.getCustomName();
                 if(text == null) {
@@ -218,9 +220,8 @@ public class Client {
                 }
                 String s = text.getString();
                 String[] parts = s.split("\n");
-
-                int packedLight = renderer.getPackedLight(ent,
-                        Minecraft.getInstance().getRenderPartialTicks());
+                int packedLight = renderer.getPackedLightCoords(ent,
+                        Minecraft.getInstance().getDeltaFrameTime());
 
                 IRenderTypeBuffer buffer = e.getRenderTypeBuffer();
 
@@ -230,17 +231,17 @@ public class Client {
                         matrix4f.translate(up);
                         continue;
                     }
-                    float f2 = -0.5f * fontrenderer.getStringWidth(line);
-                    fontrenderer.renderString(line, f2, 0.0f, 553648127, false, matrix4f, buffer,
+                    float f2 = -0.5f * fontrenderer.width(line);
+                    fontrenderer.drawInBatch(line, f2, 0.0f, 553648127, false, matrix4f, buffer,
                             flag, j, packedLight);
                     if(flag) {
-                        fontrenderer.renderString(line, f2, 0.0f, -1, false, matrix4f, buffer,
-                                false, 0, packedLight);
+                        fontrenderer.drawInBatch(line, f2, 0.0f, -1, false, matrix4f, buffer, false,
+                                0, packedLight);
                     }
                     matrix4f.translate(up);
                 }
 
-                mStack.pop();
+                mStack.popPose();
             }
         }
     }

+ 4 - 5
src/main/java/me/km/KajetansMod.java

@@ -105,11 +105,10 @@ public class KajetansMod {
 
     private static void addOre(BiomeGenerationSettingsBuilder builder, Block ore, int maxCount,
             int spawnTries, int maxHeight) {
-        builder.withFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE
-                .withConfiguration(
-                        new OreFeatureConfig(OreFeatureConfig.FillerBlockType.BASE_STONE_OVERWORLD,
-                                ore.getDefaultState(), maxCount))
-                .range(maxHeight).square().func_242731_b(spawnTries));
+        builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE
+                .configured(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE,
+                        ore.defaultBlockState(), maxCount))
+                .range(maxHeight).squared().count(spawnTries));
     }
 
     private static void addFeatures(BiomeGenerationSettingsBuilder builder) {

+ 2 - 2
src/main/java/me/km/ObjectRegistry.java

@@ -23,7 +23,7 @@ public class ObjectRegistry {
 
     @SubscribeEvent
     public static void onBlockMissing(RegistryEvent.MissingMappings<Block> e) {
-        e.getMappings().stream().forEach((missing) -> {
+        e.getAllMappings().stream().forEach((missing) -> {
             String key = missing.key.toString();
             if(key.contains("cauldron")) {
                 missing.remap(ModBlocks.cookingPotCopper);
@@ -45,7 +45,7 @@ public class ObjectRegistry {
 
     @SubscribeEvent
     public static void onItemMissing(RegistryEvent.MissingMappings<Item> e) {
-        e.getMappings().stream().forEach((missing) -> {
+        e.getAllMappings().stream().forEach((missing) -> {
             missing.remap(Items.APPLE);
         });
     }

+ 1 - 2
src/main/java/me/km/blocks/BlockBookshelf.java

@@ -9,8 +9,7 @@ import net.minecraft.world.IWorldReader;
 
 public class BlockBookshelf extends Block {
     public BlockBookshelf() {
-        super(Block.Properties.create(Material.WOOD).hardnessAndResistance(1.5f)
-                .sound(SoundType.WOOD));
+        super(Block.Properties.of(Material.WOOD).strength(1.5f).sound(SoundType.WOOD));
     }
 
     @Override

+ 1 - 2
src/main/java/me/km/blocks/cookingpot/BlockCookingPot.java

@@ -23,8 +23,7 @@ import net.minecraft.util.ActionResultType;
 @SuppressWarnings("deprecation")
 public class BlockCookingPot extends CauldronBlock implements ITileEntityProvider {
     public BlockCookingPot(String name) {
-        super(Block.Properties.create(Material.IRON, MaterialColor.BROWN)
-                .hardnessAndResistance(2.0f));
+        super(Block.Properties.of(Material.METAL, MaterialColor.COLOR_BROWN).strength(2.0f));
         this.setRegistryName(name);
     }
 

+ 8 - 6
src/main/java/me/km/events/PlayerMoveData.java

@@ -26,7 +26,8 @@ public class PlayerMoveData {
     private final int id = idCounter++;
     private final UUID uuid;
 
-    public PlayerMoveData(Script sc, Location l1, Location l2, int cooldown, int livingTime, UUID uuid) {
+    public PlayerMoveData(Script sc, Location l1, Location l2, int cooldown, int livingTime,
+            UUID uuid) {
         this.sc = sc;
         this.coolDown = cooldown;
         this.ticks = cooldown;
@@ -67,13 +68,14 @@ public class PlayerMoveData {
     }
 
     public boolean check(ServerPlayerEntity p) {
-        double posX = p.getPosX();
-        double posY = p.getPosY();
-        double posZ = p.getPosZ();
-        if(p.world != w || posX < minX || posX > maxX || posZ < minZ || posZ > maxZ || posY < minY || posY > maxY) {
+        double posX = p.getX();
+        double posY = p.getY();
+        double posZ = p.getZ();
+        if(p.level != w || posX < minX || posX > maxX || posZ < minZ || posZ > maxZ || posY < minY
+                || posY > maxY) {
             return false;
         }
-        boolean b = (uuid == null || p.getUniqueID().equals(uuid));
+        boolean b = (uuid == null || p.getUUID().equals(uuid));
         if(sc != null && b) {
             Server.scriptEvents.onPlayerMove(p, id);
         }

+ 48 - 43
src/main/java/me/km/inventory/CustomContainer.java

@@ -21,7 +21,7 @@ public class CustomContainer extends Container {
         // basic stuff
         this.inv = inv;
         this.numRows = inv.getRows();
-        inv.openInventory(pInv.player);
+        inv.startOpen(pInv.player);
         int i = (this.numRows - 4) * 18;
 
         // inventory slots
@@ -55,66 +55,70 @@ public class CustomContainer extends Container {
         return false;
     }
 
-    public static void openForPlayer(ServerPlayerEntity p, ModInventory inv, String title, Script sc) {
+    public static void openForPlayer(ServerPlayerEntity p, ModInventory inv, String title,
+            Script sc) {
         // taken from ServerPlayerEntity.openContainer
         if(p.isSpectator()) {
-            p.sendStatusMessage((new TranslationTextComponent("container.spectatorCantOpen")).mergeStyle(TextFormatting.RED), true);
+            p.displayClientMessage((new TranslationTextComponent("container.spectatorCantOpen"))
+                    .withStyle(TextFormatting.RED), true);
             return;
         }
-        if(p.openContainer != p.container) {
-            p.closeScreen();
+        if(p.containerMenu != p.inventoryMenu) {
+            p.closeContainer();
         }
 
-        p.getNextWindowId();
-        Container container = new ServerCustomContainer(p.currentWindowId, p.inventory, inv, title, sc);
-        ModPacketHandler.sendCustomInventory(p, p.currentWindowId, title, inv);
-        container.addListener(p);
-        p.openContainer = container;
+        p.nextContainerCounter();
+        Container container =
+                new ServerCustomContainer(p.containerCounter, p.inventory, inv, title, sc);
+        ModPacketHandler.sendCustomInventory(p, p.containerCounter, title, inv);
+        container.addSlotListener(p);
+        p.containerMenu = container;
     }
 
     @Override
-    public boolean canInteractWith(PlayerEntity p) {
-        return this.inv.isUsableByPlayer(p);
+    public boolean stillValid(PlayerEntity p) {
+        return this.inv.stillValid(p);
     }
 
     @Override
-    public ItemStack transferStackInSlot(PlayerEntity p, int index) {
+    public ItemStack quickMoveStack(PlayerEntity p, int index) {
         // taken from ChestContainer, changed size
         ItemStack stack = ItemStack.EMPTY;
-        Slot slot = this.inventorySlots.get(index);
-        int size = inv.getSizeInventory();
-        if(slot != null && slot.getHasStack()) {
-            ItemStack slotStack = slot.getStack();
+        Slot slot = this.slots.get(index);
+        int size = inv.getContainerSize();
+        if(slot != null && slot.hasItem()) {
+            ItemStack slotStack = slot.getItem();
             stack = slotStack.copy();
             if(index < size) {
-                if(!this.mergeItemStack(slotStack, size, this.inventorySlots.size(), true)) {
+                if(!this.moveItemStackTo(slotStack, size, this.slots.size(), true)) {
                     return ItemStack.EMPTY;
                 }
-            } else if(!this.mergeItemStack(slotStack, 0, size, false)) {
+            } else if(!this.moveItemStackTo(slotStack, 0, size, false)) {
                 return ItemStack.EMPTY;
             }
 
             if(slotStack.isEmpty()) {
-                slot.putStack(ItemStack.EMPTY);
+                slot.set(ItemStack.EMPTY);
             } else {
-                slot.onSlotChanged();
+                slot.setChanged();
             }
         }
         return stack;
     }
 
     @Override
-    public boolean canMergeSlot(ItemStack stack, Slot slot) {
-        return inv.getSlotStatus(slot.slotNumber) == 1;
+    public boolean canTakeItemForPickAll(ItemStack stack, Slot slot) {
+        return inv.getSlotStatus(slot.index) == 1;
     }
 
     @Override
-    public boolean canDragIntoSlot(Slot slot) {
-        return inv.getSlotStatus(slot.slotNumber) == 1;
+    public boolean canDragTo(Slot slot) {
+        return inv.getSlotStatus(slot.index) == 1;
     }
 
     @Override
-    protected boolean mergeItemStack(ItemStack stack, int startIndex, int endIndex, boolean reverseDirection) {
+    protected boolean moveItemStackTo(ItemStack stack, int startIndex, int endIndex,
+            boolean reverseDirection) {
         boolean flag = false;
         int i = startIndex;
         if(reverseDirection) {
@@ -132,20 +136,20 @@ public class CustomContainer extends Container {
                 }
 
                 if(inv.getSlotStatus(i) == 1) {
-                    Slot slot = this.inventorySlots.get(i);
-                    ItemStack itemstack = slot.getStack();
-                    if(!itemstack.isEmpty() && areItemsAndTagsEqual(stack, itemstack)) {
+                    Slot slot = this.slots.get(i);
+                    ItemStack itemstack = slot.getItem();
+                    if(!itemstack.isEmpty() && consideredTheSameItem(stack, itemstack)) {
                         int j = itemstack.getCount() + stack.getCount();
-                        int maxSize = Math.min(slot.getSlotStackLimit(), stack.getMaxStackSize());
+                        int maxSize = Math.min(slot.getMaxStackSize(), stack.getMaxStackSize());
                         if(j <= maxSize) {
                             stack.setCount(0);
                             itemstack.setCount(j);
-                            slot.onSlotChanged();
+                            slot.setChanged();
                             flag = true;
                         } else if(itemstack.getCount() < maxSize) {
                             stack.shrink(maxSize - itemstack.getCount());
                             itemstack.setCount(maxSize);
-                            slot.onSlotChanged();
+                            slot.setChanged();
                             flag = true;
                         }
                     }
@@ -176,16 +180,16 @@ public class CustomContainer extends Container {
                 }
 
                 if(inv.getSlotStatus(i) == 1) {
-                    Slot slot1 = this.inventorySlots.get(i);
-                    ItemStack itemstack1 = slot1.getStack();
-                    if(itemstack1.isEmpty() && slot1.isItemValid(stack)) {
-                        if(stack.getCount() > slot1.getSlotStackLimit()) {
-                            slot1.putStack(stack.split(slot1.getSlotStackLimit()));
+                    Slot slot1 = this.slots.get(i);
+                    ItemStack itemstack1 = slot1.getItem();
+                    if(itemstack1.isEmpty() && slot1.mayPlace(stack)) {
+                        if(stack.getCount() > slot1.getMaxStackSize()) {
+                            slot1.set(stack.split(slot1.getMaxStackSize()));
                         } else {
-                            slot1.putStack(stack.split(stack.getCount()));
+                            slot1.set(stack.split(stack.getCount()));
                         }
 
-                        slot1.onSlotChanged();
+                        slot1.setChanged();
                         flag = true;
                         break;
                     }
@@ -203,15 +207,16 @@ public class CustomContainer extends Container {
     }
 
     @Override
-    public final ItemStack slotClick(int slotId, int dragType, ClickType clickTypeIn, PlayerEntity p) {
-        if(slotId < 0 || slotId >= inv.getSizeInventory()) {
-            return super.slotClick(slotId, dragType, clickTypeIn, p);
+    public final ItemStack clicked(int slotId, int dragType, ClickType clickTypeIn,
+            PlayerEntity p) {
+        if(slotId < 0 || slotId >= inv.getContainerSize()) {
+            return super.clicked(slotId, dragType, clickTypeIn, p);
         }
         switch(inv.getSlotStatus(slotId)) {
             case 0:
                 return ItemStack.EMPTY;
             case 1:
-                return super.slotClick(slotId, dragType, clickTypeIn, p);
+                return super.clicked(slotId, dragType, clickTypeIn, p);
             case 2:
             case 3:
                 onButtonClick(slotId, dragType, clickTypeIn, p);

+ 23 - 21
src/main/java/me/km/inventory/InventoryUtils.java

@@ -11,20 +11,20 @@ public class InventoryUtils {
         }
         int counter = 0;
         if(useData) {
-            int size = inv.getSizeInventory();
+            int size = inv.getContainerSize();
             ItemStack stack;
             for(int i = 0; i < size; i++) {
-                stack = inv.getStackInSlot(i);
+                stack = inv.getItem(i);
                 if(stackEqualExact(stack, searchfor)) {
                     counter += stack.getCount();
                 }
             }
         } else {
-            int size = inv.getSizeInventory();
+            int size = inv.getContainerSize();
             Item item = searchfor.getItem();
             ItemStack stack;
             for(int i = 0; i < size; i++) {
-                stack = inv.getStackInSlot(i);
+                stack = inv.getItem(i);
                 if(stack.getItem() == item) {
                     counter += stack.getCount();
                 }
@@ -40,15 +40,15 @@ public class InventoryUtils {
         ItemStack stack;
         int sub;
         int amount = remove.getCount();
-        for(int i = 0; i < inv.getSizeInventory(); i++) {
-            stack = inv.getStackInSlot(i);
+        for(int i = 0; i < inv.getContainerSize(); i++) {
+            stack = inv.getItem(i);
             if(stackEqualExact(stack, remove)) {
                 sub = stack.getCount();
                 if(amount > sub) {
                     amount -= sub;
-                    inv.setInventorySlotContents(i, ItemStack.EMPTY);
+                    inv.setItem(i, ItemStack.EMPTY);
                 } else if(amount == sub) {
-                    inv.setInventorySlotContents(i, ItemStack.EMPTY);
+                    inv.setItem(i, ItemStack.EMPTY);
                     return 0;
                 } else {
                     stack.setCount(sub - amount);
@@ -66,8 +66,8 @@ public class InventoryUtils {
             if(add.isDamaged()) {
                 int j = getFirstEmptyStack(inv);
                 if(j >= 0) {
-                    inv.setInventorySlotContents(j, add.copy());
-                    inv.getStackInSlot(j).setAnimationsToGo(5);
+                    inv.setItem(j, add.copy());
+                    inv.getItem(j).setPopTime(5);
                     return 0;
                 }
                 return add.getCount();
@@ -95,22 +95,22 @@ public class InventoryUtils {
         if(j == -1) {
             return i;
         }
-        ItemStack stack = inv.getStackInSlot(j);
+        ItemStack stack = inv.getItem(j);
         if(stack.isEmpty()) {
             stack = add.copy();
             stack.setCount(0);
             if(add.hasTag()) {
                 stack.setTag(add.getTag().copy());
             }
-            inv.setInventorySlotContents(j, stack);
+            inv.setItem(j, stack);
         }
 
         int k = i;
         if(i > stack.getMaxStackSize() - stack.getCount()) {
             k = stack.getMaxStackSize() - stack.getCount();
         }
-        if(k > inv.getInventoryStackLimit() - stack.getCount()) {
-            k = inv.getInventoryStackLimit() - stack.getCount();
+        if(k > inv.getMaxStackSize() - stack.getCount()) {
+            k = inv.getMaxStackSize() - stack.getCount();
         }
 
         if(k == 0) {
@@ -118,14 +118,14 @@ public class InventoryUtils {
         } else {
             i -= k;
             stack.grow(k);
-            stack.setAnimationsToGo(5);
+            stack.setPopTime(5);
             return i;
         }
     }
 
     private static int storeItemStack(IInventory inv, ItemStack add) {
-        for(int i = 0; i < inv.getSizeInventory(); i++) {
-            if(canMergeStacks(inv, inv.getStackInSlot(i), add)) {
+        for(int i = 0; i < inv.getContainerSize(); i++) {
+            if(canMergeStacks(inv, inv.getItem(i), add)) {
                 return i;
             }
         }
@@ -133,16 +133,18 @@ public class InventoryUtils {
     }
 
     private static boolean canMergeStacks(IInventory inv, ItemStack first, ItemStack sec) {
-        return !first.isEmpty() && stackEqualExact(first, sec) && first.isStackable() && first.getCount() < first.getMaxStackSize() && first.getCount() < inv.getInventoryStackLimit();
+        return !first.isEmpty() && stackEqualExact(first, sec) && first.isStackable()
+                && first.getCount() < first.getMaxStackSize()
+                && first.getCount() < inv.getMaxStackSize();
     }
 
     public static boolean stackEqualExact(ItemStack first, ItemStack sec) {
-        return first.getItem() == sec.getItem() && ItemStack.areItemStackTagsEqual(first, sec);
+        return first.getItem() == sec.getItem() && ItemStack.tagMatches(first, sec);
     }
 
     public static int getFirstEmptyStack(IInventory inv) {
-        for(int i = 0; i < inv.getSizeInventory(); i++) {
-            if(inv.getStackInSlot(i).isEmpty()) {
+        for(int i = 0; i < inv.getContainerSize(); i++) {
+            if(inv.getItem(i).isEmpty()) {
                 return i;
             }
         }

+ 10 - 10
src/main/java/me/km/inventory/ModInventory.java

@@ -98,7 +98,7 @@ public class ModInventory extends Inventory {
     public ModInventory(int slots) {
         super(Math.max(9, Math.min(54, ((slots / 9) + ((slots % 9) == 0 ? 0 : 1)) * 9)));
         this.modId = modIds++;
-        this.allSlots = super.getSizeInventory();
+        this.allSlots = super.getContainerSize();
         this.rows = allSlots / 9;
         this.data = new byte[14];
         // default is 3 to every 2 bits
@@ -115,7 +115,7 @@ public class ModInventory extends Inventory {
     }
 
     public int getSlotStatus(int slot) {
-        if(slot < 0 || slot >= this.getSizeInventory()) {
+        if(slot < 0 || slot >= this.getContainerSize()) {
             return 1;
         }
         int index = Math.max(0, Math.min(smallData.length, slot / 4));
@@ -178,13 +178,13 @@ public class ModInventory extends Inventory {
     }
 
     private void moveToEqualItemStack(ItemStack stack) {
-        for(int i = 0; i < getSizeInventory(); i++) {
+        for(int i = 0; i < getContainerSize(); i++) {
             // ignore special fields
             if(getSlotStatus(i) != 1) {
                 continue;
             }
-            ItemStack slotStack = getStackInSlot(i);
-            if(ItemStack.areItemsEqual(slotStack, stack)) {
+            ItemStack slotStack = getItem(i);
+            if(ItemStack.matches(slotStack, stack)) {
                 this.mergeItemStacks(stack, slotStack);
                 if(stack.isEmpty()) {
                     return;
@@ -195,24 +195,24 @@ public class ModInventory extends Inventory {
     }
 
     private void mergeItemStacks(ItemStack stack, ItemStack slotStack) {
-        int maxSize = Math.min(getInventoryStackLimit(), slotStack.getMaxStackSize());
+        int maxSize = Math.min(getMaxStackSize(), slotStack.getMaxStackSize());
         int maxMoveable = Math.min(stack.getCount(), maxSize - slotStack.getCount());
         if(maxMoveable > 0) {
             slotStack.grow(maxMoveable);
             stack.shrink(maxMoveable);
-            markDirty();
+            setChanged();
         }
     }
 
     private void moveToEmptySlot(ItemStack stack) {
-        for(int i = 0; i < getSizeInventory(); i++) {
+        for(int i = 0; i < getContainerSize(); i++) {
             // ignore special fields
             if(getSlotStatus(i) != 1) {
                 continue;
             }
-            ItemStack slotStack = getStackInSlot(i);
+            ItemStack slotStack = getItem(i);
             if(slotStack.isEmpty()) {
-                setInventorySlotContents(i, stack.copy());
+                setItem(i, stack.copy());
                 stack.setCount(0);
                 return;
             }

+ 6 - 4
src/main/java/me/km/inventory/ServerCustomContainer.java

@@ -12,21 +12,23 @@ public class ServerCustomContainer extends CustomContainer {
     private final Script script;
     private final ITextComponent name;
 
-    public ServerCustomContainer(int id, PlayerInventory pInv, ModInventory inv, String name, Script sc) {
+    public ServerCustomContainer(int id, PlayerInventory pInv, ModInventory inv, String name,
+            Script sc) {
         super(id, pInv, inv);
         this.script = sc;
         this.name = new StringTextComponent(name);
     }
 
     @Override
-    public void onContainerClosed(PlayerEntity p) {
+    public void removed(PlayerEntity p) {
         Server.scriptEvents.onInventoryClose(script, name, getInventoryBase(), p);
-        super.onContainerClosed(p);
+        super.removed(p);
     }
 
     @Override
     public boolean onButtonClick(int slot, int dragType, ClickType click, PlayerEntity p) {
-        return Server.scriptEvents.onInventoryClick(script, name, getInventoryBase(), slot, click, p);
+        return Server.scriptEvents.onInventoryClick(script, name, getInventoryBase(), slot, click,
+                p);
     }
 
     public ITextComponent getName() {

+ 6 - 4
src/main/java/me/km/networking/CustomInventory.java

@@ -29,7 +29,7 @@ public class CustomInventory {
     public CustomInventory(int id, String title, ModInventory inv) {
         windowId = id;
         windowTitle = title;
-        slotCount = (byte) inv.getSizeInventory();
+        slotCount = (byte) inv.getContainerSize();
         allSlots = (byte) inv.getAllSlots();
         data = inv.getData();
     }
@@ -66,9 +66,11 @@ public class CustomInventory {
     private static void handleIntern(CustomInventory ci, Supplier<NetworkEvent.Context> context) {
         context.get().enqueueWork(() -> {
             Minecraft mc = Minecraft.getInstance();
-            CustomContainer cc = new CustomContainer(ci.windowId, mc.player.inventory, new ModInventory(ci.data, ci.slotCount, ci.allSlots));
-            mc.player.openContainer = cc;
-            mc.displayGuiScreen(new CustomInventoryScreen(cc, mc.player.inventory, new StringTextComponent(ci.windowTitle)));
+            CustomContainer cc = new CustomContainer(ci.windowId, mc.player.inventory,
+                    new ModInventory(ci.data, ci.slotCount, ci.allSlots));
+            mc.player.containerMenu = cc;
+            mc.setScreen(new CustomInventoryScreen(cc, mc.player.inventory,
+                    new StringTextComponent(ci.windowTitle)));
         });
         context.get().setPacketHandled(true);
     }

+ 14 - 45
src/main/java/me/km/networking/CustomInventoryScreen.java

@@ -25,38 +25,37 @@ public class CustomInventoryScreen extends ContainerScreen<CustomContainer> {
         super(cc, pInv, title);
         passEvents = false;
         inventoryRows = cc.getInventoryBase().getRows();
-        ySize = 114 + inventoryRows * 18;
+        imageHeight = 114 + inventoryRows * 18;
     }
 
     @Override
     public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
         this.renderBackground(matrixStack);
         super.render(matrixStack, mouseX, mouseY, partialTicks);
-        this.renderHoveredTooltip(matrixStack, mouseX, mouseY);
+        this.renderTooltip(matrixStack, mouseX, mouseY);
     }
 
     @Override
-    protected void drawGuiContainerForegroundLayer(MatrixStack matrixStack, int x, int y) {
-        this.font.drawString(matrixStack, title.getString(), 8.0f, 6.0f, 4210752);
-        this.font.drawString(matrixStack, playerInventory.getDisplayName().getString(), 8.0f,
-                ySize - 94, 4210752);
+    protected void renderLabels(MatrixStack matrixStack, int x, int y) {
+        this.font.draw(matrixStack, title.getString(), 8.0f, 6.0f, 4210752);
+        this.font.draw(matrixStack, inventory.getDisplayName().getString(), 8.0f, imageHeight - 94,
+                4210752);
     }
 
     @SuppressWarnings("deprecation")
     @Override
-    protected void drawGuiContainerBackgroundLayer(MatrixStack matrixStack, float partialTicks,
-            int ix, int iy) {
+    protected void renderBg(MatrixStack matrixStack, float partialTicks, int ix, int iy) {
         RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
-        this.minecraft.getTextureManager().bindTexture(CHEST_GUI_TEXTURE);
-        int i = (width - xSize) / 2;
-        int j = (height - ySize) / 2;
-        blit(matrixStack, i, j, 0, 0, xSize, inventoryRows * 18 + 17);
-        blit(matrixStack, i, j + inventoryRows * 18 + 17, 0, 126, xSize, 96);
+        this.minecraft.getTextureManager().bind(CHEST_GUI_TEXTURE);
+        int i = (width - imageWidth) / 2;
+        int j = (height - imageHeight) / 2;
+        blit(matrixStack, i, j, 0, 0, imageWidth, inventoryRows * 18 + 17);
+        blit(matrixStack, i, j + inventoryRows * 18 + 17, 0, 126, imageWidth, 96);
 
         i += 7;
         j += 17;
-        minecraft.getTextureManager().bindTexture(EMPTY_TILE);
-        ModInventory base = this.getContainer().getInventoryBase();
+        minecraft.getTextureManager().bind(EMPTY_TILE);
+        ModInventory base = this.getMenu().getInventoryBase();
         for(int x = 0; x < 9; x++) {
             for(int y = 0; y < inventoryRows; y++) {
                 if(base.shouldRenderOverlay(x, y)) {
@@ -67,34 +66,4 @@ public class CustomInventoryScreen extends ContainerScreen<CustomContainer> {
             }
         }
     }
-
-    /*
-     * public void blit(int startX, int startY, int tStartX, int tStartY, int width, int height) {
-     * blit(startX, startY, this.blitOffset, tStartX, tStartY, width, height, 256, 256); }
-     * 
-     * public static void blit(int startX, int startY, int z, float tStartX, float tStartY, int
-     * width, int height, int rWidth, int rHeight) { innerBlit(startX, startX + width, startY,
-     * startY + height, z, width, height, tStartX, tStartY, rHeight, rWidth); }
-     * 
-     * public static void blit(int minX, int minY, int width, int height, float tStartX, float
-     * tStartY, int tWidth, int tHeight, int rWidth, int rHeight) { innerBlit(minX, minX + width,
-     * minY, minY + height, 0, tWidth, tHeight, tStartX, tStartY, rWidth, rHeight); }
-     * 
-     * public static void blit(int p_blit_0_, int p_blit_1_, float p_blit_2_, float p_blit_3_, int
-     * p_blit_4_, int p_blit_5_, int p_blit_6_, int p_blit_7_) { blit(p_blit_0_, p_blit_1_,
-     * p_blit_4_, p_blit_5_, p_blit_2_, p_blit_3_, p_blit_4_, p_blit_5_, p_blit_6_, p_blit_7_); }
-     * 
-     * private static void innerBlit(int minX, int maxX, int minY, int maxY, int z, int tWidth, int
-     * tHight, float tStartX, float tStartY, int rWidth, int rHeight) { innerBlit(minX, maxX, minY,
-     * maxY, z, tStartX / rWidth, (tStartX + tWidth) / rWidth, tStartY / rHeight, (tStartY + tHight)
-     * / rHeight); }
-     * 
-     * protected static void innerBlit(int minX, int maxX, int minY, int maxY, int z, float tMinX,
-     * float tMaxX, float tMinY, float tMaxY) { Tessellator tessellator = Tessellator.getInstance();
-     * BufferBuilder bufferbuilder = tessellator.getBuffer(); bufferbuilder.begin(7,
-     * DefaultVertexFormats.POSITION_TEX); bufferbuilder.pos(minX, maxY, z).tex(tMinX,
-     * tMaxY).endVertex(); bufferbuilder.pos(maxX, maxY, z).tex(tMaxX, tMaxY).endVertex();
-     * bufferbuilder.pos(maxX, minY, z).tex(tMaxX, tMinY).endVertex(); bufferbuilder.pos(minX, minY,
-     * z).tex(tMinX, tMinY).endVertex(); tessellator.draw(); }
-     */
 }

+ 4 - 4
src/main/java/me/km/networking/ItemStackDisplayGui.java

@@ -59,7 +59,7 @@ public class ItemStackDisplayGui extends AbstractGui {
             return;
         }
 
-        int screenWidth = (mc.getMainWindow().getScaledWidth() >> 1) - 91;
+        int screenWidth = (mc.getWindow().getGuiScaledWidth() >> 1) - 91;
         int y = 0;
         if(ClientReflectionUtils.isRenderingBossBar()) {
             y += 20;
@@ -67,7 +67,7 @@ public class ItemStackDisplayGui extends AbstractGui {
 
         RenderSystem.enableBlend();
         RenderSystem.color4f(1.0f, 1.0f, 1.0f, 1.0f);
-        mc.getTextureManager().bindTexture(WIDGETS_TEX_PATH);
+        mc.getTextureManager().bind(WIDGETS_TEX_PATH);
         int oldBlitOffset = this.getBlitOffset();
         setBlitOffset(-90);
         blit(matrixStack, screenWidth, y, 0, 0, 182, 22);
@@ -78,8 +78,8 @@ public class ItemStackDisplayGui extends AbstractGui {
         int i = 0;
         for(int x = 3; x < 164; x += 20) {
             if(!icons[i].isEmpty()) {
-                ir.renderItemAndEffectIntoGUI(mc.player, icons[i], screenWidth + x, y);
-                ir.renderItemOverlayIntoGUI(this.mc.fontRenderer, icons[i], screenWidth + x, y,
+                ir.renderAndDecorateItem(mc.player, icons[i], screenWidth + x, y);
+                ir.renderGuiItemDecorations(this.mc.font, icons[i], screenWidth + x, y,
                         km.getKeyDescription(i));
             }
             i++;

+ 2 - 2
src/main/java/me/km/networking/KeyManager.java

@@ -26,7 +26,7 @@ public class KeyManager {
     }
 
     public String getKeyDescription(int index) {
-        return functionKeys[index].func_238171_j_().getString();
+        return functionKeys[index].getTranslatedKeyMessage().getString();
     }
 
     private KeyBinding register(int id, int key) {
@@ -38,7 +38,7 @@ public class KeyManager {
     @SubscribeEvent
     public void onRenderGui(TickEvent.ClientTickEvent e) {
         for(int i = 0; i < functionKeys.length; i++) {
-            if(functionKeys[i].isPressed()) {
+            if(functionKeys[i].isDown()) {
                 ModPacketHandler.sendFunctionKey(i + 1);
             }
         }

+ 6 - 6
src/main/java/me/km/networking/PlayerDisplayGui.java

@@ -60,7 +60,7 @@ public class PlayerDisplayGui extends AbstractGui {
                     icons.add(new IconStorage(Integer.parseInt(s.substring(pos + 1, first)),
                             Integer.parseInt(s.substring(first + 1, second))));
                     old = second + 1;
-                } catch (Exception ex) {
+                } catch(Exception ex) {
                     list.add("ERROR");
                     break;
                 }
@@ -68,12 +68,12 @@ public class PlayerDisplayGui extends AbstractGui {
         }
 
         public int getWidth() {
-            return list.stream().mapToInt(s -> mc.fontRenderer.getStringWidth(s)).sum()
+            return list.stream().mapToInt(s -> mc.font.width(s)).sum()
                     + icons.stream().mapToInt(i -> i.getWidth()).sum();
         }
 
         public int getHeight() {
-            return Math.max(mc.fontRenderer.FONT_HEIGHT,
+            return Math.max(mc.font.lineHeight,
                     icons.stream().mapToInt(i -> i.getHeight()).max().orElse(0) + 1);
         }
     }
@@ -120,9 +120,9 @@ public class PlayerDisplayGui extends AbstractGui {
             x = 2;
             for(int i = 0; i < data.list.size(); i++) {
                 s = data.list.get(i);
-                mc.fontRenderer.drawString(matrixStack, s, x, y + 1, 0xFFFFFF);
+                mc.font.draw(matrixStack, s, x, y + 1, 0xFFFFFF);
                 if(!s.isEmpty()) {
-                    x += mc.fontRenderer.getStringWidth(s);
+                    x += mc.font.width(s);
                 } else {
                     x--;
                 }
@@ -135,7 +135,7 @@ public class PlayerDisplayGui extends AbstractGui {
     }
 
     private void bind(ResourceLocation res) {
-        mc.getTextureManager().bindTexture(res);
+        mc.getTextureManager().bind(res);
     }
 
     @SuppressWarnings("deprecation")

+ 4 - 4
src/main/java/me/km/networking/PlayerHeadGui.java

@@ -32,9 +32,9 @@ public class PlayerHeadGui extends AbstractGui {
         @SuppressWarnings("deprecation")
         public void paint(Minecraft mc, MatrixStack matrixStack) {
             RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
-            mc.getTextureManager().bindTexture(rl);
-            int scaledWidth = mc.getMainWindow().getScaledWidth();
-            int scaledHeight = mc.getMainWindow().getScaledHeight();
+            mc.getTextureManager().bind(rl);
+            int scaledWidth = mc.getWindow().getGuiScaledWidth();
+            int scaledHeight = mc.getWindow().getGuiScaledHeight();
             int intX = (int) (x * scaledWidth);
             int intY = (int) (y * scaledHeight);
             int intWidth = (int) (width * scaledWidth);
@@ -57,7 +57,7 @@ public class PlayerHeadGui extends AbstractGui {
     public void add(int i, float x, float y, float width, float height, String name) {
         NetworkPlayerInfo info = this.mc.player.connection.getPlayerInfo(name);
         if(info != null) {
-            data.put(i, new HeadData(x, y, width, height, info.getLocationSkin()));
+            data.put(i, new HeadData(x, y, width, height, info.getSkinLocation()));
         }
     }
 

+ 10 - 10
src/main/java/me/km/networking/StatusDisplayGui.java

@@ -25,7 +25,7 @@ public class StatusDisplayGui extends AbstractGui {
             int index = text.indexOf('#');
             if(index != -1) {
                 this.text = text.substring(0, index)
-                        + LanguageMap.getInstance().func_230503_a_(text.substring(index + 1));
+                        + LanguageMap.getInstance().getOrDefault(text.substring(index + 1));
             } else {
                 this.text = text;
             }
@@ -43,11 +43,11 @@ public class StatusDisplayGui extends AbstractGui {
         }
 
         public int getTimeWidth() {
-            return time == Integer.MAX_VALUE ? 0 : mc.fontRenderer.getStringWidth(getTimeText());
+            return time == Integer.MAX_VALUE ? 0 : mc.font.width(getTimeText());
         }
 
         public int getTextWidth() {
-            return mc.fontRenderer.getStringWidth(getText());
+            return mc.font.width(getText());
         }
 
         @Override
@@ -89,7 +89,7 @@ public class StatusDisplayGui extends AbstractGui {
     }
 
     public void paint(MatrixStack matrixStack) {
-        Collection<EffectInstance> collection = this.mc.player.getActivePotionEffects();
+        Collection<EffectInstance> collection = this.mc.player.getActiveEffects();
         if(strings.isEmpty() && collection.isEmpty()) {
             return;
         }
@@ -97,18 +97,18 @@ public class StatusDisplayGui extends AbstractGui {
         LinkedList<LineData> list = new LinkedList<>(strings.values());
         collection.forEach(effect -> {
             StringBuilder sb = new StringBuilder();
-            if(effect.getPotion().isBeneficial()) {
+            if(effect.getEffect().isBeneficial()) {
                 sb.append(TextFormatting.GREEN);
             } else {
                 sb.append(TextFormatting.RED);
             }
-            sb.append(LanguageMap.getInstance().func_230503_a_(effect.getEffectName()));
+            sb.append(LanguageMap.getInstance().getOrDefault(effect.getDescriptionId()));
             list.add(new LineData(effect.getDuration(), sb.toString()));
         });
         // sorting by time
         list.sort(null);
 
-        int lineHeight = mc.fontRenderer.FONT_HEIGHT;
+        int lineHeight = mc.font.lineHeight;
         int height = 4 + lineHeight * (strings.size() + collection.size());
 
         int maxTextWidth = 0;
@@ -119,7 +119,7 @@ public class StatusDisplayGui extends AbstractGui {
             maxTimeWidth = Math.max(data.getTimeWidth(), maxTimeWidth);
         }
 
-        int screenWidth = mc.getMainWindow().getScaledWidth();
+        int screenWidth = mc.getWindow().getGuiScaledWidth();
 
         int x = screenWidth - maxTextWidth - maxTimeWidth - 4;
         int y = 2;
@@ -131,8 +131,8 @@ public class StatusDisplayGui extends AbstractGui {
 
         for(LineData data : list) {
             time = data.getTimeText();
-            mc.fontRenderer.drawString(matrixStack, time + data.getText(),
-                    x + maxTimeWidth - mc.fontRenderer.getStringWidth(time), y + 1, 0xFFFFFF);
+            mc.font.draw(matrixStack, time + data.getText(), x + maxTimeWidth - mc.font.width(time),
+                    y + 1, 0xFFFFFF);
             y += lineHeight;
         }
     }

+ 11 - 11
src/main/java/me/km/overrides/ModEntityPlayerMP.java

@@ -15,7 +15,6 @@ import net.minecraft.world.GameRules;
 import net.minecraft.world.server.ServerWorld;
 
 public class ModEntityPlayerMP extends ServerPlayerEntity {
-
     private final PlayerScoreboard board;
     private int id = -1;
     private final HashMap<String, Integer> timedData;
@@ -33,7 +32,7 @@ public class ModEntityPlayerMP extends ServerPlayerEntity {
         this.data = new HashMap<>();
     }
 
-    public PlayerScoreboard getScoreboard() {
+    public PlayerScoreboard getPlayerScoreboard() {
         return board;
     }
 
@@ -51,11 +50,11 @@ public class ModEntityPlayerMP extends ServerPlayerEntity {
         super.tick();
         board.update(this);
         tickData();
-        if(ticksElytraFlying == 1) {
+        if(fallFlyTicks == 1) {
             elytra = true;
             Server.scriptEvents.onPlayerStartElytra(this);
         }
-        if(ticksElytraFlying == 0 && elytra) {
+        if(fallFlyTicks == 0 && elytra) {
             elytra = false;
             Server.scriptEvents.onPlayerStopElytra(this);
         }
@@ -64,7 +63,7 @@ public class ModEntityPlayerMP extends ServerPlayerEntity {
     public void setTabListDisplayName(String name, ISnuviScheduler scheduler) {
         tabDisplayName = new StringTextComponent(name);
         scheduler.scheduleTask("setTabListDisplayName", () -> {
-            server.getPlayerList().sendPacketToAllPlayers(new SPlayerListItemPacket(
+            server.getPlayerList().broadcastAll(new SPlayerListItemPacket(
                     SPlayerListItemPacket.Action.UPDATE_DISPLAY_NAME, this));
         }, 5);
     }
@@ -133,14 +132,15 @@ public class ModEntityPlayerMP extends ServerPlayerEntity {
     }
 
     @Override
-    public void setSneaking(boolean keyDownIn) {
-        Server.scriptEvents.onSneak(attackingPlayer, keyDownIn);
-        super.setSneaking(keyDownIn);
+    public void setShiftKeyDown(boolean keyDownIn) {
+        Server.scriptEvents.onSneak(this, keyDownIn);
+        super.setShiftKeyDown(keyDownIn);
     }
 
     @Override
-    protected int getExperiencePoints(PlayerEntity player) {
-        if(!this.world.getGameRules().getBoolean(GameRules.KEEP_INVENTORY) && !this.isSpectator()) {
+    protected int getExperienceReward(PlayerEntity player) {
+        if(!this.level.getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY)
+                && !this.isSpectator()) {
             int level = experienceLevel;
             int total = 0;
             if(level >= 32) {
@@ -154,7 +154,7 @@ public class ModEntityPlayerMP extends ServerPlayerEntity {
                 level = 16;
             }
             total += level * 7 + 2 * level * (level - 1) / 2;
-            total += Math.round(experience * xpBarCap());
+            total += Math.round(experienceProgress * getXpNeededForNextLevel());
             return total;
         } else {
             return 0;

+ 46 - 46
src/main/java/me/km/overrides/ModPlayerList.java

@@ -53,13 +53,13 @@ public final class ModPlayerList extends DedicatedPlayerList {
     }
 
     @Override
-    public ServerPlayerEntity createPlayerForUser(GameProfile profile) {
-        UUID uuid = PlayerEntity.getUUID(profile);
+    public ServerPlayerEntity getPlayerForLogin(GameProfile profile) {
+        UUID uuid = PlayerEntity.createPlayerUUID(profile);
         List<ServerPlayerEntity> list = Lists.newArrayList();
 
         for(int i = 0; i < this.players.size(); ++i) {
             ServerPlayerEntity serverplayerentity = this.players.get(i);
-            if(serverplayerentity.getUniqueID().equals(uuid)) {
+            if(serverplayerentity.getUUID().equals(uuid)) {
                 list.add(serverplayerentity);
             }
         }
@@ -74,7 +74,7 @@ public final class ModPlayerList extends DedicatedPlayerList {
                     new TranslationTextComponent("multiplayer.disconnect.duplicate_login"));
         }
 
-        ServerWorld w = this.server.func_241755_D_();
+        ServerWorld w = this.server.overworld();
         PlayerInteractionManager manager;
         if(this.server.isDemo()) {
             manager = new DemoPlayerInteractionManager(w);
@@ -86,23 +86,24 @@ public final class ModPlayerList extends DedicatedPlayerList {
     }
 
     @Override
-    public ServerPlayerEntity func_232644_a_(ServerPlayerEntity pIn, boolean p_232644_2_) {
+    public ServerPlayerEntity respawn(ServerPlayerEntity pIn, boolean p_232644_2_) {
         Server.scriptEvents.onPlayerPreRespawn(pIn);
         this.removePlayer(pIn);
-        pIn.getServerWorld().removePlayer(pIn, true); // Forge: keep data until copyFrom called
-        BlockPos blockpos = pIn.func_241140_K_();
-        float f = pIn.func_242109_L();
-        boolean flag = pIn.func_241142_M_();
-        ServerWorld serverworld = server.getWorld(pIn.func_241141_L_());
+        pIn.getLevel().removePlayer(pIn, true); // Forge: keep data until copyFrom called
+        BlockPos blockpos = pIn.getRespawnPosition();
+        float f = pIn.getRespawnAngle();
+        boolean flag = pIn.isRespawnForced();
+        ServerWorld serverworld = server.getLevel(pIn.getRespawnDimension());
         Optional<Vector3d> optional;
         if(serverworld != null && blockpos != null) {
-            optional = PlayerEntity.func_242374_a(serverworld, blockpos, f, flag, p_232644_2_);
+            optional = PlayerEntity.findRespawnPositionAndUseSpawnBlock(serverworld, blockpos, f,
+                    flag, p_232644_2_);
         } else {
             optional = Optional.empty();
         }
 
         ServerWorld w =
-                serverworld != null && optional.isPresent() ? serverworld : server.func_241755_D_();
+                serverworld != null && optional.isPresent() ? serverworld : server.overworld();
         PlayerInteractionManager manager;
         if(this.server.isDemo()) {
             manager = new DemoPlayerInteractionManager(w);
@@ -113,10 +114,10 @@ public final class ModPlayerList extends DedicatedPlayerList {
         ServerPlayerEntity p = new ModEntityPlayerMP(server, w, pIn.getGameProfile(), manager,
                 (ModEntityPlayerMP) pIn);
         p.connection = pIn.connection;
-        p.copyFrom(pIn, p_232644_2_);
+        p.restoreFrom(pIn, p_232644_2_);
         pIn.remove(false); // Forge: clone event had a chance to see old data, now discard it
-        p.setEntityId(pIn.getEntityId());
-        p.setPrimaryHand(pIn.getPrimaryHand());
+        p.setId(pIn.getId());
+        p.setMainArm(pIn.getMainArm());
 
         for(String s : pIn.getTags()) {
             p.addTag(s);
@@ -126,55 +127,54 @@ public final class ModPlayerList extends DedicatedPlayerList {
         boolean flag2 = false;
         if(optional.isPresent()) {
             BlockState blockstate = w.getBlockState(blockpos);
-            boolean flag1 = blockstate.isIn(Blocks.RESPAWN_ANCHOR);
+            boolean flag1 = blockstate.is(Blocks.RESPAWN_ANCHOR);
             Vector3d vector3d = optional.get();
             float f1;
-            if(!blockstate.isIn(BlockTags.BEDS) && !flag1) {
+            if(!blockstate.is(BlockTags.BEDS) && !flag1) {
                 f1 = f;
             } else {
                 Vector3d vector3d1 =
-                        Vector3d.copyCenteredHorizontally(blockpos).subtract(vector3d).normalize();
+                        Vector3d.atBottomCenterOf(blockpos).subtract(vector3d).normalize();
                 f1 = (float) MathHelper.wrapDegrees(MathHelper.atan2(vector3d1.z, vector3d1.x)
                         * (double) (180F / (float) Math.PI) - 90.0D);
             }
 
-            p.setLocationAndAngles(vector3d.x, vector3d.y, vector3d.z, f1, 0.0F);
-            p.func_242111_a(w.getDimensionKey(), blockpos, f, flag, false);
+            p.moveTo(vector3d.x, vector3d.y, vector3d.z, f1, 0.0F);
+            p.setRespawnPosition(w.dimension(), blockpos, f, flag, false);
             flag2 = !p_232644_2_ && flag1;
         } else if(blockpos != null) {
-            p.connection.sendPacket(
-                    new SChangeGameStatePacket(SChangeGameStatePacket.field_241764_a_, 0.0F));
+            p.connection.send(new SChangeGameStatePacket(
+                    SChangeGameStatePacket.NO_RESPAWN_BLOCK_AVAILABLE, 0.0F));
         }
 
-        while(!w.hasNoCollisions(p) && p.getPosY() < 256.0D) {
-            p.setPosition(p.getPosX(), p.getPosY() + 1.0D, p.getPosZ());
+        while(!w.noCollision(p) && p.getY() < 256.0D) {
+            p.setPos(p.getX(), p.getY() + 1.0D, p.getZ());
         }
 
-        IWorldInfo iworldinfo = p.world.getWorldInfo();
-        p.connection.sendPacket(new SRespawnPacket(p.world.getDimensionType(),
-                p.world.getDimensionKey(), BiomeManager.getHashedSeed(p.getServerWorld().getSeed()),
-                p.interactionManager.getGameType(), p.interactionManager.func_241815_c_(),
-                p.getServerWorld().isDebug(), p.getServerWorld().func_241109_A_(), p_232644_2_));
-        p.connection.setPlayerLocation(p.getPosX(), p.getPosY(), p.getPosZ(), p.rotationYaw,
-                p.rotationPitch);
-        p.connection.sendPacket(new SWorldSpawnChangedPacket(w.getSpawnPoint(), w.func_242107_v()));
-        p.connection.sendPacket(new SServerDifficultyPacket(iworldinfo.getDifficulty(),
+        IWorldInfo iworldinfo = p.level.getLevelData();
+        p.connection.send(new SRespawnPacket(p.level.dimensionType(), p.level.dimension(),
+                BiomeManager.obfuscateSeed(p.getLevel().getSeed()),
+                p.gameMode.getGameModeForPlayer(), p.gameMode.getPreviousGameModeForPlayer(),
+                p.getLevel().isDebug(), p.getLevel().isFlat(), p_232644_2_));
+        p.connection.teleport(p.getX(), p.getY(), p.getZ(), p.yRot, p.xRot);
+        p.connection
+                .send(new SWorldSpawnChangedPacket(w.getSharedSpawnPos(), w.getSharedSpawnAngle()));
+        p.connection.send(new SServerDifficultyPacket(iworldinfo.getDifficulty(),
                 iworldinfo.isDifficultyLocked()));
-        p.connection.sendPacket(
-                new SSetExperiencePacket(p.experience, p.experienceTotal, p.experienceLevel));
-        this.sendWorldInfo(p, w);
-        this.updatePermissionLevel(p);
+        p.connection.send(new SSetExperiencePacket(p.experienceProgress, p.totalExperience,
+                p.experienceLevel));
+        this.sendLevelInfo(p, w);
+        this.sendPlayerPermissionLevel(p);
         w.addRespawnedPlayer(p);
         this.addPlayer(p);
-        this.uuidToPlayerMap.put(p.getUniqueID(), p);
-        p.addSelfToInternalCraftingInventory();
+        this.uuidToPlayerMap.put(p.getUUID(), p);
+        p.initMenu();
         p.setHealth(p.getHealth());
         net.minecraftforge.fml.hooks.BasicEventHooks.firePlayerRespawnEvent(p, p_232644_2_);
         if(flag2) {
-            p.connection
-                    .sendPacket(new SPlaySoundEffectPacket(SoundEvents.BLOCK_RESPAWN_ANCHOR_DEPLETE,
-                            SoundCategory.BLOCKS, (double) blockpos.getX(),
-                            (double) blockpos.getY(), (double) blockpos.getZ(), 1.0F, 1.0F));
+            p.connection.send(new SPlaySoundEffectPacket(SoundEvents.RESPAWN_ANCHOR_DEPLETE,
+                    SoundCategory.BLOCKS, (double) blockpos.getX(), (double) blockpos.getY(),
+                    (double) blockpos.getZ(), 1.0F, 1.0F));
         }
 
         return p;
@@ -186,17 +186,17 @@ public final class ModPlayerList extends DedicatedPlayerList {
     }
 
     @Override
-    public void func_232641_a_(ITextComponent message, ChatType chat, UUID uuid) {
+    public void broadcastMessage(ITextComponent message, ChatType chat, UUID uuid) {
         if(message instanceof TranslationTextComponent) {
             TranslationTextComponent translation = (TranslationTextComponent) message;
-            switch (translation.getKey()) {
+            switch(translation.getKey()) {
                 case "multiplayer.player.left":
                 case "multiplayer.player.joined":
                 case "multiplayer.player.joined.renamed":
                     return;
             }
         }
-        super.func_232641_a_(message, chat, uuid);
+        super.broadcastMessage(message, chat, uuid);
     }
 
 }

+ 7 - 5
src/main/java/me/km/overrides/PlayerScoreboard.java

@@ -25,7 +25,8 @@ public class PlayerScoreboard {
     private boolean init = true;
 
     public PlayerScoreboard() {
-        o = new ScoreObjective(board, "ScoreBoardAPI", ScoreCriteria.DUMMY, new StringTextComponent("§6---------------"), RenderType.INTEGER);
+        o = new ScoreObjective(board, "ScoreBoardAPI", ScoreCriteria.DUMMY,
+                new StringTextComponent("§6---------------"), RenderType.INTEGER);
     }
 
     public void addText(int id, String text) {
@@ -59,14 +60,14 @@ public class PlayerScoreboard {
         }
         if(init) {
             init = false;
-            p.connection.sendPacket(new SScoreboardObjectivePacket(o, 0));
+            p.connection.send(new SScoreboardObjectivePacket(o, 0));
         }
 
         if(!toRemove.isEmpty()) {
             toRemove.forEach(i -> {
                 String s = elements.remove(i);
                 if(s != null) {
-                    p.connection.sendPacket(new SUpdateScorePacket(Action.REMOVE, o.getName(), s, -1));
+                    p.connection.send(new SUpdateScorePacket(Action.REMOVE, o.getName(), s, -1));
                 }
             });
             toRemove.clear();
@@ -75,14 +76,15 @@ public class PlayerScoreboard {
         if(!toAdd.isEmpty()) {
             toAdd.entrySet().stream().forEach((e) -> {
                 elements.put(e.getKey(), e.getValue());
-                p.connection.sendPacket(new SUpdateScorePacket(Action.CHANGE, o.getName(), e.getValue(), e.getKey()));
+                p.connection.send(new SUpdateScorePacket(Action.CHANGE, o.getName(), e.getValue(),
+                        e.getKey()));
             });
             toAdd.clear();
         }
 
         changeNeeded = false;
         // displaying objective in sidebar
-        p.connection.sendPacket(new SDisplayObjectivePacket(1, o));
+        p.connection.send(new SDisplayObjectivePacket(1, o));
         return false;
     }
 }

+ 2 - 2
src/main/java/me/km/permissions/Command.java

@@ -16,11 +16,11 @@ public abstract class Command {
 
     public void sendMessage(ICommandSource cs, String message) {
         cs.sendMessage(new StringTextComponent(String.format("[§dScript§r] %s", message)),
-                Util.DUMMY_UUID);
+                Util.NIL_UUID);
     }
 
     public void sendListMessage(ICommandSource cs, String message1, String message2) {
         cs.sendMessage(new StringTextComponent(String.format("§d - %s§r %s", message1, message2)),
-                Util.DUMMY_UUID);
+                Util.NIL_UUID);
     }
 }

+ 7 - 7
src/main/java/me/km/permissions/ModCommandManager.java

@@ -142,7 +142,7 @@ public class ModCommandManager extends Commands {
     }
 
     @Override
-    public int handleCommand(CommandSource cs, String rawCommand) {
+    public int performCommand(CommandSource cs, String rawCommand) {
         rawCommand = lowerRawCommand(rawCommand);
         String commandName = getCommandName(rawCommand);
 
@@ -176,7 +176,7 @@ public class ModCommandManager extends Commands {
                         return 0;
                     }
                 }
-                return super.handleCommand(cs, rawCommand);
+                return super.performCommand(cs, rawCommand);
             }
             events.onMissingPermission(getSource(cs), commandName);
             return 0;
@@ -188,16 +188,16 @@ public class ModCommandManager extends Commands {
 
     @SuppressWarnings({"unchecked", "rawtypes"})
     @Override
-    public void send(ServerPlayerEntity player) {
+    public void sendCommands(ServerPlayerEntity player) {
         Map<CommandNode<CommandSource>, CommandNode<ISuggestionProvider>> map = Maps.newHashMap();
         RootCommandNode<ISuggestionProvider> rootNode = new RootCommandNode<>();
         map.put(getDispatcher().getRoot(), rootNode);
-        CommandSource cs = player.getCommandSource();
+        CommandSource cs = player.createCommandSourceStack();
         commandSourceNodesToSuggestionNodes(true, getDispatcher().getRoot(), rootNode, cs, map);
         for(CommandNode node : customNodes) {
             commandSourceNodesToSuggestionNodes(node, rootNode, cs, map);
         }
-        player.connection.sendPacket(new SCommandListPacket(rootNode));
+        player.connection.send(new SCommandListPacket(rootNode));
     }
 
     @SuppressWarnings({"unchecked", "rawtypes"})
@@ -222,7 +222,7 @@ public class ModCommandManager extends Commands {
                             (RequiredArgumentBuilder) arg;
                     if(required.getSuggestionsProvider() != null) {
                         required.suggests(
-                                SuggestionProviders.ensureKnown(required.getSuggestionsProvider()));
+                                SuggestionProviders.safelySwap(required.getSuggestionsProvider()));
                     }
                 }
 
@@ -258,7 +258,7 @@ public class ModCommandManager extends Commands {
                     (RequiredArgumentBuilder) arg;
             if(required.getSuggestionsProvider() != null) {
                 required.suggests(
-                        SuggestionProviders.ensureKnown(required.getSuggestionsProvider()));
+                        SuggestionProviders.safelySwap(required.getSuggestionsProvider()));
             }
         }
         if(arg.getRedirect() != null) {

+ 4 - 3
src/main/java/me/km/permissions/Permissions.java

@@ -12,7 +12,8 @@ import net.minecraftforge.api.distmarker.OnlyIn;
 @OnlyIn(Dist.DEDICATED_SERVER)
 public class Permissions {
     private final static UUID MARVINIUS = UUID.fromString("e41b5335-3c74-46e9-a6c5-dafc6334a477");
-    private final static UUID KAJETANJOHANNES = UUID.fromString("51e240f9-ab10-4ea6-8a5d-779319f51257");
+    private final static UUID KAJETANJOHANNES =
+            UUID.fromString("51e240f9-ab10-4ea6-8a5d-779319f51257");
 
     private final HashMap<UUID, ArrayList<Integer>> playerGroups = new HashMap<>();
     private final ArrayList<HashSet<String>> stringGroupPerms = new ArrayList<>();
@@ -40,7 +41,7 @@ public class Permissions {
     }
 
     public boolean has(Entity ent, String perm) {
-        return has(ent.getUniqueID(), perm);
+        return has(ent.getUUID(), perm);
     }
 
     public boolean has(UUID uuid, String perm) {
@@ -64,7 +65,7 @@ public class Permissions {
     public boolean has(CommandSource cs, String perm) {
         Entity ent = cs.getEntity();
         if(ent != null) {
-            return has(ent.getUniqueID(), perm);
+            return has(ent.getUUID(), perm);
         }
         return true;
     }

+ 4 - 4
src/main/java/me/km/playerbank/PlayerManager.java

@@ -22,12 +22,12 @@ public class PlayerManager {
             return;
         }
 
-        int id = bank.getId(p.getUniqueID());
+        int id = bank.getId(p.getUUID());
         if(id == -1) {
-            bank.add(p.getUniqueID(), p.getName().getUnformattedComponentText());
+            bank.add(p.getUUID(), p.getName().getContents());
             logger.print(String.format("'%s' was added", p.getName().getString()));
 
-            id = bank.getId(p.getUniqueID());
+            id = bank.getId(p.getUUID());
             if(id == -1) {
                 // this should never happen
                 logger.print(String.format("'%s' has no id", p.getName().getString()));
@@ -36,7 +36,7 @@ public class PlayerManager {
             }
         } else {
             p.setId(id);
-            bank.changeName(p.getUniqueID(), p.getName().getString());
+            bank.changeName(p.getUUID(), p.getName().getString());
         }
     }
 }

+ 12 - 11
src/main/java/me/km/plots/ProtectionEvents.java

@@ -61,10 +61,10 @@ public class ProtectionEvents {
     @SubscribeEvent(priority = EventPriority.HIGHEST)
     public void onBossSpawn(EntityJoinWorldEvent e) {
         EntityType<?> type = e.getEntity().getType();
-        if(type == EntityType.WITHER && !e.getWorld().getDimensionType().isUltrawarm()) {
+        if(type == EntityType.WITHER && !e.getWorld().dimensionType().ultraWarm()) {
             e.setCanceled(true);
         } else if(type == EntityType.ENDER_DRAGON
-                && !e.getWorld().getDimensionType().doesHasDragonFight()) {
+                && !e.getWorld().dimensionType().createDragonFight()) {
             e.setCanceled(true);
         }
     }
@@ -75,7 +75,8 @@ public class ProtectionEvents {
         if(ray == null || ray.getType() != RayTraceResult.Type.BLOCK || canBypass(e.getPlayer())) {
             return;
         }
-        if(!plots.canUseBucket(e.getWorld(), ((BlockRayTraceResult) ray).getPos(), e.getPlayer())) {
+        if(!plots.canUseBucket(e.getWorld(), ((BlockRayTraceResult) ray).getBlockPos(),
+                e.getPlayer())) {
             e.setCanceled(true);
         }
     }
@@ -85,7 +86,7 @@ public class ProtectionEvents {
         if(shouldBeProtected(e.getTarget())) {
             PlayerEntity p = e.getPlayer();
             if(!canBypass(p)
-                    && !plots.canHitAmbientEntity(p.world, e.getTarget().getPosition(), p)) {
+                    && !plots.canHitAmbientEntity(p.level, e.getTarget().blockPosition(), p)) {
                 e.setCanceled(true);
             }
         }
@@ -96,11 +97,11 @@ public class ProtectionEvents {
         if(e.getRayTraceResult().getType() == RayTraceResult.Type.ENTITY) {
             EntityRayTraceResult result = (EntityRayTraceResult) e.getRayTraceResult();
             if(shouldBeProtected(result.getEntity())) {
-                Entity thrower = e.getThrowable().func_234616_v_();
+                Entity thrower = e.getThrowable().getOwner();
                 if(thrower != null && (thrower instanceof PlayerEntity)) {
                     PlayerEntity p = (PlayerEntity) thrower;
-                    if(!canBypass(p) && !plots.canHitAmbientEntity(p.world,
-                            e.getThrowable().getPosition(), p)) {
+                    if(!canBypass(p) && !plots.canHitAmbientEntity(p.level,
+                            e.getThrowable().blockPosition(), p)) {
                         e.setCanceled(true);
                     }
                 } else {
@@ -115,11 +116,11 @@ public class ProtectionEvents {
         if(e.getRayTraceResult().getType() == RayTraceResult.Type.ENTITY) {
             EntityRayTraceResult result = (EntityRayTraceResult) e.getRayTraceResult();
             if(shouldBeProtected(result.getEntity())) {
-                Entity shooter = e.getArrow().func_234616_v_();
+                Entity shooter = e.getArrow().getOwner();
                 if(shooter != null && (shooter instanceof ModEntityPlayerMP)) {
                     PlayerEntity p = (PlayerEntity) shooter;
-                    if(!canBypass(p)
-                            && !plots.canHitAmbientEntity(p.world, e.getArrow().getPosition(), p)) {
+                    if(!canBypass(p) && !plots.canHitAmbientEntity(p.level,
+                            e.getArrow().blockPosition(), p)) {
                         e.setCanceled(true);
                     }
                 } else {
@@ -154,7 +155,7 @@ public class ProtectionEvents {
     public void onPlayerEntityInteract(PlayerInteractEvent.EntityInteract e) {
         PlayerEntity p = e.getPlayer();
         if(!canBypass(p)
-                && !plots.canInteractWithEntity(e.getWorld(), e.getTarget().getPosition(), p)) {
+                && !plots.canInteractWithEntity(e.getWorld(), e.getTarget().blockPosition(), p)) {
             e.setCanceled(true);
         }
     }

+ 1 - 1
src/main/java/me/km/plots/WorldPlotMap.java

@@ -34,7 +34,7 @@ public class WorldPlotMap {
             return map.anyPlotMatches(pos.getX(), pos.getY(), pos.getZ(), empty,
                     plot -> plot.hasFlags(flag));
         }
-        UUID uuid = p.getUniqueID();
+        UUID uuid = p.getUUID();
         return map.anyPlotMatches(pos.getX(), pos.getY(), pos.getZ(), empty,
                 plot -> plot.hasFlags(flag) || plot.getOwners().contains(uuid));
     }

+ 3 - 3
src/main/java/me/km/utils/ClientReflectionUtils.java

@@ -21,7 +21,7 @@ public class ClientReflectionUtils {
     public static boolean canRenderName(EntityRenderer<?> lr, Entity liv) {
         try {
             return (boolean) CAN_RENDER_NAME.invoke(lr, liv);
-        } catch (Exception ex) {
+        } catch(Exception ex) {
             LogManager.getLogger().warn("canRenderName - " + ex);
             return false;
         }
@@ -31,7 +31,7 @@ public class ClientReflectionUtils {
 
     public static boolean isRenderingBossBar() {
         Minecraft mc = Minecraft.getInstance();
-        return !ReflectionUtils
-                .getFieldValue(Map.class, mc.ingameGUI.getBossOverlay(), BOSS_BAR_MAP).isEmpty();
+        return !ReflectionUtils.getFieldValue(Map.class, mc.gui.getBossOverlay(), BOSS_BAR_MAP)
+                .isEmpty();
     }
 }

+ 13 - 9
src/main/java/me/km/utils/ItemStackUtils.java

@@ -11,36 +11,40 @@ import net.minecraft.util.text.StringTextComponent;
 
 public class ItemStackUtils {
     public static void setLore(ItemStack stack, List<Object> list) {
-        CompoundNBT com = stack.getOrCreateChildTag("display");
+        CompoundNBT com = stack.getOrCreateTagElement("display");
         ListNBT nbtList = new ListNBT();
-        list.forEach(s -> nbtList.add(StringNBT.valueOf(ITextComponent.Serializer.toJson(new StringTextComponent(s.toString())))));
+        list.forEach(s -> nbtList.add(StringNBT
+                .valueOf(ITextComponent.Serializer.toJson(new StringTextComponent(s.toString())))));
         com.put("Lore", nbtList);
     }
 
     public static void addLore(ItemStack stack, String s) {
-        CompoundNBT com = stack.getOrCreateChildTag("display");
+        CompoundNBT com = stack.getOrCreateTagElement("display");
         ListNBT nbtList = com.getList("Lore", 8);
-        nbtList.add(StringNBT.valueOf(ITextComponent.Serializer.toJson(new StringTextComponent(s))));
+        nbtList.add(
+                StringNBT.valueOf(ITextComponent.Serializer.toJson(new StringTextComponent(s))));
         com.put("Lore", nbtList);
     }
 
     public static List<Object> getLore(ItemStack stack) {
-        CompoundNBT com = stack.getOrCreateChildTag("display");
+        CompoundNBT com = stack.getOrCreateTagElement("display");
         ListNBT nbtList = com.getList("Lore", 8);
         ArrayList<Object> list = new ArrayList<>();
         for(int i = 0; i < nbtList.size(); i++) {
-            list.add(ITextComponent.Serializer.getComponentFromJson(nbtList.getString(i)).getString());
+            list.add(ITextComponent.Serializer.fromJson(nbtList.getString(i)).getString());
         }
         return list;
     }
 
     public static void addLore(ItemStack stack, String s, int i) {
-        CompoundNBT com = stack.getOrCreateChildTag("display");
+        CompoundNBT com = stack.getOrCreateTagElement("display");
         ListNBT list = com.getList("Lore", 8);
         if(i >= list.size()) {
-            list.add(StringNBT.valueOf(ITextComponent.Serializer.toJson(new StringTextComponent(s))));
+            list.add(StringNBT
+                    .valueOf(ITextComponent.Serializer.toJson(new StringTextComponent(s))));
         } else {
-            list.set(i, StringNBT.valueOf(ITextComponent.Serializer.toJson(new StringTextComponent(s))));
+            list.set(i, StringNBT
+                    .valueOf(ITextComponent.Serializer.toJson(new StringTextComponent(s))));
         }
         com.put("Lore", list);
     }

+ 2 - 3
src/main/java/me/km/utils/Location.java

@@ -44,8 +44,7 @@ public class Location {
     }
 
     public Location(Entity ent) {
-        this(ent.world, ent.getPosX(), ent.getPosY(), ent.getPosZ(), ent.rotationYaw,
-                ent.rotationPitch);
+        this(ent.level, ent.getX(), ent.getY(), ent.getZ(), ent.yRot, ent.xRot);
     }
 
     public Location(MinecraftServer server, String location) {
@@ -70,7 +69,7 @@ public class Location {
             }
             throw new IllegalArgumentException(
                     String.format("'%s' is not a valid location string", location));
-        } catch (PatternSyntaxException | NumberFormatException ex) {
+        } catch(PatternSyntaxException | NumberFormatException ex) {
             throw new IllegalArgumentException(
                     String.format("'%s' is not a valid location string", location));
         }

+ 52 - 50
src/main/java/me/km/utils/Mapper.java

@@ -47,7 +47,7 @@ public class Mapper {
     }
 
     public static Property<?> getProperty(String name) {
-        switch (name) {
+        switch(name) {
             case "attached":
                 return BlockStateProperties.ATTACHED;
             case "bottom":
@@ -124,22 +124,22 @@ public class Mapper {
                 return BlockStateProperties.WEST;
             case "facing":
                 return BlockStateProperties.FACING;
-            case "facing_except_up":
-                return BlockStateProperties.FACING_EXCEPT_UP;
+            case "facing_hopper":
+                return BlockStateProperties.FACING_HOPPER;
             case "horizontal_facing":
                 return BlockStateProperties.HORIZONTAL_FACING;
-            case "face":
-                return BlockStateProperties.FACE;
+            case "attach_face":
+                return BlockStateProperties.ATTACH_FACE;
             case "attachment":
                 return BlockStateProperties.BELL_ATTACHMENT;
             case "redstone_east":
-                return BlockStateProperties.REDSTONE_EAST;
+                return BlockStateProperties.EAST_REDSTONE;
             case "redstone_north":
-                return BlockStateProperties.REDSTONE_NORTH;
+                return BlockStateProperties.NORTH_REDSTONE;
             case "redstone_south":
-                return BlockStateProperties.REDSTONE_SOUTH;
+                return BlockStateProperties.SOUTH_REDSTONE;
             case "redstone_west":
-                return BlockStateProperties.REDSTONE_WEST;
+                return BlockStateProperties.WEST_REDSTONE;
             case "double_block_half":
                 return BlockStateProperties.DOUBLE_BLOCK_HALF;
             case "half":
@@ -148,64 +148,66 @@ public class Mapper {
                 return BlockStateProperties.RAIL_SHAPE;
             case "rail_shape_straight":
                 return BlockStateProperties.RAIL_SHAPE_STRAIGHT;
-            case "age_0_1":
-                return BlockStateProperties.AGE_0_1;
-            case "age_0_2":
-                return BlockStateProperties.AGE_0_2;
-            case "age_0_3":
-                return BlockStateProperties.AGE_0_3;
-            case "age_0_5":
-                return BlockStateProperties.AGE_0_5;
-            case "age_0_7":
-                return BlockStateProperties.AGE_0_7;
-            case "age_0_15":
-                return BlockStateProperties.AGE_0_15;
-            case "age_0_25":
-                return BlockStateProperties.AGE_0_25;
+            case "age_1":
+                return BlockStateProperties.AGE_1;
+            case "age_2":
+                return BlockStateProperties.AGE_2;
+            case "age_3":
+                return BlockStateProperties.AGE_3;
+            case "age_5":
+                return BlockStateProperties.AGE_5;
+            case "age_7":
+                return BlockStateProperties.AGE_7;
+            case "age_15":
+                return BlockStateProperties.AGE_15;
+            case "age_25":
+                return BlockStateProperties.AGE_25;
             case "bites":
-                return BlockStateProperties.BITES_0_6;
+                return BlockStateProperties.BITES;
             case "delay":
-                return BlockStateProperties.DELAY_1_4;
-            case "distance_1_7":
-                return BlockStateProperties.DISTANCE_1_7;
+                return BlockStateProperties.DELAY;
+            case "distance":
+                return BlockStateProperties.DISTANCE;
             case "eggs":
-                return BlockStateProperties.EGGS_1_4;
+                return BlockStateProperties.EGGS;
             case "hatch":
-                return BlockStateProperties.HATCH_0_2;
+                return BlockStateProperties.HATCH;
             case "layers":
-                return BlockStateProperties.LAYERS_1_8;
-            case "level_0_3":
-                return BlockStateProperties.LEVEL_0_3;
-            case "level_0_8":
-                return BlockStateProperties.LEVEL_0_8;
-            case "level_1_8":
-                return BlockStateProperties.LEVEL_1_8;
-            case "level_0_15":
-                return BlockStateProperties.LEVEL_0_15;
+                return BlockStateProperties.LAYERS;
+            case "level":
+                return BlockStateProperties.LEVEL;
+            case "level_cauldron":
+                return BlockStateProperties.LEVEL_CAULDRON;
+            case "level_composter":
+                return BlockStateProperties.LEVEL_COMPOSTER;
+            case "level_flowing":
+                return BlockStateProperties.LEVEL_FLOWING;
+            case "level_honey":
+                return BlockStateProperties.LEVEL_HONEY;
             case "moisture":
-                return BlockStateProperties.MOISTURE_0_7;
+                return BlockStateProperties.MOISTURE;
             case "note":
-                return BlockStateProperties.NOTE_0_24;
+                return BlockStateProperties.NOTE;
             case "pickles":
-                return BlockStateProperties.PICKLES_1_4;
+                return BlockStateProperties.PICKLES;
             case "power":
-                return BlockStateProperties.POWER_0_15;
+                return BlockStateProperties.POWER;
             case "stage":
-                return BlockStateProperties.STAGE_0_1;
-            case "distance_0_7":
-                return BlockStateProperties.DISTANCE_0_7;
-            case "rotation":
-                return BlockStateProperties.ROTATION_0_15;
+                return BlockStateProperties.STAGE;
+            case "stability_distance":
+                return BlockStateProperties.STABILITY_DISTANCE;
+            case "rotation_16":
+                return BlockStateProperties.ROTATION_16;
             case "part":
                 return BlockStateProperties.BED_PART;
             case "chest_type":
                 return BlockStateProperties.CHEST_TYPE;
             case "mode":
-                return BlockStateProperties.COMPARATOR_MODE;
+                return BlockStateProperties.MODE_COMPARATOR;
             case "hinge":
                 return BlockStateProperties.DOOR_HINGE;
             case "instrument":
-                return BlockStateProperties.NOTE_BLOCK_INSTRUMENT;
+                return BlockStateProperties.NOTEBLOCK_INSTRUMENT;
             case "piston_type":
                 return BlockStateProperties.PISTON_TYPE;
             case "slab_type":
@@ -213,7 +215,7 @@ public class Mapper {
             case "stair_shape":
                 return BlockStateProperties.STAIRS_SHAPE;
             case "structure_block_mode":
-                return BlockStateProperties.STRUCTURE_BLOCK_MODE;
+                return BlockStateProperties.STRUCTUREBLOCK_MODE;
             case "leaves":
                 return BlockStateProperties.BAMBOO_LEAVES;
         }

+ 39 - 40
src/main/java/me/km/utils/Utils.java

@@ -22,13 +22,13 @@ import net.minecraft.world.server.ServerWorld;
 public class Utils {
     public static Entity getEntityFromProjectile(Entity ent) {
         if(ent instanceof ProjectileEntity) {
-            return ((ProjectileEntity) ent).func_234616_v_();
+            return ((ProjectileEntity) ent).getOwner();
         }
         return null;
     }
 
     public static PlayerEntity getDamager(DamageSource ds) {
-        Entity ent = ds.getTrueSource();
+        Entity ent = ds.getEntity();
         if(ent == null) {
             return null;
         }
@@ -46,17 +46,17 @@ public class Utils {
     public static <T extends Entity> List<T> getEntities(IWorld w, double x, double y, double z,
             double radius, Class<T> type) {
         double sqareRadius = radius * radius;
-        return w.getEntitiesWithinAABB(type, buildBoxAround(x, y, z, radius),
-                ent -> ent.getDistanceSq(x, y, z) <= sqareRadius);
+        return w.getEntitiesOfClass(type, buildBoxAround(x, y, z, radius),
+                ent -> ent.distanceToSqr(x, y, z) <= sqareRadius);
     }
 
     public static List<Entity> getEntities(Entity ent, double radius) {
         double sqareRadius = radius * radius;
-        double x = ent.getPosX();
-        double y = ent.getPosY();
-        double z = ent.getPosZ();
-        return ent.world.getEntitiesInAABBexcluding(ent, buildBoxAround(x, y, z, radius),
-                e -> e.getDistanceSq(x, y, z) <= sqareRadius);
+        double x = ent.getX();
+        double y = ent.getY();
+        double z = ent.getZ();
+        return ent.level.getEntities(ent, buildBoxAround(x, y, z, radius),
+                e -> e.distanceToSqr(x, y, z) <= sqareRadius);
     }
 
     public static List<Entity> getEntities(Location loc, double radius) {
@@ -64,29 +64,29 @@ public class Utils {
         double x = loc.getX();
         double y = loc.getY();
         double z = loc.getZ();
-        return loc.getWorld().getEntitiesInAABBexcluding(null, buildBoxAround(x, y, z, radius),
-                ent -> ent.getDistanceSq(x, y, z) <= sqareRadius);
+        return loc.getWorld().getEntities((Entity) null, buildBoxAround(x, y, z, radius),
+                ent -> ent.distanceToSqr(x, y, z) <= sqareRadius);
     }
 
     public static List<PlayerEntity> getPlayers(IWorld w, double x, double y, double z,
             double radius) {
         double sqareRadius = radius * radius;
-        return w.getEntitiesWithinAABB(PlayerEntity.class, buildBoxAround(x, y, z, radius),
-                p -> p.getDistanceSq(x, y, z) <= sqareRadius);
+        return w.getEntitiesOfClass(PlayerEntity.class, buildBoxAround(x, y, z, radius),
+                p -> p.distanceToSqr(x, y, z) <= sqareRadius);
     }
 
     public static List<PlayerEntity> getPlayers(Entity not, double radius) {
         double sqareRadius = radius * radius;
-        return not.world.getEntitiesWithinAABB(PlayerEntity.class,
-                buildBoxAround(not.getPosX(), not.getPosY(), not.getPosZ(), radius),
-                p -> p != not && p.getDistanceSq(not) <= sqareRadius);
+        return not.level.getEntitiesOfClass(PlayerEntity.class,
+                buildBoxAround(not.getX(), not.getY(), not.getZ(), radius),
+                p -> p != not && p.distanceToSqr(not) <= sqareRadius);
     }
 
     public static List<LivingEntity> getLiving(Entity not, double radius) {
         double sqareRadius = radius * radius;
-        return not.world.getEntitiesWithinAABB(LivingEntity.class,
-                buildBoxAround(not.getPosX(), not.getPosY(), not.getPosZ(), radius),
-                p -> p != not && p.getDistanceSq(not) <= sqareRadius);
+        return not.level.getEntitiesOfClass(LivingEntity.class,
+                buildBoxAround(not.getX(), not.getY(), not.getZ(), radius),
+                p -> p != not && p.distanceToSqr(not) <= sqareRadius);
     }
 
     public static List<LivingEntity> getLiving(Location loc, double radius) {
@@ -94,14 +94,14 @@ public class Utils {
         double x = loc.getX();
         double y = loc.getY();
         double z = loc.getZ();
-        return loc.getWorld().getEntitiesWithinAABB(LivingEntity.class,
-                buildBoxAround(x, y, z, radius), p -> p.getDistanceSq(x, y, z) <= sqareRadius);
+        return loc.getWorld().getEntitiesOfClass(LivingEntity.class,
+                buildBoxAround(x, y, z, radius), p -> p.distanceToSqr(x, y, z) <= sqareRadius);
     }
 
     public static <T extends Entity> T getEntity(IWorld w, double x, double y, double z,
             double radius, Class<T> type) {
         return getEntities(w, x, y, z, radius, type).stream().min(
-                (e1, e2) -> Double.compare(e1.getDistanceSq(x, y, z), e2.getDistanceSq(x, y, z)))
+                (e1, e2) -> Double.compare(e1.distanceToSqr(x, y, z), e2.distanceToSqr(x, y, z)))
                 .orElse(null);
     }
 
@@ -150,57 +150,56 @@ public class Utils {
         if(range > 128) {
             range = 128;
         }
-        World w = ent.getEntityWorld();
+        World w = ent.level;
         Vector3d start = ent.getEyePosition(1.0f);
-        Vector3d look = ent.getLookVec();
+        Vector3d look = ent.getForward();
         Vector3d end = start.add(look.x * range, look.y * range, look.z * range);
 
-        RayTraceResult ray = w.rayTraceBlocks(new RayTraceContext(start, end,
+        RayTraceResult ray = w.clip(new RayTraceContext(start, end,
                 RayTraceContext.BlockMode.COLLIDER, RayTraceContext.FluidMode.NONE, ent));
-        if(ray == null || ray.getHitVec() == null) {
+        if(ray == null || ray.getLocation() == null) {
             return end;
         }
-        return ray.getHitVec();
+        return ray.getLocation();
     }
 
     @SuppressWarnings("unchecked")
     public static <T extends Entity> T getTargetedEntity(PlayerEntity p, double radius,
             Class<T> type) {
-        World w = p.getEntityWorld();
+        World w = p.level;
         Vector3d l = getTargetVector(p, radius);
         Vector3d eye = p.getEyePosition(1.0f);
         Vector3d unit = new Vector3d(l.x - eye.x, l.y - eye.y, l.z - eye.z);
 
-        List<Entity> col = w.getEntitiesWithinAABBExcludingEntity(p,
-                new AxisAlignedBB(eye.x, eye.y, eye.z, l.x, l.y, l.z));
+        List<Entity> col = w.getEntities(p, new AxisAlignedBB(eye.x, eye.y, eye.z, l.x, l.y, l.z));
         col.removeIf(ent -> !type.isAssignableFrom(ent.getClass()));
         // removes entities, which do not intersect with the sight vector
-        col.removeIf(ent -> !doesIntersect(ent.getBoundingBox().grow(0.1), eye, unit));
+        col.removeIf(ent -> !doesIntersect(ent.getBoundingBox().inflate(0.1), eye, unit));
 
         return (T) col.stream().sorted((Entity e1, Entity e2) -> {
-            return Double.compare(e1.getDistanceSq(eye.x, eye.y, eye.z),
-                    e2.getDistanceSq(eye.x, eye.y, eye.z));
+            return Double.compare(e1.distanceToSqr(eye.x, eye.y, eye.z),
+                    e2.distanceToSqr(eye.x, eye.y, eye.z));
         }).findFirst().orElse(null);
     }
 
     public static ServerPlayerEntity getPlayerByName(MinecraftServer server, String name) {
         String nameLower = name.toLowerCase();
-        return server.getPlayerList().getPlayers().stream().filter(
-                pl -> pl.getName().getUnformattedComponentText().toLowerCase().contains(nameLower))
+        return server.getPlayerList().getPlayers().stream()
+                .filter(pl -> pl.getName().getContents().toLowerCase().contains(nameLower))
                 .findFirst().orElse(null);
     }
 
     public static String getWorldName(World w) {
-        return w.getDimensionKey().getLocation().getPath();
+        return w.dimension().getRegistryName().getPath();
     }
 
     public static World getWorldFromName(MinecraftServer server, String name) {
-        ServerWorld sw = server.getWorld(
-                RegistryKey.getOrCreateKey(Registry.WORLD_KEY, new ResourceLocation(name)));
+        ServerWorld sw = server.getLevel(
+                RegistryKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation(name)));
         if(sw != null) {
             return sw;
         }
-        return server.getWorld(
-                RegistryKey.getOrCreateKey(Registry.WORLD_KEY, new ResourceLocation("km", name)));
+        return server.getLevel(
+                RegistryKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation("km", name)));
     }
 }

+ 8 - 8
src/main/java/me/km/world/ModWorldInfo.java

@@ -85,17 +85,17 @@ public class ModWorldInfo extends DerivedWorldInfo {
     }
 
     @Override
-    public void setSpawnX(int i) {
+    public void setXSpawn(int i) {
         spawnX = i;
     }
 
     @Override
-    public void setSpawnY(int i) {
+    public void setYSpawn(int i) {
         spawnY = i;
     }
 
     @Override
-    public void setSpawnZ(int i) {
+    public void setZSpawn(int i) {
         spawnZ = i;
     }
 
@@ -105,17 +105,17 @@ public class ModWorldInfo extends DerivedWorldInfo {
     }
 
     @Override
-    public int getSpawnX() {
+    public int getXSpawn() {
         return spawnX;
     }
 
     @Override
-    public int getSpawnY() {
+    public int getYSpawn() {
         return spawnY;
     }
 
     @Override
-    public int getSpawnZ() {
+    public int getZSpawn() {
         return spawnZ;
     }
 
@@ -143,9 +143,9 @@ public class ModWorldInfo extends DerivedWorldInfo {
     public void setRaining(boolean bln) {
         raining = bln;
     }
-    
+
     @Override
-    public GameRules getGameRulesInstance() {
+    public GameRules getGameRules() {
         return rules;
     }
 }

+ 4 - 3
src/main/java/me/km/world/WorldEvents.java

@@ -15,10 +15,11 @@ public class WorldEvents {
             return;
         }
         ServerWorld w = (ServerWorld) e.getWorld();
-        if(w.getWorldInfo() instanceof DerivedWorldInfo) {
-            DerivedWorldInfo info = (DerivedWorldInfo) w.getWorldInfo();
+        if(w.getLevelData() instanceof DerivedWorldInfo) {
+            DerivedWorldInfo info = (DerivedWorldInfo) w.getLevelData();
             ReflectionUtils.setWorldInfo(w, new ModWorldInfo(info));
-            System.out.println(String.format("updated world info of %s to mod world info", Utils.getWorldName(w)));
+            System.out.println(String.format("updated world info of %s to mod world info",
+                    Utils.getWorldName(w)));
         }
     }
 }

+ 2 - 2
src/main/resources/META-INF/mods.toml

@@ -1,9 +1,9 @@
 modLoader="javafml"
-loaderVersion="[35,)"
+loaderVersion="[36,)"
 license="All rights reserved"
 [[mods]]
 modId="km"
-version="0.0.48"
+version="0.0.49"
 displayName="Kajetans Mod"
 credits="kajetanjohannes"
 authors="kajetanjohannes"