From 1880bf785d93138df111cca8c3e10e0b6d20a873 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sat, 4 Dec 2021 19:17:21 +0100 Subject: [PATCH] some more workkkk --- .../java/de/ellpeck/naturesaura/Helper.java | 216 ++++++++---------- .../de/ellpeck/naturesaura/NaturesAura.java | 9 +- .../naturesaura/api/misc/WeightedOre.java | 6 +- .../naturesaura/api/multiblock/Matcher.java | 19 +- .../blocks/BlockAnimalGenerator.java | 8 +- .../naturesaura/blocks/BlockChunkLoader.java | 4 +- .../naturesaura/blocks/BlockGratedChute.java | 4 +- .../naturesaura/blocks/BlockOakGenerator.java | 2 +- .../blocks/BlockPickupStopper.java | 2 +- .../blocks/BlockSlimeSplitGenerator.java | 2 +- .../naturesaura/blocks/multi/Multiblocks.java | 22 +- ...r.java => BlockEntityAnimalContainer.java} | 25 +- ...r.java => BlockEntityAnimalGenerator.java} | 9 +- ...ner.java => BlockEntityAnimalSpawner.java} | 72 +++--- ...leEntityImpl.java => BlockEntityImpl.java} | 0 ...odStand.java => BlockEntityWoodStand.java} | 74 +++--- .../blocks/tiles/ITickableBlockEntity.java | 7 + .../blocks/tiles/TileEntityAuraDetector.java | 4 +- .../blocks/tiles/TileEntityChunkLoader.java | 4 +- .../blocks/tiles/TileEntityFieldCreator.java | 10 +- .../tiles/TileEntityFireworkGenerator.java | 4 +- .../blocks/tiles/TileEntityFurnaceHeater.java | 4 +- .../blocks/tiles/TileEntityNatureAltar.java | 4 +- .../blocks/tiles/TileEntityRFConverter.java | 4 +- .../blocks/tiles/TileEntitySnowCreator.java | 4 +- .../blocks/tiles/TileEntitySpring.java | 4 +- .../blocks/tiles/TileEntityTimeChanger.java | 4 +- .../tiles/render/RenderOfferingTable.java | 4 +- .../ellpeck/naturesaura/chunk/AuraChunk.java | 80 +++---- .../chunk/effect/AnimalEffect.java | 6 +- .../chunk/effect/BreathlessEffect.java | 4 +- .../chunk/effect/CacheRechargeEffect.java | 6 +- .../chunk/effect/ExplosionEffect.java | 8 +- .../chunk/effect/GrassDieEffect.java | 6 +- .../chunk/effect/NetherDecayEffect.java | 6 +- .../chunk/effect/NetherGrassEffect.java | 12 +- .../chunk/effect/OreSpawnEffect.java | 12 +- .../chunk/effect/PlantBoostEffect.java | 10 +- .../chunk/effect/ReplenishingEffect.java | 2 +- .../chunk/effect/SpreadEffect.java | 4 +- .../enchant/AuraMendingEnchantment.java | 20 +- .../naturesaura/enchant/ModEnchantment.java | 8 +- .../entities/EntityLightProjectile.java | 6 +- .../entities/EntityMoverMinecart.java | 6 +- .../entities/EntityStructureFinder.java | 18 +- .../naturesaura/events/ClientEvents.java | 18 +- .../naturesaura/gen/WorldGenAncientTree.java | 4 +- .../naturesaura/gen/WorldGenAuraBloom.java | 10 +- .../naturesaura/gui/ContainerEnderCrate.java | 37 +-- .../naturesaura/gui/ModContainers.java | 6 +- .../naturesaura/items/ItemAuraBottle.java | 86 ++++--- .../naturesaura/items/ItemCrimsonMeal.java | 4 +- .../ellpeck/naturesaura/items/ItemImpl.java | 4 +- .../naturesaura/items/ItemLootFinder.java | 2 +- .../ellpeck/naturesaura/items/ModItems.java | 3 +- .../naturesaura/items/tools/ItemAxe.java | 21 +- .../naturesaura/items/tools/ItemPickaxe.java | 54 ++--- .../naturesaura/items/tools/ItemShovel.java | 80 ++++--- .../misc/{WorldData.java => LevelData.java} | 33 ++- .../naturesaura/particles/ParticleMagic.java | 8 +- .../naturesaura/potion/PotionBreathless.java | 18 +- .../naturesaura/potion/PotionImpl.java | 8 +- .../naturesaura/recipes/AltarRecipe.java | 46 ++-- .../recipes/AnimalSpawnerRecipe.java | 44 ++-- .../naturesaura/recipes/ModRecipe.java | 15 +- .../naturesaura/recipes/ModRecipes.java | 66 +++--- .../naturesaura/recipes/OfferingRecipe.java | 43 ++-- .../naturesaura/recipes/TreeRitualRecipe.java | 43 ++-- .../naturesaura/reg/IColorProvidingItem.java | 4 +- .../ellpeck/naturesaura/reg/ModItemTier.java | 30 +-- .../ellpeck/naturesaura/reg/ModRegistry.java | 42 ++-- 71 files changed, 723 insertions(+), 751 deletions(-) rename src/main/java/de/ellpeck/naturesaura/blocks/tiles/{TileEntityAnimalContainer.java => BlockEntityAnimalContainer.java} (60%) rename src/main/java/de/ellpeck/naturesaura/blocks/tiles/{TileEntityAnimalGenerator.java => BlockEntityAnimalGenerator.java} (84%) rename src/main/java/de/ellpeck/naturesaura/blocks/tiles/{TileEntityAnimalSpawner.java => BlockEntityAnimalSpawner.java} (70%) rename src/main/java/de/ellpeck/naturesaura/blocks/tiles/{TileEntityImpl.java => BlockEntityImpl.java} (100%) rename src/main/java/de/ellpeck/naturesaura/blocks/tiles/{TileEntityWoodStand.java => BlockEntityWoodStand.java} (76%) create mode 100644 src/main/java/de/ellpeck/naturesaura/blocks/tiles/ITickableBlockEntity.java rename src/main/java/de/ellpeck/naturesaura/misc/{WorldData.java => LevelData.java} (79%) diff --git a/src/main/java/de/ellpeck/naturesaura/Helper.java b/src/main/java/de/ellpeck/naturesaura/Helper.java index cf4df498..48c95294 100644 --- a/src/main/java/de/ellpeck/naturesaura/Helper.java +++ b/src/main/java/de/ellpeck/naturesaura/Helper.java @@ -1,73 +1,63 @@ package de.ellpeck.naturesaura; -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.container.IAuraContainer; import de.ellpeck.naturesaura.api.aura.item.IAuraRecharge; import de.ellpeck.naturesaura.api.misc.ILevelData; import de.ellpeck.naturesaura.blocks.tiles.BlockEntityImpl; import de.ellpeck.naturesaura.chunk.AuraChunk; -import de.ellpeck.naturesaura.compat.Compat; import de.ellpeck.naturesaura.misc.LevelData; -import net.minecraft.advancements.Advancement; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.item.ItemFrameEntity; -import net.minecraft.entity.player.Player; -import net.minecraft.entity.player.ServerPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.nbt.INBT; -import net.minecraft.state.Property; -import net.minecraft.tileentity.BlockEntity; -import net.minecraft.util.*; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.ChunkPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.level.ILevel; -import net.minecraft.level.Level; -import net.minecraft.level.chunk.AbstractChunkProvider; -import net.minecraft.level.chunk.Chunk; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.decoration.ItemFrame; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; +import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistryEntry; -import org.apache.commons.lang3.tuple.ImmutableTriple; import org.lwjgl.opengl.GL11; -import top.theillusivec4.curios.api.CuriosApi; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.List; import java.util.Locale; -import java.util.Optional; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; public final class Helper { - public static boolean getTileEntitiesInArea(ILevel level, BlockPos pos, int radius, Function consumer) { - for (int x = pos.getX() - radius >> 4; x <= pos.getX() + radius >> 4; x++) { - for (int z = pos.getZ() - radius >> 4; z <= pos.getZ() + radius >> 4; z++) { - Chunk chunk = getLoadedChunk(level, x, z); + public static boolean getBlockEntitiesInArea(Level level, BlockPos pos, int radius, Function consumer) { + for (var x = pos.getX() - radius >> 4; x <= pos.getX() + radius >> 4; x++) { + for (var z = pos.getZ() - radius >> 4; z <= pos.getZ() + radius >> 4; z++) { + var chunk = getLoadedChunk(level, x, z); if (chunk != null) { - for (BlockPos tilePos : chunk.getTileEntitiesPos()) { - if (tilePos.distanceSq(pos) <= radius * radius) + for (var tilePos : chunk.getBlockEntitiesPos()) { + if (tilePos.distSqr(pos) <= radius * radius) if (consumer.apply(chunk.getBlockEntity(tilePos))) return true; } @@ -78,77 +68,64 @@ public final class Helper { } public static void getAuraChunksWithSpotsInArea(Level level, BlockPos pos, int radius, Consumer consumer) { - LevelData data = (LevelData) ILevelData.getLevelData(level); - for (int x = pos.getX() - radius >> 4; x <= pos.getX() + radius >> 4; x++) { - for (int z = pos.getZ() - radius >> 4; z <= pos.getZ() + radius >> 4; z++) { - AuraChunk chunk = data.auraChunksWithSpots.get(ChunkPos.asLong(x, z)); + var data = (LevelData) ILevelData.getLevelData(level); + for (var x = pos.getX() - radius >> 4; x <= pos.getX() + radius >> 4; x++) { + for (var z = pos.getZ() - radius >> 4; z <= pos.getZ() + radius >> 4; z++) { + var chunk = data.auraChunksWithSpots.get(ChunkPos.asLong(x, z)); if (chunk != null) consumer.accept(chunk); } } } - public static List getAttachedItemFrames(Level level, BlockPos pos) { - List frames = level.getEntitiesWithinAABB(ItemFrameEntity.class, new AxisAlignedBB(pos).grow(0.25)); - for (int i = frames.size() - 1; i >= 0; i--) { - ItemFrameEntity frame = frames.get(i); - BlockPos framePos = frame.getHangingPosition().offset(frame.getHorizontalFacing().getOpposite()); + public static List getAttachedItemFrames(Level level, BlockPos pos) { + var frames = level.getEntitiesOfClass(ItemFrame.class, new AABB(pos).inflate(0.25)); + for (var i = frames.size() - 1; i >= 0; i--) { + var frame = frames.get(i); + var framePos = frame.getPos().relative(frame.getDirection().getOpposite()); if (!pos.equals(framePos)) frames.remove(i); } return frames; } - public static Chunk getLoadedChunk(ILevel level, int x, int z) { + public static LevelChunk getLoadedChunk(Level level, int x, int z) { // DO NOT EDIT PLEASE FOR THE LOVE OF GOD // This is very finicky and easily causes the game to hang for some reason - AbstractChunkProvider provider = level.getChunkProvider(); - if (provider.isChunkLoaded(new ChunkPos(x, z))) + var provider = level.getChunkSource(); + if (provider.hasChunk(x, z)) return provider.getChunk(x, z, false); return null; } public static int blendColors(int c1, int c2, float ratio) { - int a = (int) ((c1 >> 24 & 0xFF) * ratio + (c2 >> 24 & 0xFF) * (1 - ratio)); - int r = (int) ((c1 >> 16 & 0xFF) * ratio + (c2 >> 16 & 0xFF) * (1 - ratio)); - int g = (int) ((c1 >> 8 & 0xFF) * ratio + (c2 >> 8 & 0xFF) * (1 - ratio)); - int b = (int) ((c1 & 0xFF) * ratio + (c2 & 0xFF) * (1 - ratio)); + var a = (int) ((c1 >> 24 & 0xFF) * ratio + (c2 >> 24 & 0xFF) * (1 - ratio)); + var r = (int) ((c1 >> 16 & 0xFF) * ratio + (c2 >> 16 & 0xFF) * (1 - ratio)); + var g = (int) ((c1 >> 8 & 0xFF) * ratio + (c2 >> 8 & 0xFF) * (1 - ratio)); + var b = (int) ((c1 & 0xFF) * ratio + (c2 & 0xFF) * (1 - ratio)); return (a & 255) << 24 | (r & 255) << 16 | (g & 255) << 8 | b & 255; } public static boolean areItemsEqual(ItemStack first, ItemStack second, boolean nbt) { - if (!ItemStack.areItemsEqual(first, second)) + if (!ItemStack.isSame(first, second)) return false; - return !nbt || ItemStack.areItemStackTagsEqual(first, second); + return !nbt || ItemStack.tagMatches(first, second); } - @OnlyIn(Dist.CLIENT) - public static void renderItemInGui(ItemStack stack, int x, int y, float scale) { - RenderSystem.pushMatrix(); - GlStateManager.enableBlend(); - GlStateManager.enableDepthTest(); - RenderSystem.enableRescaleNormal(); - RenderSystem.translatef(x, y, 0); - RenderSystem.scalef(scale, scale, scale); - Minecraft.getInstance().getItemRenderer().renderItemAndEffectIntoGUI(stack, 0, 0); - Minecraft.getInstance().getItemRenderer().renderItemOverlayIntoGUI(Minecraft.getInstance().fontRenderer, stack, 0, 0, null); - RenderSystem.popMatrix(); - } - - public static InteractionResult putStackOnTile(Player player, Hand hand, BlockPos pos, int slot, boolean sound) { - BlockEntity tile = player.level.getBlockEntity(pos); + public static InteractionResult putStackOnTile(Player player, InteractionHand hand, BlockPos pos, int slot, boolean sound) { + var tile = player.level.getBlockEntity(pos); if (tile instanceof BlockEntityImpl) { - IItemHandlerModifiable handler = ((BlockEntityImpl) tile).getItemHandler(); + var handler = ((BlockEntityImpl) tile).getItemHandler(); if (handler != null) { - ItemStack handStack = player.getHeldItem(hand); + var handStack = player.getItemInHand(hand); if (!handStack.isEmpty()) { - ItemStack remain = handler.insertItem(slot, handStack, player.level.isClientSide); - if (!ItemStack.areItemStacksEqual(remain, handStack)) { + var remain = handler.insertItem(slot, handStack, player.level.isClientSide); + if (!ItemStack.isSame(remain, handStack)) { if (sound) player.level.playSound(player, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, - SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, SoundCategory.PLAYERS, 0.75F, 1F); + SoundEvents.ITEM_FRAME_ADD_ITEM, SoundSource.PLAYERS, 0.75F, 1F); if (!player.level.isClientSide) - player.setHeldItem(hand, remain); + player.setItemInHand(hand, remain); return InteractionResult.SUCCESS; } } @@ -156,12 +133,12 @@ public final class Helper { if (!handler.getStackInSlot(slot).isEmpty()) { if (sound) player.level.playSound(player, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, - SoundEvents.ENTITY_ITEM_FRAME_REMOVE_ITEM, SoundCategory.PLAYERS, 0.75F, 1F); + SoundEvents.ITEM_FRAME_REMOVE_ITEM, SoundSource.PLAYERS, 0.75F, 1F); if (!player.level.isClientSide) { - ItemStack stack = handler.getStackInSlot(slot); - if (!player.addItemStackToInventory(stack)) { - ItemEntity item = new ItemEntity(player.level, player.getPosX(), player.getPosY(), player.getPosZ(), stack); - player.level.addEntity(item); + var stack = handler.getStackInSlot(slot); + if (!player.addItem(stack)) { + var item = new ItemEntity(player.level, player.getX(), player.getY(), player.getZ(), stack); + player.level.addFreshEntity(item); } handler.setStackInSlot(slot, ItemStack.EMPTY); } @@ -191,8 +168,8 @@ public final class Helper { } public static boolean rechargeAuraItem(ItemStack stack, IAuraContainer container, int toDrain) { - if (stack.getDamage() > 0 && container.drainAura(toDrain, true) >= toDrain) { - stack.setDamage(stack.getDamage() - 1); + if (stack.getDamageValue() > 0 && container.drainAura(toDrain, true) >= toDrain) { + stack.setDamageValue(stack.getDamageValue() - 1); container.drainAura(toDrain, false); return true; } @@ -200,15 +177,15 @@ public final class Helper { } public static BlockState getStateFromString(String raw) { - String[] split = raw.split("\\["); - Block block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(split[0])); + var split = raw.split("\\["); + var block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(split[0])); if (block != null) { - BlockState state = block.getDefaultState(); + var state = block.defaultBlockState(); if (split.length > 1) { - for (String part : split[1].replace("]", "").split(",")) { - String[] keyValue = part.split("="); - for (Property prop : state.getProperties()) { - BlockState changed = findProperty(state, prop, keyValue[0], keyValue[1]); + for (var part : split[1].replace("]", "").split(",")) { + var keyValue = part.split("="); + for (var prop : state.getProperties()) { + var changed = findProperty(state, prop, keyValue[0], keyValue[1]); if (changed != null) { state = changed; break; @@ -223,39 +200,23 @@ public final class Helper { private static > BlockState findProperty(BlockState state, Property prop, String key, String newValue) { if (key.equals(prop.getName())) - for (T value : prop.getAllowedValues()) + for (var value : prop.getPossibleValues()) if (prop.getName(value).equals(newValue)) - return state.with(prop, value); + return state.setValue(prop, value); return null; } - public static void registerCap(Class type) { - CapabilityManager.INSTANCE.register(type, new Capability.IStorage() { - @Override - public void readNBT(Capability capability, T instance, Direction side, INBT nbt) { - - } - - @Nullable - @Override - public INBT writeNBT(Capability capability, Object instance, Direction side) { - return null; - } - }, () -> null); - } - public static void addAdvancement(Player player, ResourceLocation advancement, String criterion) { - if (!(player instanceof ServerPlayer)) + if (!(player instanceof ServerPlayer playerMp)) return; - ServerPlayer playerMp = (ServerPlayer) player; - Advancement adv = playerMp.getServerLevel().getServer().getAdvancementManager().getAdvancement(advancement); + var adv = playerMp.getLevel().getServer().getAdvancements().getAdvancement(advancement); if (adv != null) - playerMp.getAdvancements().grantCriterion(adv, criterion); + playerMp.getAdvancements().award(adv, criterion); } public static int getIngredientAmount(Ingredient ingredient) { - int highestAmount = 0; - for (ItemStack stack : ingredient.getMatchingStacks()) + var highestAmount = 0; + for (var stack : ingredient.getItems()) if (stack.getCount() > highestAmount) highestAmount = stack.getCount(); return highestAmount; @@ -290,8 +251,8 @@ public final class Helper { } public static boolean isHoldingItem(Player player, Item item) { - for (Hand hand : Hand.values()) { - ItemStack stack = player.getHeldItem(hand); + for (var hand : InteractionHand.values()) { + var stack = player.getItemInHand(hand); if (!stack.isEmpty() && stack.getItem() == item) return true; } @@ -299,22 +260,22 @@ public final class Helper { } public static boolean isEmpty(IItemHandler handler) { - for (int i = 0; i < handler.getSlots(); i++) + for (var i = 0; i < handler.getSlots(); i++) if (!handler.getStackInSlot(i).isEmpty()) return false; return true; } - public static AxisAlignedBB aabb(Vector3d pos) { - return new AxisAlignedBB(pos.x, pos.y, pos.z, pos.x, pos.y, pos.z); + public static AABB aabb(Vec3 pos) { + return new AABB(pos.x, pos.y, pos.z, pos.x, pos.y, pos.z); } - // This is how @ObjectHolder _SHOULD_ work... - public static > void populateObjectHolders(Class clazz, IForgeRegistry registry) { - for (Field entry : clazz.getFields()) { + // This is how @ObjectHolder SHOULD work... + public static > void populateObjectHolders(Class clazz, IForgeRegistry registry) { + for (var entry : clazz.getFields()) { if (!Modifier.isStatic(entry.getModifiers())) continue; - ResourceLocation location = new ResourceLocation(NaturesAura.MOD_ID, entry.getName().toLowerCase(Locale.ROOT)); + var location = new ResourceLocation(NaturesAura.MOD_ID, entry.getName().toLowerCase(Locale.ROOT)); if (!registry.containsKey(location)) { NaturesAura.LOGGER.fatal("Couldn't find entry named " + location + " in registry " + registry.getRegistryName()); continue; @@ -328,13 +289,14 @@ public final class Helper { } public static ItemStack getEquippedItem(Predicate predicate, Player player) { - if (Compat.hasCompat("curios")) { + // TODO Curios +/* if (Compat.hasCompat("curios")) { Optional stack = CuriosApi.getCuriosHelper().findEquippedCurio(predicate, player).map(ImmutableTriple::getRight); if (stack.isPresent()) return stack.get(); - } - for (int i = 0; i < player.inventory.getSizeInventory(); i++) { - ItemStack slot = player.inventory.getStackInSlot(i); + }*/ + for (var i = 0; i < player.getInventory().getContainerSize(); i++) { + var slot = player.getInventory().getItem(i); if (!slot.isEmpty() && predicate.test(slot)) return slot; } diff --git a/src/main/java/de/ellpeck/naturesaura/NaturesAura.java b/src/main/java/de/ellpeck/naturesaura/NaturesAura.java index 5af10c78..3dd1a665 100644 --- a/src/main/java/de/ellpeck/naturesaura/NaturesAura.java +++ b/src/main/java/de/ellpeck/naturesaura/NaturesAura.java @@ -17,11 +17,10 @@ import de.ellpeck.naturesaura.proxy.IProxy; import de.ellpeck.naturesaura.proxy.ServerProxy; import de.ellpeck.naturesaura.recipes.ModRecipes; import de.ellpeck.naturesaura.reg.ModRegistry; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.DeferredWorkQueue; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; @@ -37,9 +36,9 @@ public final class NaturesAura { public static final String MOD_NAME = "Nature's Aura"; public static final Logger LOGGER = LogManager.getLogger(MOD_NAME); - public static final ItemGroup CREATIVE_TAB = new ItemGroup(MOD_ID) { + public static final CreativeModeTab CREATIVE_TAB = new CreativeModeTab(MOD_ID) { @Override - public ItemStack createIcon() { + public ItemStack makeIcon() { return new ItemStack(ModItems.GOLD_LEAF); } }; diff --git a/src/main/java/de/ellpeck/naturesaura/api/misc/WeightedOre.java b/src/main/java/de/ellpeck/naturesaura/api/misc/WeightedOre.java index 5db91f31..be74340c 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/misc/WeightedOre.java +++ b/src/main/java/de/ellpeck/naturesaura/api/misc/WeightedOre.java @@ -1,9 +1,9 @@ package de.ellpeck.naturesaura.api.misc; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.WeightedRandom; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.random.WeightedEntry; -public class WeightedOre extends WeightedRandom.Item { +public class WeightedOre extends WeightedEntry.IntrusiveBase { public final ResourceLocation tag; diff --git a/src/main/java/de/ellpeck/naturesaura/api/multiblock/Matcher.java b/src/main/java/de/ellpeck/naturesaura/api/multiblock/Matcher.java index 67a47748..5a90780a 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/multiblock/Matcher.java +++ b/src/main/java/de/ellpeck/naturesaura/api/multiblock/Matcher.java @@ -1,11 +1,11 @@ package de.ellpeck.naturesaura.api.multiblock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.tags.ITag; -import net.minecraft.util.math.BlockPos; -import net.minecraft.level.Level; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.Tag; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; public class Matcher { @@ -18,11 +18,11 @@ public class Matcher { } public static Matcher wildcard() { - return new Matcher(Blocks.AIR.getDefaultState(), null); + return new Matcher(Blocks.AIR.defaultBlockState(), null); } - public static Matcher tag(Block defaultBlock, ITag.INamedTag tag) { - return new Matcher(defaultBlock.getDefaultState(), (level, start, offset, pos, state, c) -> state.getBlock().getTags().contains(tag.getName())); + public static Matcher tag(Block defaultBlock, Tag.Named tag) { + return new Matcher(defaultBlock.defaultBlockState(), (level, start, offset, pos, state, c) -> state.getBlock().getTags().contains(tag.getName())); } public BlockState getDefaultState() { @@ -34,6 +34,7 @@ public class Matcher { } public interface ICheck { + boolean matches(Level level, BlockPos start, BlockPos offset, BlockPos pos, BlockState state, char c); } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalGenerator.java index 78754c0a..92f899ca 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalGenerator.java @@ -17,7 +17,7 @@ import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -51,7 +51,7 @@ public class BlockAnimalGenerator extends BlockContainerImpl implements IVisuali if (entity.level.isClientSide || !(entity instanceof AnimalEntity) || entity instanceof IMob || entity instanceof INPC) return; BlockPos pos = entity.getPosition(); - Helper.getTileEntitiesInArea(entity.level, pos, 5, tile -> { + Helper.getBlockEntitiesInArea(entity.level, pos, 5, tile -> { if (!(tile instanceof BlockEntityAnimalGenerator)) return false; BlockEntityAnimalGenerator gen = (BlockEntityAnimalGenerator) tile; @@ -67,8 +67,8 @@ public class BlockAnimalGenerator extends BlockContainerImpl implements IVisuali float amountMod = child ? 0.667F : 1; int timeAlive = data.getInt(NaturesAura.MOD_ID + ":time_alive"); - int time = Math.min(MathHelper.floor((timeAlive - 15000) / 500F * timeMod), 200); - int amount = Math.min(MathHelper.floor((timeAlive - 8000) / 2F * amountMod), 25000); + int time = Math.min(Mth.floor((timeAlive - 15000) / 500F * timeMod), 200); + int amount = Math.min(Mth.floor((timeAlive - 8000) / 2F * amountMod), 25000); if (time <= 0 || amount <= 0) return false; gen.setGenerationValues(time, amount); diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java index eebf2a30..a13e6d54 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java @@ -15,7 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.BlockEntity; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.util.text.ITextComponent; @@ -68,7 +68,7 @@ public class BlockChunkLoader extends BlockContainerImpl implements IVisualizabl BlockEntity tile = levelIn.getBlockEntity(pos); if (tile instanceof BlockEntityChunkLoader) { int range = ((BlockEntityChunkLoader) tile).range(); - for (int i = MathHelper.ceil(range / 8F); i > 0; i--) { + for (int i = Mth.ceil(range / 8F); i > 0; i--) { NaturesAuraAPI.instance().spawnMagicParticle( pos.getX() + levelIn.rand.nextFloat(), pos.getY() + levelIn.rand.nextFloat(), pos.getZ() + levelIn.rand.nextFloat(), 0, 0, 0, 0xa12dff, 1F + levelIn.rand.nextFloat(), 100, 0, false, true); diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java index 8fa1d3c4..02cdb313 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java @@ -19,7 +19,7 @@ import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.util.math.shapes.IBooleanFunction; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; @@ -135,7 +135,7 @@ public class BlockGratedChute extends BlockContainerImpl implements ICustomBlock ItemStack stack = handler.getStackInSlot(0); if (stack.isEmpty()) return 0; - return MathHelper.ceil(stack.getCount() / (float) stack.getMaxStackSize() * 15); + return Mth.ceil(stack.getCount() / (float) stack.getMaxStackSize() * 15); } else return 0; } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java index e1867dc3..8ef4eca6 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java @@ -36,7 +36,7 @@ public class BlockOakGenerator extends BlockContainerImpl implements IVisualizab BlockPos pos = event.getPos(); if (level instanceof Level && !level.isClientSide() && IAuraType.forLevel(level).isSimilar(NaturesAuraAPI.TYPE_OVERWORLD) && level.getBlockState(pos).getBlock() instanceof SaplingBlock) { - Helper.getTileEntitiesInArea(level, pos, 10, tile -> { + Helper.getBlockEntitiesInArea(level, pos, 10, tile -> { if (!(tile instanceof BlockEntityOakGenerator)) return false; diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java index 8db8dd79..ef5627ed 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java @@ -34,7 +34,7 @@ public class BlockPickupStopper extends BlockContainerImpl implements IVisualiza if (player != null && !player.isSneaking()) { ItemEntity item = event.getItem(); BlockPos pos = item.getPosition(); - Helper.getTileEntitiesInArea(item.level, pos, 8, tile -> { + Helper.getBlockEntitiesInArea(item.level, pos, 8, tile -> { if (!(tile instanceof BlockEntityPickupStopper)) return false; BlockEntityPickupStopper stopper = (BlockEntityPickupStopper) tile; diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockSlimeSplitGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockSlimeSplitGenerator.java index 706674b3..4a91b581 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockSlimeSplitGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockSlimeSplitGenerator.java @@ -54,7 +54,7 @@ public class BlockSlimeSplitGenerator extends BlockContainerImpl implements IVis int size = slime.getSlimeSize(); if (size <= 1) return; - Helper.getTileEntitiesInArea(entity.level, entity.getPosition(), 8, tile -> { + Helper.getBlockEntitiesInArea(entity.level, entity.getPosition(), 8, tile -> { if (!(tile instanceof BlockEntitySlimeSplitGenerator)) return false; BlockEntitySlimeSplitGenerator gen = (BlockEntitySlimeSplitGenerator) tile; diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/multi/Multiblocks.java b/src/main/java/de/ellpeck/naturesaura/blocks/multi/Multiblocks.java index aa37f60a..53a61acc 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/multi/Multiblocks.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/multi/Multiblocks.java @@ -8,12 +8,12 @@ import de.ellpeck.naturesaura.blocks.BlockNatureAltar; import de.ellpeck.naturesaura.blocks.ModBlocks; import de.ellpeck.naturesaura.data.BlockTagProvider; import de.ellpeck.naturesaura.recipes.ModRecipes; -import net.minecraft.block.Blocks; -import net.minecraft.block.SaplingBlock; -import net.minecraft.block.material.Material; -import net.minecraft.item.ItemStack; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; -import net.minecraft.util.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SaplingBlock; +import net.minecraft.world.level.material.Material; public final class Multiblocks { @@ -38,23 +38,23 @@ public final class Multiblocks { 'B', Blocks.NETHER_BRICKS, 'W', Matcher.tag(Blocks.CRIMSON_PLANKS, BlockTagProvider.NETHER_ALTAR_WOOD), 'M', ModBlocks.GOLD_NETHER_BRICK, - '0', ModBlocks.NATURE_ALTAR.getDefaultState().with(BlockNatureAltar.NETHER, true), + '0', ModBlocks.NATURE_ALTAR.defaultBlockState().setValue(BlockNatureAltar.NETHER, true), ' ', Matcher.wildcard()); public static final IMultiblock TREE_RITUAL = NaturesAuraAPI.instance().createMultiblock( new ResourceLocation(NaturesAura.MOD_ID, "tree_ritual"), new String[][]{ {" W ", " W W ", " GGG ", " GG GG ", "W G 0 G W", " GG GG ", " GGG ", " W W ", " W "}}, - 'W', new Matcher(ModBlocks.WOOD_STAND.getDefaultState(), + 'W', new Matcher(ModBlocks.WOOD_STAND.defaultBlockState(), (level, start, offset, pos, state, c) -> level != null || state.getBlock() == ModBlocks.WOOD_STAND), 'G', ModBlocks.GOLD_POWDER, - '0', new Matcher(Blocks.OAK_SAPLING.getDefaultState(), + '0', new Matcher(Blocks.OAK_SAPLING.defaultBlockState(), (level, start, offset, pos, state, c) -> { if (state.getBlock() instanceof SaplingBlock || state.getMaterial() == Material.WOOD) return true; // try-catch to prevent blocks that need to have been placed crashing here try { - ItemStack stack = state.getBlock().getItem(level, pos, state); - return !stack.isEmpty() && level.getRecipeManager().getRecipes(ModRecipes.TREE_RITUAL_TYPE, null, null).stream().anyMatch(r -> r.saplingType.test(stack)); + ItemStack stack = state.getBlock().getCloneItemStack(level, pos, state); + return !stack.isEmpty() && level.getRecipeManager().getRecipesFor(ModRecipes.TREE_RITUAL_TYPE, null, null).stream().anyMatch(r -> r.saplingType.test(stack)); } catch (Exception e) { return false; } @@ -76,7 +76,7 @@ public final class Multiblocks { new ResourceLocation(NaturesAura.MOD_ID, "offering_table"), new String[][]{ {" RRRRR ", " R R ", "R RRR R", "R R R R", "R R 0 R R", "R R R R", "R RRR R", " R R ", " RRRRR "}}, - 'R', new Matcher(Blocks.POPPY.getDefaultState(), + 'R', new Matcher(Blocks.POPPY.defaultBlockState(), (level, start, offset, pos, state, c) -> BlockTags.SMALL_FLOWERS.contains(state.getBlock())), '0', ModBlocks.OFFERING_TABLE, ' ', Matcher.wildcard()); diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalContainer.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityAnimalContainer.java similarity index 60% rename from src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalContainer.java rename to src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityAnimalContainer.java index b3bfea6e..9b08e1c0 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalContainer.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityAnimalContainer.java @@ -3,16 +3,11 @@ package de.ellpeck.naturesaura.blocks.tiles; import de.ellpeck.naturesaura.packet.PacketHandler; import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.core.BlockPos; -import net.minecraft.entity.passive.Animal; -import net.minecraft.tileentity.ITickableBlockEntity; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.vector.Vector3d; import net.minecraft.world.entity.animal.Animal; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; import java.util.HashSet; -import java.util.List; import java.util.Set; public class BlockEntityAnimalContainer extends BlockEntityImpl implements ITickableBlockEntity { @@ -35,19 +30,19 @@ public class BlockEntityAnimalContainer extends BlockEntityImpl implements ITick public void tick() { if (this.level.isClientSide) return; - int radius = this.getRadius(); - Set animalsInRange = new HashSet<>(this.level.getEntitiesWithinAABB(Animal.class, new AxisAlignedBB(this.worldPosition).grow(radius - 1))); - List animalsOutRange = this.level.getEntitiesWithinAABB(Animal.class, new AxisAlignedBB(this.worldPosition).grow(radius + 1)); - for (Animal animal : animalsOutRange) { + var radius = this.getRadius(); + Set animalsInRange = new HashSet<>(this.level.getEntitiesOfClass(Animal.class, new AABB(this.worldPosition).inflate(radius - 1))); + var animalsOutRange = this.level.getEntitiesOfClass(Animal.class, new AABB(this.worldPosition).inflate(radius + 1)); + for (var animal : animalsOutRange) { if (animalsInRange.contains(animal)) continue; - Vec3 pos = animal.position(); - Vec3 distance = pos.subtract(this.worldPosition.getX(), pos.y, this.worldPosition.getZ()); + var pos = animal.position(); + var distance = pos.subtract(this.worldPosition.getX(), pos.y, this.worldPosition.getZ()); distance = distance.normalize().scale(-0.15F); - animal.setMotion(distance); + animal.setDeltaMovement(distance); - if (this.level.rand.nextBoolean()) { - Vec3 eye = animal.getEyePosition(1).add(animal.getLookAngle()); + if (this.level.random.nextBoolean()) { + var eye = animal.getEyePosition(1).add(animal.getLookAngle()); PacketHandler.sendToAllAround(this.level, this.worldPosition, 32, new PacketParticles((float) eye.x, (float) eye.y, (float) eye.z, PacketParticles.Type.ANIMAL_CONTAINER)); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityAnimalGenerator.java similarity index 84% rename from src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalGenerator.java rename to src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityAnimalGenerator.java index 527e1a59..e6bf2024 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityAnimalGenerator.java @@ -1,18 +1,17 @@ package de.ellpeck.naturesaura.blocks.tiles; -import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.packet.PacketHandler; import de.ellpeck.naturesaura.packet.PacketParticles; -import net.minecraft.tileentity.ITickableBlockEntity; -import net.minecraft.util.math.BlockPos; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; public class BlockEntityAnimalGenerator extends BlockEntityImpl implements ITickableBlockEntity { private int timeRemaining; private int amountToRelease; - public BlockEntityAnimalGenerator() { - super(ModTileEntities.ANIMAL_GENERATOR); + public BlockEntityAnimalGenerator(BlockPos pos, BlockState state) { + super(ModTileEntities.ANIMAL_GENERATOR, pos, state); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalSpawner.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityAnimalSpawner.java similarity index 70% rename from src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalSpawner.java rename to src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityAnimalSpawner.java index 5bf61d35..68127b4e 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalSpawner.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityAnimalSpawner.java @@ -9,16 +9,16 @@ import de.ellpeck.naturesaura.packet.PacketHandler; import de.ellpeck.naturesaura.packet.PacketParticles; import de.ellpeck.naturesaura.recipes.AnimalSpawnerRecipe; import de.ellpeck.naturesaura.recipes.ModRecipes; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; -import net.minecraft.tileentity.ITickableBlockEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; import java.util.ArrayList; import java.util.Arrays; @@ -32,8 +32,8 @@ public class BlockEntityAnimalSpawner extends BlockEntityImpl implements ITickab private int time; private Entity entityClient; - public BlockEntityAnimalSpawner() { - super(ModTileEntities.ANIMAL_SPAWNER); + public BlockEntityAnimalSpawner(BlockPos pos, BlockState state) { + super(ModTileEntities.ANIMAL_SPAWNER, pos, state); } @Override @@ -51,29 +51,29 @@ public class BlockEntityAnimalSpawner extends BlockEntityImpl implements ITickab } if (this.currentRecipe != null) { - int drain = MathHelper.ceil(this.currentRecipe.aura / (float) this.currentRecipe.time * 10F); + int drain = Mth.ceil(this.currentRecipe.aura / (float) this.currentRecipe.time * 10F); BlockPos spot = IAuraChunk.getHighestSpot(this.level, this.worldPosition, 35, this.worldPosition); IAuraChunk.getAuraChunk(this.level, spot).drainAura(spot, drain); this.time += 10; if (this.time >= this.currentRecipe.time) { Entity entity = this.currentRecipe.makeEntity(this.level, new BlockPos(this.spawnX, this.worldPosition.getY() + 1, this.spawnZ)); - this.level.addEntity(entity); + this.level.addFreshEntity(entity); this.currentRecipe = null; this.time = 0; this.sendToClients(); } } else { - List items = this.level.getEntitiesWithinAABB(ItemEntity.class, - new AxisAlignedBB(this.worldPosition).grow(2)); + List items = this.level.getEntitiesOfClass(ItemEntity.class, + new AABB(this.worldPosition).inflate(2)); - for (AnimalSpawnerRecipe recipe : this.level.getRecipeManager().getRecipes(ModRecipes.ANIMAL_SPAWNER_TYPE, null, null)) { + for (AnimalSpawnerRecipe recipe : this.level.getRecipeManager().getRecipesFor(ModRecipes.ANIMAL_SPAWNER_TYPE, null, null)) { if (recipe.ingredients.length != items.size()) continue; List required = new ArrayList<>(Arrays.asList(recipe.ingredients)); for (ItemEntity item : items) { - if (!item.isAlive() || item.cannotPickup()) + if (!item.isAlive() || item.hasPickUpDelay()) break; ItemStack stack = item.getItem(); if (stack.isEmpty()) @@ -89,14 +89,14 @@ public class BlockEntityAnimalSpawner extends BlockEntityImpl implements ITickab continue; for (ItemEntity item : items) { - item.remove(); + item.remove(Entity.RemovalReason.KILLED); PacketHandler.sendToAllAround(this.level, this.worldPosition, 32, - new PacketParticles((float) item.getPosX(), (float) item.getPosY(), (float) item.getPosZ(), PacketParticles.Type.ANIMAL_SPAWNER)); + new PacketParticles((float) item.getX(), (float) item.getY(), (float) item.getZ(), PacketParticles.Type.ANIMAL_SPAWNER)); } this.currentRecipe = recipe; - this.spawnX = this.worldPosition.getX() + 0.5 + this.level.rand.nextFloat() * 4 - 2; - this.spawnZ = this.worldPosition.getZ() + 0.5 + this.level.rand.nextFloat() * 4 - 2; + this.spawnX = this.worldPosition.getX() + 0.5 + this.level.random.nextFloat() * 4 - 2; + this.spawnZ = this.worldPosition.getZ() + 0.5 + this.level.random.nextFloat() * 4 - 2; this.sendToClients(); break; } @@ -110,26 +110,26 @@ public class BlockEntityAnimalSpawner extends BlockEntityImpl implements ITickab } NaturesAuraAPI.instance().spawnParticleStream( - this.worldPosition.getX() + (float) this.level.rand.nextGaussian() * 5F, - this.worldPosition.getY() + 1 + this.level.rand.nextFloat() * 5F, - this.worldPosition.getZ() + (float) this.level.rand.nextGaussian() * 5F, - this.worldPosition.getX() + this.level.rand.nextFloat(), - this.worldPosition.getY() + this.level.rand.nextFloat(), - this.worldPosition.getZ() + this.level.rand.nextFloat(), - this.level.rand.nextFloat() * 0.07F + 0.07F, + this.worldPosition.getX() + (float) this.level.random.nextGaussian() * 5F, + this.worldPosition.getY() + 1 + this.level.random.nextFloat() * 5F, + this.worldPosition.getZ() + (float) this.level.random.nextGaussian() * 5F, + this.worldPosition.getX() + this.level.random.nextFloat(), + this.worldPosition.getY() + this.level.random.nextFloat(), + this.worldPosition.getZ() + this.level.random.nextFloat(), + this.level.random.nextFloat() * 0.07F + 0.07F, IAuraType.forLevel(this.level).getColor(), - this.level.rand.nextFloat() + 0.5F); + this.level.random.nextFloat() + 0.5F); if (this.entityClient == null) { this.entityClient = this.currentRecipe.makeEntity(this.level, BlockPos.ZERO); - this.entityClient.setPosition(this.spawnX, this.worldPosition.getY() + 1, this.spawnZ); + this.entityClient.setPos(this.spawnX, this.worldPosition.getY() + 1, this.spawnZ); } - AxisAlignedBB bounds = this.entityClient.getBoundingBox(); - for (int i = this.level.rand.nextInt(5) + 5; i >= 0; i--) + AABB bounds = this.entityClient.getBoundingBox(); + for (int i = this.level.random.nextInt(5) + 5; i >= 0; i--) NaturesAuraAPI.instance().spawnMagicParticle( - bounds.minX + this.level.rand.nextFloat() * (bounds.maxX - bounds.minX), - bounds.minY + this.level.rand.nextFloat() * (bounds.maxY - bounds.minY), - bounds.minZ + this.level.rand.nextFloat() * (bounds.maxZ - bounds.minZ), + bounds.minX + this.level.random.nextFloat() * (bounds.maxX - bounds.minX), + bounds.minY + this.level.random.nextFloat() * (bounds.maxY - bounds.minY), + bounds.minZ + this.level.random.nextFloat() * (bounds.maxZ - bounds.minZ), 0F, 0F, 0F, 0x2fd8d3, 2F, 60, 0F, false, true); } } @@ -154,7 +154,7 @@ public class BlockEntityAnimalSpawner extends BlockEntityImpl implements ITickab if (compound.contains("recipe")) { if (this.hasLevel()) { ResourceLocation name = new ResourceLocation(compound.getString("recipe")); - this.currentRecipe = (AnimalSpawnerRecipe) this.level.getRecipeManager().getRecipe(name).orElse(null); + this.currentRecipe = (AnimalSpawnerRecipe) this.level.getRecipeManager().byKey(name).orElse(null); } this.spawnX = compound.getDouble("spawn_x"); this.spawnZ = compound.getDouble("spawn_z"); diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityImpl.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityImpl.java similarity index 100% rename from src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityImpl.java rename to src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityImpl.java diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityWoodStand.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityWoodStand.java similarity index 76% rename from src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityWoodStand.java rename to src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityWoodStand.java index d52262d2..5ca6203a 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityWoodStand.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityWoodStand.java @@ -5,21 +5,20 @@ import de.ellpeck.naturesaura.packet.PacketHandler; import de.ellpeck.naturesaura.packet.PacketParticleStream; import de.ellpeck.naturesaura.packet.PacketParticles; import de.ellpeck.naturesaura.recipes.TreeRitualRecipe; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.LeavesBlock; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; import net.minecraft.tags.BlockTags; -import net.minecraft.tileentity.ITickableBlockEntity; -import net.minecraft.tileentity.BlockEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.level.Level; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.LeavesBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemStackHandler; @@ -40,8 +39,8 @@ public class BlockEntityWoodStand extends BlockEntityImpl implements ITickableBl private BlockPos ritualPos; private int timer; - public BlockEntityWoodStand() { - super(ModTileEntities.WOOD_STAND); + public BlockEntityWoodStand(BlockPos pos, BlockState state) { + super(ModTileEntities.WOOD_STAND, pos, state); } public void setRitual(BlockPos pos, TreeRitualRecipe recipe) { @@ -64,11 +63,11 @@ public class BlockEntityWoodStand extends BlockEntityImpl implements ITickableBl BlockEntity tile = this.level.getBlockEntity(pos); if (tile instanceof BlockEntityWoodStand && !((BlockEntityWoodStand) tile).items.getStackInSlot(0).isEmpty()) { PacketHandler.sendToAllAround(this.level, this.worldPosition, 32, new PacketParticleStream( - (float) pos.getX() + 0.2F + this.level.rand.nextFloat() * 0.6F, + (float) pos.getX() + 0.2F + this.level.random.nextFloat() * 0.6F, (float) pos.getY() + 0.85F, - (float) pos.getZ() + 0.2F + this.level.rand.nextFloat() * 0.6F, - this.ritualPos.getX() + 0.5F, this.ritualPos.getY() + this.level.rand.nextFloat() * 3F + 2F, this.ritualPos.getZ() + 0.5F, - this.level.rand.nextFloat() * 0.04F + 0.04F, 0x89cc37, this.level.rand.nextFloat() * 1F + 1F + (float) pos.getZ() + 0.2F + this.level.random.nextFloat() * 0.6F, + this.ritualPos.getX() + 0.5F, this.ritualPos.getY() + this.level.random.nextFloat() * 3F + 2F, this.ritualPos.getZ() + 0.5F, + this.level.random.nextFloat() * 0.04F + 0.04F, 0x89cc37, this.level.random.nextFloat() + 1F )); } return true; @@ -79,7 +78,7 @@ public class BlockEntityWoodStand extends BlockEntityImpl implements ITickableBl if (this.timer >= this.recipe.time) { Multiblocks.TREE_RITUAL.forEach(this.ritualPos, 'G', (pos, matcher) -> { - this.level.setBlockState(pos, Blocks.AIR.getDefaultState()); + this.level.setBlockAndUpdate(pos, Blocks.AIR.defaultBlockState()); return true; }); recurseTreeDestruction(this.level, this.ritualPos, this.ritualPos, true, false); @@ -87,12 +86,12 @@ public class BlockEntityWoodStand extends BlockEntityImpl implements ITickableBl ItemEntity item = new ItemEntity(this.level, this.ritualPos.getX() + 0.5, this.ritualPos.getY() + 4.5, this.ritualPos.getZ() + 0.5, this.recipe.result.copy()); - this.level.addEntity(item); + this.level.addFreshEntity(item); PacketHandler.sendToAllAround(this.level, this.worldPosition, 32, - new PacketParticles((float) item.getPosX(), (float) item.getPosY(), (float) item.getPosZ(), PacketParticles.Type.TR_SPAWN_RESULT)); + new PacketParticles((float) item.getX(), (float) item.getY(), (float) item.getZ(), PacketParticles.Type.TR_SPAWN_RESULT)); this.level.playSound(null, this.worldPosition.getX() + 0.5, this.worldPosition.getY() + 0.5, this.worldPosition.getZ() + 0.5, - SoundEvents.ENTITY_ENDERMAN_TELEPORT, SoundCategory.BLOCKS, 0.65F, 1F); + SoundEvents.ENDERMAN_TELEPORT, SoundSource.BLOCKS, 0.65F, 1F); this.ritualPos = null; this.recipe = null; @@ -100,17 +99,14 @@ public class BlockEntityWoodStand extends BlockEntityImpl implements ITickableBl } else if (isOverHalf && !wasOverHalf) { Multiblocks.TREE_RITUAL.forEach(this.ritualPos, 'W', (pos, matcher) -> { BlockEntity tile = this.level.getBlockEntity(pos); - if (tile instanceof BlockEntityWoodStand) { - BlockEntityWoodStand stand = (BlockEntityWoodStand) tile; - if (!stand.items.getStackInSlot(0).isEmpty()) { - PacketHandler.sendToAllAround(this.level, this.worldPosition, 32, - new PacketParticles(stand.pos.getX(), stand.pos.getY(), stand.pos.getZ(), PacketParticles.Type.TR_CONSUME_ITEM)); - this.level.playSound(null, stand.pos.getX() + 0.5, stand.pos.getY() + 0.5, stand.pos.getZ() + 0.5, - SoundEvents.BLOCK_WOOD_STEP, SoundCategory.BLOCKS, 0.5F, 1F); + if (tile instanceof BlockEntityWoodStand stand && !stand.items.getStackInSlot(0).isEmpty()) { + PacketHandler.sendToAllAround(this.level, this.worldPosition, 32, + new PacketParticles(stand.worldPosition.getX(), stand.worldPosition.getY(), stand.worldPosition.getZ(), PacketParticles.Type.TR_CONSUME_ITEM)); + this.level.playSound(null, stand.worldPosition.getX() + 0.5, stand.worldPosition.getY() + 0.5, stand.worldPosition.getZ() + 0.5, + SoundEvents.WOOD_STEP, SoundSource.BLOCKS, 0.5F, 1F); - stand.items.setStackInSlot(0, ItemStack.EMPTY); - stand.sendToClients(); - } + stand.items.setStackInSlot(0, ItemStack.EMPTY); + stand.sendToClients(); } return true; }); @@ -136,14 +132,14 @@ public class BlockEntityWoodStand extends BlockEntityImpl implements ITickableBl for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) { for (int z = -1; z <= 1; z++) { - BlockPos offset = pos.add(x, y, z); + BlockPos offset = pos.offset(x, y, z); BlockState state = level.getBlockState(offset); if (state.getBlock().getTags().contains(BlockTags.LOGS.getName()) || includeLeaves && state.getBlock() instanceof LeavesBlock) { if (drop) { level.destroyBlock(offset, true); } else { // in this case we don't want the particles, so we can't use destroyBlock - level.setBlockState(offset, Blocks.AIR.getDefaultState()); + level.setBlockAndUpdate(offset, Blocks.AIR.defaultBlockState()); PacketHandler.sendToAllAround(level, pos, 32, new PacketParticles(offset.getX(), offset.getY(), offset.getZ(), PacketParticles.Type.TR_DISAPPEAR)); } recurseTreeDestruction(level, offset, start, includeLeaves, drop); @@ -158,7 +154,7 @@ public class BlockEntityWoodStand extends BlockEntityImpl implements ITickableBl return false; } for (int i = 0; i < 2; i++) { - BlockState state = this.level.getBlockState(this.ritualPos.up(i)); + BlockState state = this.level.getBlockState(this.ritualPos.above(i)); if (!(state.getBlock().getTags().contains(BlockTags.LOGS.getName()))) return false; } @@ -194,7 +190,7 @@ public class BlockEntityWoodStand extends BlockEntityImpl implements ITickableBl if (type == SaveType.TILE) { if (this.ritualPos != null && this.recipe != null) { - compound.putLong("ritual_pos", this.ritualPos.toLong()); + compound.putLong("ritual_pos", this.ritualPos.asLong()); compound.putInt("timer", this.timer); compound.putString("recipe", this.recipe.name.toString()); } @@ -209,10 +205,10 @@ public class BlockEntityWoodStand extends BlockEntityImpl implements ITickableBl if (type == SaveType.TILE) { if (compound.contains("recipe")) { - this.ritualPos = BlockPos.fromLong(compound.getLong("ritual_pos")); + this.ritualPos = BlockPos.of(compound.getLong("ritual_pos")); this.timer = compound.getInt("timer"); if (this.hasLevel()) - this.recipe = (TreeRitualRecipe) this.level.getRecipeManager().getRecipe(new ResourceLocation(compound.getString("recipe"))).orElse(null); + this.recipe = (TreeRitualRecipe) this.level.getRecipeManager().byKey(new ResourceLocation(compound.getString("recipe"))).orElse(null); } } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/ITickableBlockEntity.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/ITickableBlockEntity.java new file mode 100644 index 00000000..a5b4c4d0 --- /dev/null +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/ITickableBlockEntity.java @@ -0,0 +1,7 @@ +package de.ellpeck.naturesaura.blocks.tiles; + +public interface ITickableBlockEntity { + + void tick(); + +} diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAuraDetector.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAuraDetector.java index f108f7d0..b96de5b8 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAuraDetector.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAuraDetector.java @@ -2,7 +2,7 @@ package de.ellpeck.naturesaura.blocks.tiles; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import net.minecraft.tileentity.ITickableBlockEntity; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; public class BlockEntityAuraDetector extends BlockEntityImpl implements ITickableBlockEntity { @@ -16,7 +16,7 @@ public class BlockEntityAuraDetector extends BlockEntityImpl implements ITickabl public void tick() { if (!this.level.isClientSide && this.level.getGameTime() % 20 == 0) { int totalAmount = IAuraChunk.triangulateAuraInArea(this.level, this.worldPosition, 25); - int power = MathHelper.clamp(MathHelper.ceil(totalAmount / (IAuraChunk.DEFAULT_AURA * 2F) * 15F), 0, 15); + int power = Mth.clamp(Mth.ceil(totalAmount / (IAuraChunk.DEFAULT_AURA * 2F) * 15F), 0, 15); if (this.redstonePower != power) { this.redstonePower = power; this.level.updateComparatorOutputLevel(this.worldPosition, this.getBlockState().getBlock()); diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityChunkLoader.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityChunkLoader.java index e6bb3f2e..3f2fcfb8 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityChunkLoader.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityChunkLoader.java @@ -6,7 +6,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.tileentity.ITickableBlockEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.server.ServerLevel; import java.util.ArrayList; @@ -88,7 +88,7 @@ public class BlockEntityChunkLoader extends BlockEntityImpl implements ITickable if (this.level.getGameTime() % 20 != 0) return; - int toUse = MathHelper.ceil(this.range() / 2F); + int toUse = Mth.ceil(this.range() / 2F); if (toUse > 0) { BlockPos spot = IAuraChunk.getHighestSpot(this.level, this.worldPosition, 35, this.worldPosition); IAuraChunk.getAuraChunk(this.level, spot).drainAura(spot, toUse); diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFieldCreator.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFieldCreator.java index 7fab156e..fa790c0a 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFieldCreator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFieldCreator.java @@ -17,7 +17,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.tileentity.ITickableBlockEntity; import net.minecraft.tileentity.BlockEntity; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.level.server.ServerLevel; import net.minecraftforge.common.MinecraftForge; @@ -102,12 +102,12 @@ public class BlockEntityFieldCreator extends BlockEntityImpl implements ITickabl ); double length = dist.length(); Vector3d normal = new Vector3d(dist.x / length, dist.y / length, dist.z / length); - for (float i = MathHelper.floor(length); i > 0; i -= 0.5F) { + for (float i = Mth.floor(length); i > 0; i -= 0.5F) { Vector3d scaled = normal.scale(i); BlockPos pos = connectedPos.add( - MathHelper.floor(scaled.x + 0.5F), - MathHelper.floor(scaled.y + 0.5F), - MathHelper.floor(scaled.z + 0.5F)); + Mth.floor(scaled.x + 0.5F), + Mth.floor(scaled.y + 0.5F), + Mth.floor(scaled.z + 0.5F)); if (pos.equals(this.worldPosition) || pos.equals(connectedPos)) continue; diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFireworkGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFireworkGenerator.java index 5ec8238f..bfb9e988 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFireworkGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFireworkGenerator.java @@ -15,7 +15,7 @@ import net.minecraft.tileentity.ITickableBlockEntity; import net.minecraft.util.EntityPredicates; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import java.util.ArrayList; import java.util.HashSet; @@ -97,7 +97,7 @@ public class BlockEntityFireworkGenerator extends BlockEntityImpl implements ITi } if (generateFactor > 0) { - int toAdd = MathHelper.ceil(generateFactor * 10000F); + int toAdd = Mth.ceil(generateFactor * 10000F); if (this.canGenerateRightNow(toAdd)) { this.toRelease = toAdd; this.releaseTimer = 15 * flightTime + 40; diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFurnaceHeater.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFurnaceHeater.java index c1035c40..88fc2728 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFurnaceHeater.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFurnaceHeater.java @@ -16,7 +16,7 @@ import net.minecraft.tileentity.*; import net.minecraft.util.Direction; import net.minecraft.util.IIntArray; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraftforge.fml.common.ObfuscationReflectionHelper; import java.lang.reflect.Field; @@ -71,7 +71,7 @@ public class BlockEntityFurnaceHeater extends BlockEntityImpl implements ITickab BlockPos spot = IAuraChunk.getHighestSpot(this.level, this.worldPosition, 20, this.worldPosition); IAuraChunk chunk = IAuraChunk.getAuraChunk(this.level, spot); - chunk.drainAura(spot, MathHelper.ceil((200 - burnTime) * 16.6F)); + chunk.drainAura(spot, Mth.ceil((200 - burnTime) * 16.6F)); did = true; if (this.level.getGameTime() % 15 == 0) { diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityNatureAltar.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityNatureAltar.java index 8c64abbe..40c618d3 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityNatureAltar.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityNatureAltar.java @@ -20,7 +20,7 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.items.IItemHandlerModifiable; @@ -143,7 +143,7 @@ public class BlockEntityNatureAltar extends BlockEntityImpl implements ITickable this.currentRecipe = null; this.timer = 0; } else { - int req = MathHelper.ceil(this.currentRecipe.aura / (double) this.currentRecipe.time); + int req = Mth.ceil(this.currentRecipe.aura / (double) this.currentRecipe.time); if (this.container.getStoredAura() >= req) { this.container.drainAura(req, false); diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityRFConverter.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityRFConverter.java index b698cb9d..5f35190f 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityRFConverter.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityRFConverter.java @@ -10,7 +10,7 @@ import net.minecraft.tileentity.ITickableBlockEntity; import net.minecraft.tileentity.BlockEntity; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.energy.CapabilityEnergy; @@ -78,7 +78,7 @@ public class BlockEntityRFConverter extends BlockEntityImpl implements ITickable if (aura <= IAuraChunk.DEFAULT_AURA) return; int amountToGen = Math.min(Math.min(10000, aura / 1000), emptyPart); - int amountToUse = MathHelper.ceil(amountToGen / ModConfig.instance.auraToRFRatio.get()); + int amountToUse = Mth.ceil(amountToGen / ModConfig.instance.auraToRFRatio.get()); this.storage.setEnergy(this.storage.getEnergyStored() + amountToGen); BlockPos pos = IAuraChunk.getHighestSpot(this.level, this.worldPosition, 45, this.worldPosition); diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySnowCreator.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySnowCreator.java index 2056dc11..5ea95d3d 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySnowCreator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySnowCreator.java @@ -13,7 +13,7 @@ import net.minecraft.fluid.Fluids; import net.minecraft.nbt.CompoundTag; import net.minecraft.tileentity.ITickableBlockEntity; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.gen.Heightmap; public class BlockEntitySnowCreator extends BlockEntityImpl implements ITickableBlockEntity { @@ -81,7 +81,7 @@ public class BlockEntitySnowCreator extends BlockEntityImpl implements ITickable double angle = this.level.rand.nextFloat() * Math.PI * 2; BlockPos pos = this.worldPosition.add( Math.cos(angle) * range * this.level.rand.nextFloat(), - MathHelper.nextInt(this.level.rand, range / 2, range), + Mth.nextInt(this.level.rand, range / 2, range), Math.sin(angle) * range * this.level.rand.nextFloat()); NaturesAuraAPI.instance().spawnMagicParticle( pos.getX() + this.level.rand.nextFloat(), pos.getY() + 1, pos.getZ() + this.level.rand.nextFloat(), diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySpring.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySpring.java index b43db520..63e02dc2 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySpring.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySpring.java @@ -14,7 +14,7 @@ import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundEvents; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraftforge.common.FarmlandWaterManager; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.ticket.AABBTicket; @@ -171,7 +171,7 @@ public class BlockEntitySpring extends BlockEntityImpl implements ITickableBlock public FluidStack drain(int maxDrain, IFluidHandler.FluidAction action) { int drain = Math.min(maxDrain, 1000); if (action.execute()) - BlockEntitySpring.this.consumeAura(MathHelper.ceil(drain / 2F)); + BlockEntitySpring.this.consumeAura(Mth.ceil(drain / 2F)); return new FluidStack(Fluids.WATER, drain); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityTimeChanger.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityTimeChanger.java index cb21696c..c1bbe1eb 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityTimeChanger.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityTimeChanger.java @@ -16,7 +16,7 @@ import net.minecraft.tileentity.ITickableBlockEntity; import net.minecraft.util.EntityPredicates; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.GameRules; import net.minecraft.level.server.ServerLevel; import net.minecraft.level.storage.IServerLevelInfo; @@ -74,7 +74,7 @@ public class BlockEntityTimeChanger extends BlockEntityImpl implements ITickable if (stack.isEmpty() || stack.getItem() != Items.CLOCK) continue; - int dayGoal = MathHelper.floor((frame.getRotation() / 8F) * 24000F) + 18000; + int dayGoal = Mth.floor((frame.getRotation() / 8F) * 24000F) + 18000; long current = this.level.getDayTime(); long toMove = (24000 - current % 24000 + dayGoal) % 24000; this.goalTime = current + toMove; diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderOfferingTable.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderOfferingTable.java index c21a3f29..55a3ba4d 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderOfferingTable.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderOfferingTable.java @@ -10,7 +10,7 @@ import net.minecraft.client.renderer.tileentity.BlockEntityRendererDispatcher; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.util.math.vector.Vector3f; import java.util.Random; @@ -29,7 +29,7 @@ public class RenderOfferingTable extends BlockEntityRenderer supplier : NaturesAuraAPI.DRAIN_SPOT_EFFECTS.values()) { - IDrainSpotEffect effect = supplier.get(); + for (var supplier : NaturesAuraAPI.DRAIN_SPOT_EFFECTS.values()) { + var effect = supplier.get(); if (effect.appliesHere(this.chunk, this, this.type)) this.effects.add(effect); } @@ -52,8 +48,8 @@ public class AuraChunk implements IAuraChunk { public int drainAura(BlockPos pos, int amount, boolean aimForZero, boolean simulate) { if (amount <= 0) return 0; - MutableInt spot = this.getActualDrainSpot(pos, !simulate); - int curr = spot != null ? spot.intValue() : 0; + var spot = this.getActualDrainSpot(pos, !simulate); + var curr = spot != null ? spot.intValue() : 0; if (curr < 0 && curr - amount > 0) // Underflow protection return this.drainAura(pos.above(), amount, aimForZero, simulate); if (aimForZero) { @@ -78,8 +74,8 @@ public class AuraChunk implements IAuraChunk { public int storeAura(BlockPos pos, int amount, boolean aimForZero, boolean simulate) { if (amount <= 0) return 0; - MutableInt spot = this.getActualDrainSpot(pos, !simulate); - int curr = spot != null ? spot.intValue() : 0; + var spot = this.getActualDrainSpot(pos, !simulate); + var curr = spot != null ? spot.intValue() : 0; if (curr > 0 && curr + amount < 0) // Overflow protection return this.storeAura(pos.above(), amount, aimForZero, simulate); if (aimForZero) { @@ -102,7 +98,7 @@ public class AuraChunk implements IAuraChunk { } private MutableInt getActualDrainSpot(BlockPos pos, boolean make) { - MutableInt spot = this.drainSpots.get(pos); + var spot = this.drainSpots.get(pos); if (spot == null && make) { spot = new MutableInt(); this.addDrainSpot(pos, spot); @@ -112,14 +108,14 @@ public class AuraChunk implements IAuraChunk { @Override public int getDrainSpot(BlockPos pos) { - MutableInt spot = this.getActualDrainSpot(pos, false); + var spot = this.getActualDrainSpot(pos, false); return spot == null ? 0 : spot.intValue(); } private void addDrainSpot(BlockPos pos, MutableInt spot) { - int expX = pos.getX() >> 4; - int expZ = pos.getZ() >> 4; - ChunkPos myPos = this.chunk.getPos(); + var expX = pos.getX() >> 4; + var expZ = pos.getZ() >> 4; + var myPos = this.chunk.getPos(); if (expX != myPos.x || expZ != myPos.z) throw new IllegalArgumentException("Tried to add drain spot " + pos + " to chunk at " + myPos.x + ", " + myPos.z + " when it should've been added to chunk at " + expX + ", " + expZ); @@ -128,7 +124,7 @@ public class AuraChunk implements IAuraChunk { public void setSpots(Map spots) { this.drainSpots.clear(); - for (Map.Entry entry : spots.entrySet()) + for (var entry : spots.entrySet()) this.addDrainSpot(entry.getKey(), entry.getValue()); this.addOrRemoveAsActive(); } @@ -140,23 +136,23 @@ public class AuraChunk implements IAuraChunk { @Override public void markDirty() { - this.chunk.markDirty(); + this.chunk.setUnsaved(true); this.needsSync = true; this.addOrRemoveAsActive(); } public void update() { - Level level = this.chunk.getLevel(); + var level = this.chunk.getLevel(); - for (Map.Entry entry : this.drainSpots.entrySet()) { - BlockPos pos = entry.getKey(); - MutableInt amount = entry.getValue(); - for (IDrainSpotEffect effect : this.effects) + for (var entry : this.drainSpots.entrySet()) { + var pos = entry.getKey(); + var amount = entry.getValue(); + for (var effect : this.effects) effect.update(level, this.chunk, this, pos, amount.intValue()); } if (this.needsSync) { - ChunkPos pos = this.chunk.getPos(); + var pos = this.chunk.getPos(); PacketHandler.sendToAllLoaded(level, new BlockPos(pos.x * 16, 0, pos.z * 16), this.makePacket()); @@ -165,13 +161,13 @@ public class AuraChunk implements IAuraChunk { } public PacketAuraChunk makePacket() { - ChunkPos pos = this.chunk.getPos(); + var pos = this.chunk.getPos(); return new PacketAuraChunk(pos.x, pos.z, this.drainSpots); } public void getSpotsInArea(BlockPos pos, int radius, BiConsumer consumer) { - for (Map.Entry entry : this.drainSpots.entrySet()) { - BlockPos drainPos = entry.getKey(); + for (var entry : this.drainSpots.entrySet()) { + var drainPos = entry.getKey(); if (drainPos.distSqr(pos) <= radius * radius) { consumer.accept(drainPos, entry.getValue().intValue()); } @@ -179,17 +175,17 @@ public class AuraChunk implements IAuraChunk { } public void getActiveEffectIcons(Player player, Map> icons) { - for (IDrainSpotEffect effect : this.effects) { - Tuple alreadyThere = icons.get(effect.getName()); + for (var effect : this.effects) { + var alreadyThere = icons.get(effect.getName()); if (alreadyThere != null && alreadyThere.getB()) continue; - for (Map.Entry entry : this.drainSpots.entrySet()) { - BlockPos pos = entry.getKey(); - MutableInt amount = entry.getValue(); - ActiveType state = effect.isActiveHere(player, this.chunk, this, pos, amount.intValue()); + for (var entry : this.drainSpots.entrySet()) { + var pos = entry.getKey(); + var amount = entry.getValue(); + var state = effect.isActiveHere(player, this.chunk, this, pos, amount.intValue()); if (state == ActiveType.INACTIVE) continue; - ItemStack stack = effect.getDisplayIcon(); + var stack = effect.getDisplayIcon(); if (stack.isEmpty()) continue; icons.put(effect.getName(), new Tuple<>(stack, state == ActiveType.INHIBITED)); @@ -199,15 +195,15 @@ public class AuraChunk implements IAuraChunk { @Override public CompoundTag serializeNBT() { - ListTag list = new ListTag(); - for (Map.Entry entry : this.drainSpots.entrySet()) { - CompoundTag tag = new CompoundTag(); + var list = new ListTag(); + for (var entry : this.drainSpots.entrySet()) { + var tag = new CompoundTag(); tag.putLong("pos", entry.getKey().asLong()); tag.putInt("amount", entry.getValue().intValue()); list.add(tag); } - CompoundTag compound = new CompoundTag(); + var compound = new CompoundTag(); compound.put("drain_spots", list); return compound; } @@ -215,9 +211,9 @@ public class AuraChunk implements IAuraChunk { @Override public void deserializeNBT(CompoundTag compound) { this.drainSpots.clear(); - ListTag list = compound.getList("drain_spots", 10); - for (Tag base : list) { - CompoundTag tag = (CompoundTag) base; + var list = compound.getList("drain_spots", 10); + for (var base : list) { + var tag = (CompoundTag) base; this.addDrainSpot( BlockPos.of(tag.getLong("pos")), new MutableInt(tag.getInt("amount"))); @@ -226,8 +222,8 @@ public class AuraChunk implements IAuraChunk { } private void addOrRemoveAsActive() { - long chunkPos = this.chunk.getPos().asLong(); - LevelData data = (LevelData) ILevelData.getLevelData(this.chunk.getLevel()); + var chunkPos = this.chunk.getPos().toLong(); + var data = (LevelData) ILevelData.getLevelData(this.chunk.getLevel()); if (this.drainSpots.size() > 0) { data.auraChunksWithSpots.put(chunkPos, this); } else { diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/AnimalEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/AnimalEffect.java index 3682908e..f0f2afb0 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/AnimalEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/AnimalEffect.java @@ -18,7 +18,7 @@ import net.minecraft.particles.ParticleTypes; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.Level; import net.minecraft.level.chunk.Chunk; import net.minecraftforge.fml.common.ObfuscationReflectionHelper; @@ -42,10 +42,10 @@ public class AnimalEffect implements IDrainSpotEffect { int aura = auraAndSpots.getLeft(); if (aura < 1500000) return false; - this.chance = Math.min(50, MathHelper.ceil(Math.abs(aura) / 500000F / auraAndSpots.getRight())); + this.chance = Math.min(50, Mth.ceil(Math.abs(aura) / 500000F / auraAndSpots.getRight())); if (this.chance <= 0) return false; - int dist = MathHelper.clamp(Math.abs(aura) / 150000, 5, 35); + int dist = Mth.clamp(Math.abs(aura) / 150000, 5, 35); this.bb = new AxisAlignedBB(pos).grow(dist); return true; } diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/BreathlessEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/BreathlessEffect.java index 1f5b351a..8117d798 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/BreathlessEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/BreathlessEffect.java @@ -14,7 +14,7 @@ import net.minecraft.potion.EffectInstance; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.Level; import net.minecraft.level.chunk.Chunk; @@ -36,7 +36,7 @@ public class BreathlessEffect implements IDrainSpotEffect { int dist = Math.min(Math.abs(aura) / 50000, 75); if (dist < 10) return false; - this.amp = Math.min(MathHelper.floor(Math.abs(aura) / 2500000F), 3); + this.amp = Math.min(Mth.floor(Math.abs(aura) / 2500000F), 3); this.bb = new AxisAlignedBB(pos).grow(dist); return true; } diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/CacheRechargeEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/CacheRechargeEffect.java index 5de12804..455ec4e5 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/CacheRechargeEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/CacheRechargeEffect.java @@ -12,7 +12,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.Level; import net.minecraft.level.chunk.Chunk; import org.apache.commons.lang3.tuple.Pair; @@ -33,9 +33,9 @@ public class CacheRechargeEffect implements IDrainSpotEffect { int aura = auraAndSpots.getLeft(); if (aura < 1500000) return false; - int dist = MathHelper.clamp(aura / 3500, 3, 15); + int dist = Mth.clamp(aura / 3500, 3, 15); this.bb = new AxisAlignedBB(pos).grow(dist); - this.amount = MathHelper.ceil(aura / 250F / auraAndSpots.getRight()); + this.amount = Mth.ceil(aura / 250F / auraAndSpots.getRight()); return true; } diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/ExplosionEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/ExplosionEffect.java index 20452716..652de316 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/ExplosionEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/ExplosionEffect.java @@ -10,7 +10,7 @@ import net.minecraft.entity.player.Player; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.Explosion; import net.minecraft.level.Level; import net.minecraft.level.chunk.Chunk; @@ -35,7 +35,7 @@ public class ExplosionEffect implements IDrainSpotEffect { this.strength = Math.min(Math.abs(aura) / 5000000F, 5F); if (this.strength <= 0) return false; - this.dist = MathHelper.clamp(Math.abs(aura) / 200000, 25, 100); + this.dist = Mth.clamp(Math.abs(aura) / 200000, 25, 100); return true; } @@ -60,8 +60,8 @@ public class ExplosionEffect implements IDrainSpotEffect { if (!this.calcValues(level, pos, spot)) return; - int x = MathHelper.floor(pos.getX() + level.rand.nextGaussian() * this.dist); - int z = MathHelper.floor(pos.getZ() + level.rand.nextGaussian() * this.dist); + int x = Mth.floor(pos.getX() + level.rand.nextGaussian() * this.dist); + int z = Mth.floor(pos.getZ() + level.rand.nextGaussian() * this.dist); BlockPos chosenPos = new BlockPos(x, level.getHeight(Heightmap.Type.WORLD_SURFACE, x, z), z); if (chosenPos.distanceSq(pos) <= this.dist * this.dist && level.isBlockLoaded(chosenPos)) { level.createExplosion(null, diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/GrassDieEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/GrassDieEffect.java index 653cac5f..bdb8fd5e 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/GrassDieEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/GrassDieEffect.java @@ -12,7 +12,7 @@ import net.minecraft.entity.player.Player; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.Level; import net.minecraft.level.chunk.Chunk; import org.apache.commons.lang3.tuple.Pair; @@ -29,9 +29,9 @@ public class GrassDieEffect implements IDrainSpotEffect { Pair auraAndSpots = IAuraChunk.getAuraAndSpotAmountInArea(level, pos, 50); int aura = auraAndSpots.getLeft(); if (aura < 0) { - this.amount = Math.min(300, MathHelper.ceil(Math.abs(aura) / 100000F / auraAndSpots.getRight())); + this.amount = Math.min(300, Mth.ceil(Math.abs(aura) / 100000F / auraAndSpots.getRight())); if (this.amount > 1) { - this.dist = MathHelper.clamp(Math.abs(aura) / 75000, 5, 75); + this.dist = Mth.clamp(Math.abs(aura) / 75000, 5, 75); return true; } } diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/NetherDecayEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/NetherDecayEffect.java index 0f083289..d2571b77 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/NetherDecayEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/NetherDecayEffect.java @@ -17,7 +17,7 @@ import net.minecraft.tags.BlockTags; import net.minecraft.util.Direction; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.Level; import net.minecraft.level.chunk.Chunk; import org.apache.commons.lang3.tuple.Pair; @@ -36,10 +36,10 @@ public class NetherDecayEffect implements IDrainSpotEffect { int aura = auraAndSpots.getLeft(); if (aura >= 0) return false; - this.amount = Math.min(300, MathHelper.ceil(Math.abs(aura) / 50000F / auraAndSpots.getRight())); + this.amount = Math.min(300, Mth.ceil(Math.abs(aura) / 50000F / auraAndSpots.getRight())); if (this.amount <= 1) return false; - this.dist = MathHelper.clamp(Math.abs(aura) / 50000, 5, 75); + this.dist = Mth.clamp(Math.abs(aura) / 50000, 5, 75); return true; } diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/NetherGrassEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/NetherGrassEffect.java index 8ddb3302..03d5f88c 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/NetherGrassEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/NetherGrassEffect.java @@ -16,7 +16,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.Direction; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.Level; import net.minecraft.level.chunk.Chunk; import net.minecraftforge.common.Tags; @@ -36,10 +36,10 @@ public class NetherGrassEffect implements IDrainSpotEffect { int aura = auraAndSpots.getLeft(); if (aura < 1500000) return false; - this.amount = Math.min(20, MathHelper.ceil(Math.abs(aura) / 100000F / auraAndSpots.getRight())); + this.amount = Math.min(20, Mth.ceil(Math.abs(aura) / 100000F / auraAndSpots.getRight())); if (this.amount <= 1) return false; - this.dist = MathHelper.clamp(Math.abs(aura) / 100000, 5, 35); + this.dist = Mth.clamp(Math.abs(aura) / 100000, 5, 35); return true; } @@ -66,9 +66,9 @@ public class NetherGrassEffect implements IDrainSpotEffect { if (!this.calcValues(level, pos, spot)) return; for (int i = this.amount / 2 + level.rand.nextInt(this.amount / 2); i >= 0; i--) { - int x = MathHelper.floor(pos.getX() + level.rand.nextGaussian() * this.dist); - int y = MathHelper.floor(pos.getY() + level.rand.nextGaussian() * this.dist); - int z = MathHelper.floor(pos.getZ() + level.rand.nextGaussian() * this.dist); + int x = Mth.floor(pos.getX() + level.rand.nextGaussian() * this.dist); + int y = Mth.floor(pos.getY() + level.rand.nextGaussian() * this.dist); + int z = Mth.floor(pos.getZ() + level.rand.nextGaussian() * this.dist); for (int yOff = -5; yOff <= 5; yOff++) { BlockPos goalPos = new BlockPos(x, y + yOff, z); diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/OreSpawnEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/OreSpawnEffect.java index 576b5117..fa9f4685 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/OreSpawnEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/OreSpawnEffect.java @@ -19,7 +19,7 @@ import net.minecraft.util.*; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.level.Level; import net.minecraft.level.chunk.Chunk; @@ -47,10 +47,10 @@ public class OreSpawnEffect implements IDrainSpotEffect { int aura = auraAndSpots.getLeft(); if (aura <= 2000000) return false; - this.amount = Math.min(20, MathHelper.ceil(Math.abs(aura) / 300000F / auraAndSpots.getRight())); + this.amount = Math.min(20, Mth.ceil(Math.abs(aura) / 300000F / auraAndSpots.getRight())); if (this.amount <= 0) return false; - this.dist = MathHelper.clamp(Math.abs(aura) / 150000, 5, 20); + this.dist = Mth.clamp(Math.abs(aura) / 150000, 5, 20); return true; } @@ -96,9 +96,9 @@ public class OreSpawnEffect implements IDrainSpotEffect { Tuple powder = powders.get(i % powders.size()); Vector3d powderPos = powder.getA(); int range = powder.getB(); - int x = MathHelper.floor(powderPos.x + level.rand.nextGaussian() * range); - int y = MathHelper.floor(powderPos.y + level.rand.nextGaussian() * range); - int z = MathHelper.floor(powderPos.z + level.rand.nextGaussian() * range); + int x = Mth.floor(powderPos.x + level.rand.nextGaussian() * range); + int y = Mth.floor(powderPos.y + level.rand.nextGaussian() * range); + int z = Mth.floor(powderPos.z + level.rand.nextGaussian() * range); BlockPos orePos = new BlockPos(x, y, z); if (orePos.distanceSq(powderPos.x, powderPos.y, powderPos.z, true) <= range * range && orePos.distanceSq(pos) <= this.dist * this.dist && level.isBlockLoaded(orePos)) { diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/PlantBoostEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/PlantBoostEffect.java index 1f68e314..3b83c2c9 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/PlantBoostEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/PlantBoostEffect.java @@ -14,7 +14,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.Level; import net.minecraft.level.chunk.Chunk; import net.minecraft.level.gen.Heightmap; @@ -35,10 +35,10 @@ public class PlantBoostEffect implements IDrainSpotEffect { int aura = auraAndSpots.getLeft(); if (aura < 1500000) return false; - this.amount = Math.min(45, MathHelper.ceil(Math.abs(aura) / 100000F / auraAndSpots.getRight())); + this.amount = Math.min(45, Mth.ceil(Math.abs(aura) / 100000F / auraAndSpots.getRight())); if (this.amount <= 1) return false; - this.dist = MathHelper.clamp(Math.abs(aura) / 150000, 5, 35); + this.dist = Mth.clamp(Math.abs(aura) / 150000, 5, 35); return true; } @@ -63,8 +63,8 @@ public class PlantBoostEffect implements IDrainSpotEffect { if (!this.calcValues(level, pos, spot)) return; for (int i = this.amount / 2 + level.rand.nextInt(this.amount / 2); i >= 0; i--) { - int x = MathHelper.floor(pos.getX() + (2 * level.rand.nextFloat() - 1) * this.dist); - int z = MathHelper.floor(pos.getZ() + (2 * level.rand.nextFloat() - 1) * this.dist); + int x = Mth.floor(pos.getX() + (2 * level.rand.nextFloat() - 1) * this.dist); + int z = Mth.floor(pos.getZ() + (2 * level.rand.nextFloat() - 1) * this.dist); BlockPos plantPos = new BlockPos(x, level.getHeight(Heightmap.Type.WORLD_SURFACE, x, z), z).down(); if (plantPos.distanceSq(pos) <= this.dist * this.dist && level.isBlockLoaded(plantPos)) { if (NaturesAuraAPI.instance().isEffectPowderActive(level, plantPos, NAME)) diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/ReplenishingEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/ReplenishingEffect.java index e47cebe9..8ea3d7e8 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/ReplenishingEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/ReplenishingEffect.java @@ -24,7 +24,7 @@ public class ReplenishingEffect implements IDrainSpotEffect { public void update(Level level, Chunk chunk, IAuraChunk auraChunk, BlockPos pos, Integer spot) { if (spot < 0) { List tiles = new ArrayList<>(); - Helper.getTileEntitiesInArea(level, pos, 25, tile -> { + Helper.getBlockEntitiesInArea(level, pos, 25, tile -> { IAuraContainer container = tile.getCapability(NaturesAuraAPI.capAuraContainer, null).orElse(null); if (container instanceof ISpotDrainable) tiles.add((ISpotDrainable) container); diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/SpreadEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/SpreadEffect.java index 62e50e02..071a17fa 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/SpreadEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/SpreadEffect.java @@ -7,7 +7,7 @@ import de.ellpeck.naturesaura.api.aura.type.IAuraType; import net.minecraft.util.Direction; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.Level; import net.minecraft.level.chunk.Chunk; @@ -20,7 +20,7 @@ public class SpreadEffect implements IDrainSpotEffect { if (Math.abs(spot) < 500000 || Math.abs(IAuraChunk.getAuraInArea(level, pos, 25)) < 2000000) return; boolean drain = spot > 0; - int toMove = MathHelper.ceil(Math.abs(spot) * 0.72F); + int toMove = Mth.ceil(Math.abs(spot) * 0.72F); int perSide = toMove / 6; while (toMove > 0) { BlockPos bestOffset = null; diff --git a/src/main/java/de/ellpeck/naturesaura/enchant/AuraMendingEnchantment.java b/src/main/java/de/ellpeck/naturesaura/enchant/AuraMendingEnchantment.java index eb4ac235..5633627b 100644 --- a/src/main/java/de/ellpeck/naturesaura/enchant/AuraMendingEnchantment.java +++ b/src/main/java/de/ellpeck/naturesaura/enchant/AuraMendingEnchantment.java @@ -1,26 +1,26 @@ package de.ellpeck.naturesaura.enchant; import de.ellpeck.naturesaura.api.NaturesAuraAPI; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentType; -import net.minecraft.enchantment.Enchantments; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.ItemStack; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.EnchantmentCategory; +import net.minecraft.world.item.enchantment.Enchantments; public class AuraMendingEnchantment extends ModEnchantment { public AuraMendingEnchantment() { - super("aura_mending", Rarity.RARE, EnchantmentType.BREAKABLE, EquipmentSlotType.values()); + super("aura_mending", Rarity.RARE, EnchantmentCategory.BREAKABLE, EquipmentSlot.values()); } @Override - protected boolean canApplyTogether(Enchantment ench) { - return super.canApplyTogether(ench) && ench != Enchantments.MENDING; + protected boolean checkCompatibility(Enchantment ench) { + return super.checkCompatibility(ench) && ench != Enchantments.MENDING; } @Override - public boolean canApply(ItemStack stack) { - return super.canApply(stack) && !stack.getCapability(NaturesAuraAPI.capAuraRecharge).isPresent(); + public boolean canEnchant(ItemStack stack) { + return super.canEnchant(stack) && !stack.getCapability(NaturesAuraAPI.capAuraRecharge).isPresent(); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/enchant/ModEnchantment.java b/src/main/java/de/ellpeck/naturesaura/enchant/ModEnchantment.java index 1f14d47d..375c9d18 100644 --- a/src/main/java/de/ellpeck/naturesaura/enchant/ModEnchantment.java +++ b/src/main/java/de/ellpeck/naturesaura/enchant/ModEnchantment.java @@ -2,15 +2,15 @@ package de.ellpeck.naturesaura.enchant; import de.ellpeck.naturesaura.reg.IModItem; import de.ellpeck.naturesaura.reg.ModRegistry; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentType; -import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.EnchantmentCategory; public class ModEnchantment extends Enchantment implements IModItem { private final String name; - protected ModEnchantment(String name, Rarity rarityIn, EnchantmentType typeIn, EquipmentSlotType[] slots) { + protected ModEnchantment(String name, Rarity rarityIn, EnchantmentCategory typeIn, EquipmentSlot[] slots) { super(rarityIn, typeIn, slots); this.name = name; ModRegistry.add(this); diff --git a/src/main/java/de/ellpeck/naturesaura/entities/EntityLightProjectile.java b/src/main/java/de/ellpeck/naturesaura/entities/EntityLightProjectile.java index ef6dbe1e..bcf30ef3 100644 --- a/src/main/java/de/ellpeck/naturesaura/entities/EntityLightProjectile.java +++ b/src/main/java/de/ellpeck/naturesaura/entities/EntityLightProjectile.java @@ -27,9 +27,9 @@ public class EntityLightProjectile extends ThrowableEntity { if (this.level.isClientSide && this.ticksExisted > 1) { for (float i = 0; i <= 1; i += 0.2F) { NaturesAuraAPI.instance().spawnMagicParticle( - MathHelper.lerp(i, this.prevPosX, this.getPosX()), - MathHelper.lerp(i, this.prevPosY, this.getPosY()), - MathHelper.lerp(i, this.prevPosZ, this.getPosZ()), + Mth.lerp(i, this.prevPosX, this.getPosX()), + Mth.lerp(i, this.prevPosY, this.getPosY()), + Mth.lerp(i, this.prevPosZ, this.getPosZ()), this.rand.nextGaussian() * 0.01F, this.rand.nextGaussian() * 0.01F, this.rand.nextGaussian() * 0.01F, 0xffcb5c, this.rand.nextFloat() * 0.5F + 1, 20, 0, false, true); } diff --git a/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java b/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java index 8d093396..724f541d 100644 --- a/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java +++ b/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java @@ -17,7 +17,7 @@ import net.minecraft.nbt.LongNBT; import net.minecraft.network.IPacket; import net.minecraft.util.DamageSource; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.level.GameRules; @@ -55,7 +55,7 @@ public class EntityMoverMinecart extends AbstractMinecartEntity { if (!this.spotOffsets.isEmpty() && this.level.getGameTime() % 10 == 0) PacketHandler.sendToAllAround(this.level, pos, 32, new PacketParticles( (float) this.getPosX(), (float) this.getPosY(), (float) this.getPosZ(), PacketParticles.Type.MOVER_CART, - MathHelper.floor(this.getMotion().getX() * 100F), MathHelper.floor(this.getMotion().getY() * 100F), MathHelper.floor(this.getMotion().getZ() * 100F))); + Mth.floor(this.getMotion().getX() * 100F), Mth.floor(this.getMotion().getY() * 100F), Mth.floor(this.getMotion().getZ() * 100F))); if (pos.distanceSq(this.lastPosition) < 8 * 8) return; @@ -75,7 +75,7 @@ public class EntityMoverMinecart extends AbstractMinecartEntity { int drained = chunk.drainAura(spot, toMove, false, false); if (drained <= 0) continue; - int toLose = MathHelper.ceil(drained / 250F); + int toLose = Mth.ceil(drained / 250F); BlockPos newSpot = newPos.add(offset); IAuraChunk.getAuraChunk(newLevel, newSpot).storeAura(newSpot, drained - toLose, false, false); } diff --git a/src/main/java/de/ellpeck/naturesaura/entities/EntityStructureFinder.java b/src/main/java/de/ellpeck/naturesaura/entities/EntityStructureFinder.java index aa5d12b2..1115e63e 100644 --- a/src/main/java/de/ellpeck/naturesaura/entities/EntityStructureFinder.java +++ b/src/main/java/de/ellpeck/naturesaura/entities/EntityStructureFinder.java @@ -14,7 +14,7 @@ import net.minecraft.network.datasync.EntityDataManager; import net.minecraft.particles.ParticleTypes; import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.level.Level; import net.minecraftforge.fml.network.NetworkHooks; @@ -58,7 +58,7 @@ public class EntityStructureFinder extends EyeOfEnderEntity { double d1 = pos.getZ(); double d2 = d0 - this.getPosX(); double d3 = d1 - this.getPosZ(); - float f = MathHelper.sqrt(d2 * d2 + d3 * d3); + float f = Mth.sqrt(d2 * d2 + d3 * d3); if (f > 12.0F) { this.targetX = this.getPosX() + d2 / (double) f * 12.0D; this.targetZ = this.getPosZ() + d3 / (double) f * 12.0D; @@ -81,9 +81,9 @@ public class EntityStructureFinder extends EyeOfEnderEntity { double d0 = this.getPosX() + vec3d.x; double d1 = this.getPosY() + vec3d.y; double d2 = this.getPosZ() + vec3d.z; - float f = MathHelper.sqrt(horizontalMag(vec3d)); - this.rotationYaw = (float) (MathHelper.atan2(vec3d.x, vec3d.z) * (double) (180F / (float) Math.PI)); - this.rotationPitch = (float) (MathHelper.atan2(vec3d.y, f) * (double) (180F / (float) Math.PI)); + float f = Mth.sqrt(horizontalMag(vec3d)); + this.rotationYaw = (float) (Mth.atan2(vec3d.x, vec3d.z) * (double) (180F / (float) Math.PI)); + this.rotationPitch = (float) (Mth.atan2(vec3d.y, f) * (double) (180F / (float) Math.PI)); while (this.rotationPitch - this.prevRotationPitch < -180.0F) this.prevRotationPitch -= 360.0F; while (this.rotationPitch - this.prevRotationPitch >= 180.0F) @@ -92,14 +92,14 @@ public class EntityStructureFinder extends EyeOfEnderEntity { this.prevRotationYaw -= 360.0F; while (this.rotationYaw - this.prevRotationYaw >= 180.0F) this.prevRotationYaw += 360.0F; - this.rotationPitch = MathHelper.lerp(0.2F, this.prevRotationPitch, this.rotationPitch); - this.rotationYaw = MathHelper.lerp(0.2F, this.prevRotationYaw, this.rotationYaw); + this.rotationPitch = Mth.lerp(0.2F, this.prevRotationPitch, this.rotationPitch); + this.rotationYaw = Mth.lerp(0.2F, this.prevRotationYaw, this.rotationYaw); if (!this.level.isClientSide) { double d3 = this.targetX - d0; double d4 = this.targetZ - d2; float f1 = (float) Math.sqrt(d3 * d3 + d4 * d4); - float f2 = (float) MathHelper.atan2(d4, d3); - double d5 = MathHelper.lerp(0.0025D, f, f1); + float f2 = (float) Mth.atan2(d4, d3); + double d5 = Mth.lerp(0.0025D, f, f1); double d6 = vec3d.y; if (f1 < 1.0F) { d5 *= 0.8D; diff --git a/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java b/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java index ee7ebaf1..5c2d4158 100644 --- a/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java +++ b/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java @@ -33,7 +33,7 @@ import net.minecraft.util.Tuple; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.util.text.TextFormatting; import net.minecraft.level.Level; @@ -109,10 +109,10 @@ public class ClientEvents { if (!mc.isGamePaused()) { if (mc.level.getGameTime() % 20 == 0) { - int amount = MathHelper.floor(190 * ModConfig.instance.excessParticleAmount.get()); + int amount = Mth.floor(190 * ModConfig.instance.excessParticleAmount.get()); for (int i = 0; i < amount; i++) { - int x = MathHelper.floor(mc.player.getPosX()) + mc.level.rand.nextInt(64) - 32; - int z = MathHelper.floor(mc.player.getPosZ()) + mc.level.rand.nextInt(64) - 32; + int x = Mth.floor(mc.player.getPosX()) + mc.level.rand.nextInt(64) - 32; + int z = Mth.floor(mc.player.getPosZ()) + mc.level.rand.nextInt(64) - 32; BlockPos pos = new BlockPos(x, mc.level.getHeight(Heightmap.Type.WORLD_SURFACE, x, z) - 1, z); BlockState state = mc.level.getBlockState(pos); Block block = state.getBlock(); @@ -262,7 +262,7 @@ public class ClientEvents { if (mc.player != null) { if (!heldCache.isEmpty()) { IAuraContainer container = heldCache.getCapability(NaturesAuraAPI.capAuraContainer, null).orElse(null); - int width = MathHelper.ceil(container.getStoredAura() / (float) container.getMaxAura() * 80); + int width = Mth.ceil(container.getStoredAura() / (float) container.getMaxAura() * 80); int conf = ModConfig.instance.cacheBarLocation.get(); int x = res.getScaledWidth() / 2 + (conf == 0 ? -173 - (mc.player.getHeldItemOffhand().isEmpty() ? 0 : 29) : 93); @@ -307,7 +307,7 @@ public class ClientEvents { float textX = conf % 2 == 0 ? 3 : res.getScaledWidth() - 3 - mc.fontRenderer.getStringWidth(text) * textScale; float textY = conf < 2 ? 3 : res.getScaledHeight() - 3 - 6; - int tHeight = MathHelper.ceil(MathHelper.clamp(totalPercentage, 0F, 1F) * 50); + int tHeight = Mth.ceil(Mth.clamp(totalPercentage, 0F, 1F) * 50); int y = !heldOcular.isEmpty() && totalPercentage > 1F ? startY + 26 : startY; if (tHeight < 50) AbstractGui.blit(stack, startX, y, 6, 12, 6, 50 - tHeight, 256, 256); @@ -315,13 +315,13 @@ public class ClientEvents { AbstractGui.blit(stack, startX, y + 50 - tHeight, 0, 12 + 50 - tHeight, 6, tHeight, 256, 256); if (!heldOcular.isEmpty()) { - int topHeight = MathHelper.ceil(MathHelper.clamp((totalPercentage - 1F) * 2F, 0F, 1F) * 25); + int topHeight = Mth.ceil(Mth.clamp((totalPercentage - 1F) * 2F, 0F, 1F) * 25); if (topHeight > 0) { if (topHeight < 25) AbstractGui.blit(stack, startX, startY, 18, 12, 6, 25 - topHeight, 256, 256); AbstractGui.blit(stack, startX, startY + 25 - topHeight, 12, 12 + 25 - topHeight, 6, topHeight, 256, 256); } - int bottomHeight = MathHelper.floor(MathHelper.clamp((totalPercentage + 1F) * 2F - 1F, 0F, 1F) * 25); + int bottomHeight = Mth.floor(Mth.clamp((totalPercentage + 1F) * 2F - 1F, 0F, 1F) * 25); if (bottomHeight < 25) { AbstractGui.blit(stack, startX, startY + 51, 18, 12, 6, 25 - bottomHeight, 256, 256); if (bottomHeight > 0) @@ -447,7 +447,7 @@ public class ClientEvents { int x = res.getScaledWidth() / 2 - 40; int y = res.getScaledHeight() / 2 + yOffset; - int width = MathHelper.ceil(stored / (float) max * 80); + int width = Mth.ceil(stored / (float) max * 80); mc.getTextureManager().bindTexture(OVERLAYS); if (width < 80) diff --git a/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAncientTree.java b/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAncientTree.java index 8fb97bf6..2295fb2e 100644 --- a/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAncientTree.java +++ b/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAncientTree.java @@ -9,7 +9,7 @@ import net.minecraft.block.RotatedPillarBlock; import net.minecraft.block.material.Material; import net.minecraft.util.Direction.Axis; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.ISeedReader; import net.minecraft.level.gen.ChunkGenerator; import net.minecraft.level.gen.ILevelGenerationReader; @@ -120,7 +120,7 @@ public class LevelGenAncientTree extends Feature { } private int getHighestCoord(BlockPos pos) { - return Math.max(MathHelper.abs(pos.getX()), Math.max(MathHelper.abs(pos.getY()), MathHelper.abs(pos.getZ()))); + return Math.max(Mth.abs(pos.getX()), Math.max(Mth.abs(pos.getY()), Mth.abs(pos.getZ()))); } private Axis getLogAxis(BlockPos pos, BlockPos goal) { diff --git a/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAuraBloom.java b/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAuraBloom.java index 11bc51e7..edbe9811 100644 --- a/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAuraBloom.java +++ b/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAuraBloom.java @@ -6,7 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.tileentity.BlockEntity; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.ISeedReader; import net.minecraft.level.gen.ChunkGenerator; import net.minecraft.level.gen.Heightmap; @@ -36,11 +36,11 @@ public class LevelGenAuraBloom extends Feature { int startX = pos.getX() + rand.nextInt(16); int startZ = pos.getZ() + rand.nextInt(16); boolean any = false; - for (int i = MathHelper.nextInt(rand, 3, 8); i > 0; i--) { - int offX = startX + MathHelper.nextInt(rand, -5, 5); - int offZ = startZ + MathHelper.nextInt(rand, -5, 5); + for (int i = Mth.nextInt(rand, 3, 8); i > 0; i--) { + int offX = startX + Mth.nextInt(rand, -5, 5); + int offZ = startZ + Mth.nextInt(rand, -5, 5); if (this.nether) { - int y = MathHelper.nextInt(rand, 0, 128); + int y = Mth.nextInt(rand, 0, 128); for (int off = 0; off < 64; off++) { // try to find a good location in both directions of the random pos if (this.tryPlace(levelIn, new BlockPos(offX, y - off, offZ)) || this.tryPlace(levelIn, new BlockPos(offX, y + off, offZ))) { diff --git a/src/main/java/de/ellpeck/naturesaura/gui/ContainerEnderCrate.java b/src/main/java/de/ellpeck/naturesaura/gui/ContainerEnderCrate.java index 75a49361..95a031f4 100644 --- a/src/main/java/de/ellpeck/naturesaura/gui/ContainerEnderCrate.java +++ b/src/main/java/de/ellpeck/naturesaura/gui/ContainerEnderCrate.java @@ -1,16 +1,16 @@ package de.ellpeck.naturesaura.gui; -import net.minecraft.entity.player.Player; -import net.minecraft.inventory.container.Container; -import net.minecraft.inventory.container.ContainerType; -import net.minecraft.inventory.container.Slot; -import net.minecraft.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.SlotItemHandler; -public class ContainerEnderCrate extends Container { +public class ContainerEnderCrate extends AbstractContainerMenu { - public ContainerEnderCrate(ContainerType type, int id, Player player, IItemHandler handler) { + public ContainerEnderCrate(MenuType type, int id, Player player, IItemHandler handler) { super(type, id); int i = (3 - 4) * 18; for (int j = 0; j < 3; ++j) @@ -18,37 +18,38 @@ public class ContainerEnderCrate extends Container { this.addSlot(new SlotItemHandler(handler, k + j * 9, 8 + k * 18, 18 + j * 18)); for (int l = 0; l < 3; ++l) for (int j1 = 0; j1 < 9; ++j1) - this.addSlot(new Slot(player.inventory, j1 + l * 9 + 9, 8 + j1 * 18, 103 + l * 18 + i)); + this.addSlot(new Slot(player.getInventory(), j1 + l * 9 + 9, 8 + j1 * 18, 103 + l * 18 + i)); for (int i1 = 0; i1 < 9; ++i1) - this.addSlot(new Slot(player.inventory, i1, 8 + i1 * 18, 161 + i)); + this.addSlot(new Slot(player.getInventory(), i1, 8 + i1 * 18, 161 + i)); } @Override - public boolean canInteractWith(Player playerIn) { + public boolean stillValid(Player playerIn) { return true; } @Override - public ItemStack transferStackInSlot(Player playerIn, int index) { + public ItemStack quickMoveStack(Player player, int index) { ItemStack itemstack = ItemStack.EMPTY; - Slot slot = this.inventorySlots.get(index); + Slot slot = this.slots.get(index); - if (slot != null && slot.getHasStack()) { - ItemStack itemstack1 = slot.getStack(); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); itemstack = itemstack1.copy(); if (index < 3 * 9) { - if (!this.mergeItemStack(itemstack1, 3 * 9, this.inventorySlots.size(), true)) + if (!this.moveItemStackTo(itemstack1, 3 * 9, this.slots.size(), true)) return ItemStack.EMPTY; - } else if (!this.mergeItemStack(itemstack1, 0, 3 * 9, false)) + } else if (!this.moveItemStackTo(itemstack1, 0, 3 * 9, false)) return ItemStack.EMPTY; if (itemstack1.isEmpty()) - slot.putStack(ItemStack.EMPTY); + slot.set(ItemStack.EMPTY); else - slot.onSlotChanged(); + slot.setChanged(); } return itemstack; } + } diff --git a/src/main/java/de/ellpeck/naturesaura/gui/ModContainers.java b/src/main/java/de/ellpeck/naturesaura/gui/ModContainers.java index 4776d202..0589d26c 100644 --- a/src/main/java/de/ellpeck/naturesaura/gui/ModContainers.java +++ b/src/main/java/de/ellpeck/naturesaura/gui/ModContainers.java @@ -1,10 +1,10 @@ package de.ellpeck.naturesaura.gui; -import net.minecraft.inventory.container.ContainerType; +import net.minecraft.world.inventory.MenuType; @SuppressWarnings("FieldNamingConvention") public final class ModContainers { - public static ContainerType ENDER_CRATE; - public static ContainerType ENDER_ACCESS; + public static MenuType ENDER_CRATE; + public static MenuType ENDER_ACCESS; } diff --git a/src/main/java/de/ellpeck/naturesaura/items/ItemAuraBottle.java b/src/main/java/de/ellpeck/naturesaura/items/ItemAuraBottle.java index 520c77a3..8ccc97b1 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/ItemAuraBottle.java +++ b/src/main/java/de/ellpeck/naturesaura/items/ItemAuraBottle.java @@ -6,52 +6,51 @@ import de.ellpeck.naturesaura.api.aura.type.IAuraType; import de.ellpeck.naturesaura.data.ItemModelGenerator; import de.ellpeck.naturesaura.reg.IColorProvidingItem; import de.ellpeck.naturesaura.reg.ICustomItemModel; -import net.minecraft.block.BlockState; -import net.minecraft.block.DispenserBlock; -import net.minecraft.client.renderer.color.IItemColor; -import net.minecraft.entity.player.Player; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.util.*; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraft.level.Level; +import net.minecraft.client.color.item.ItemColor; +import net.minecraft.core.NonNullList; +import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.DispenserBlock; +import net.minecraft.world.phys.HitResult; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import static net.minecraft.dispenser.DefaultDispenseItemBehavior.doDispense; - public class ItemAuraBottle extends ItemImpl implements IColorProvidingItem, ICustomItemModel { public ItemAuraBottle(Item emptyBottle) { super("aura_bottle"); MinecraftForge.EVENT_BUS.register(new EventHandler()); - DispenserBlock.registerDispenseBehavior(emptyBottle, (source, stack) -> { + DispenserBlock.registerBehavior(emptyBottle, (source, stack) -> { Level level = source.getLevel(); - BlockState state = source.getBlockState(); - Direction facing = state.get(DispenserBlock.FACING); - BlockPos offset = source.getBlockPos().offset(facing); - BlockState offsetState = level.getBlockState(offset); + var state = source.getBlockState(); + var facing = state.getValue(DispenserBlock.FACING); + var offset = source.getPos().relative(facing); + var offsetState = level.getBlockState(offset); - ItemStack dispense = stack.split(1); - if (offsetState.getBlock().isAir(offsetState, level, offset)) { + var dispense = stack.split(1); + if (offsetState.isAir()) { if (IAuraChunk.getAuraInArea(level, offset, 30) >= 100000) { dispense = setType(new ItemStack(ItemAuraBottle.this), IAuraType.forLevel(level)); - BlockPos spot = IAuraChunk.getHighestSpot(level, offset, 30, offset); + var spot = IAuraChunk.getHighestSpot(level, offset, 30, offset); IAuraChunk.getAuraChunk(level, spot).drainAura(spot, 20000); } } - doDispense(level, dispense, 6, facing, DispenserBlock.getDispensePosition(source)); + DefaultDispenseItemBehavior.spawnItem(level, dispense, 6, facing, DispenserBlock.getDispensePosition(source)); return stack; }); } @@ -59,7 +58,7 @@ public class ItemAuraBottle extends ItemImpl implements IColorProvidingItem, ICu public static IAuraType getType(ItemStack stack) { if (!stack.hasTag()) return NaturesAuraAPI.TYPE_OTHER; - String type = stack.getTag().getString("stored_type"); + var type = stack.getTag().getString("stored_type"); if (type.isEmpty()) return NaturesAuraAPI.TYPE_OTHER; return NaturesAuraAPI.AURA_TYPES.get(new ResourceLocation(type)); @@ -71,10 +70,10 @@ public class ItemAuraBottle extends ItemImpl implements IColorProvidingItem, ICu } @Override - public void fillItemGroup(ItemGroup tab, NonNullList items) { - if (this.isInGroup(tab)) { - for (IAuraType type : NaturesAuraAPI.AURA_TYPES.values()) { - ItemStack stack = new ItemStack(this); + public void fillItemCategory(CreativeModeTab tab, NonNullList items) { + if (this.allowdedIn(tab)) { + for (var type : NaturesAuraAPI.AURA_TYPES.values()) { + var stack = new ItemStack(this); setType(stack, type); items.add(stack); } @@ -82,13 +81,13 @@ public class ItemAuraBottle extends ItemImpl implements IColorProvidingItem, ICu } @Override - public ITextComponent getDisplayName(ItemStack stack) { - return new TranslationTextComponent(stack.getTranslationKey() + "." + getType(stack).getName()); + public Component getName(ItemStack stack) { + return new TranslatableComponent(stack.getDescriptionId() + "." + getType(stack).getName()); } @Override @OnlyIn(Dist.CLIENT) - public IItemColor getItemColor() { + public ItemColor getItemColor() { return (stack, tintIndex) -> tintIndex > 0 ? getType(stack).getColor() : 0xFFFFFF; } @@ -103,30 +102,29 @@ public class ItemAuraBottle extends ItemImpl implements IColorProvidingItem, ICu @SubscribeEvent public void onRightClick(PlayerInteractEvent.RightClickItem event) { - ItemStack held = event.getItemStack(); + var held = event.getItemStack(); if (held.isEmpty() || held.getItem() != ModItems.BOTTLE_TWO_THE_REBOTTLING) return; - Player player = event.getPlayer(); - RayTraceResult ray = rayTrace(player.level, player, RayTraceContext.FluidMode.NONE); - if (ray.getType() == RayTraceResult.Type.BLOCK) + var player = event.getPlayer(); + HitResult ray = getPlayerPOVHitResult(player.level, player, ClipContext.Fluid.NONE); + if (ray.getType() == HitResult.Type.BLOCK) return; - BlockPos pos = player.getPosition(); + var pos = player.blockPosition(); if (IAuraChunk.getAuraInArea(player.level, pos, 30) < 100000) return; if (!player.level.isClientSide) { held.shrink(1); - player.inventory.addItemStackToInventory( - setType(new ItemStack(ItemAuraBottle.this), IAuraType.forLevel(player.level))); + player.getInventory().add(setType(new ItemStack(ItemAuraBottle.this), IAuraType.forLevel(player.level))); - BlockPos spot = IAuraChunk.getHighestSpot(player.level, pos, 30, pos); + var spot = IAuraChunk.getHighestSpot(player.level, pos, 30, pos); IAuraChunk.getAuraChunk(player.level, spot).drainAura(spot, 20000); - player.level.playSound(null, player.getPosX(), player.getPosY(), player.getPosZ(), - SoundEvents.ITEM_BOTTLE_FILL_DRAGONBREATH, SoundCategory.PLAYERS, 1F, 1F); + player.level.playSound(null, player.getX(), player.getY(), player.getZ(), + SoundEvents.BOTTLE_FILL_DRAGONBREATH, SoundSource.PLAYERS, 1F, 1F); } - player.swingArm(event.getHand()); + player.swing(event.getHand()); } } diff --git a/src/main/java/de/ellpeck/naturesaura/items/ItemCrimsonMeal.java b/src/main/java/de/ellpeck/naturesaura/items/ItemCrimsonMeal.java index ce27177d..473a097b 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/ItemCrimsonMeal.java +++ b/src/main/java/de/ellpeck/naturesaura/items/ItemCrimsonMeal.java @@ -7,7 +7,7 @@ import net.minecraft.block.NetherWartBlock; import net.minecraft.item.ItemUseContext; import net.minecraft.util.InteractionResult; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.level.Level; import net.minecraft.level.gen.feature.IFeatureConfig; import net.minecraft.level.server.ServerLevel; @@ -39,7 +39,7 @@ public class ItemCrimsonMeal extends ItemImpl { } else if (level.getBlockState(pos.up()).isAir(level, pos.up()) && level.getBlockState(pos).getBlock() == Blocks.SOUL_SAND) { if (!level.isClientSide) { for (int i = level.rand.nextInt(5); i >= 0; i--) { - BlockPos offset = pos.add(MathHelper.nextInt(level.rand, -3, 3), 1, MathHelper.nextInt(level.rand, -3, 3)); + BlockPos offset = pos.add(Mth.nextInt(level.rand, -3, 3), 1, Mth.nextInt(level.rand, -3, 3)); if (level.getBlockState(offset.down()).getBlock() == Blocks.SOUL_SAND && level.getBlockState(offset).isAir(level, offset)) { level.setBlockState(offset, Blocks.NETHER_WART.getDefaultState()); } diff --git a/src/main/java/de/ellpeck/naturesaura/items/ItemImpl.java b/src/main/java/de/ellpeck/naturesaura/items/ItemImpl.java index 54865137..7f2bbf86 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/ItemImpl.java +++ b/src/main/java/de/ellpeck/naturesaura/items/ItemImpl.java @@ -3,7 +3,7 @@ package de.ellpeck.naturesaura.items; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.reg.IModItem; import de.ellpeck.naturesaura.reg.ModRegistry; -import net.minecraft.item.Item; +import net.minecraft.world.item.Item; public class ItemImpl extends Item implements IModItem { @@ -14,7 +14,7 @@ public class ItemImpl extends Item implements IModItem { } public ItemImpl(String baseName, Item.Properties properties) { - super(properties.group(NaturesAura.CREATIVE_TAB)); + super(properties.tab(NaturesAura.CREATIVE_TAB)); this.baseName = baseName; ModRegistry.add(this); } diff --git a/src/main/java/de/ellpeck/naturesaura/items/ItemLootFinder.java b/src/main/java/de/ellpeck/naturesaura/items/ItemLootFinder.java index 58030cc2..41faf6f9 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/ItemLootFinder.java +++ b/src/main/java/de/ellpeck/naturesaura/items/ItemLootFinder.java @@ -32,7 +32,7 @@ public class ItemLootFinder extends ItemImpl { inst.setParticleCulling(false); BlockPos pos = playerIn.getPosition(); - Helper.getTileEntitiesInArea(levelIn, pos, 64, tile -> { + Helper.getBlockEntitiesInArea(levelIn, pos, 64, tile -> { if (tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).isPresent() || tile instanceof MobSpawnerBlockEntity) { inst.spawnMagicParticle( tile.getPos().getX() + 0.5F, tile.getPos().getY() + 0.5F, tile.getPos().getZ() + 0.5F, diff --git a/src/main/java/de/ellpeck/naturesaura/items/ModItems.java b/src/main/java/de/ellpeck/naturesaura/items/ModItems.java index 0e0498ec..5d246ddc 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/ModItems.java +++ b/src/main/java/de/ellpeck/naturesaura/items/ModItems.java @@ -1,9 +1,10 @@ package de.ellpeck.naturesaura.items; -import net.minecraft.item.Item; +import net.minecraft.world.item.Item; @SuppressWarnings("FieldNamingConvention") public final class ModItems { + public static Item INFUSED_IRON_PICKAXE; public static Item INFUSED_IRON_AXE; public static Item INFUSED_IRON_SHOVEL; diff --git a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemAxe.java b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemAxe.java index 17529268..55a23cfc 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemAxe.java +++ b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemAxe.java @@ -8,24 +8,25 @@ import de.ellpeck.naturesaura.items.ModItems; import de.ellpeck.naturesaura.reg.ICustomItemModel; import de.ellpeck.naturesaura.reg.IModItem; import de.ellpeck.naturesaura.reg.ModRegistry; -import net.minecraft.block.BlockState; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.Player; -import net.minecraft.item.AxeItem; -import net.minecraft.item.IItemTier; -import net.minecraft.item.ItemStack; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.tags.BlockTags; -import net.minecraft.util.math.BlockPos; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.AxeItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Tier; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; import net.minecraftforge.common.capabilities.ICapabilityProvider; import javax.annotation.Nullable; public class ItemAxe extends AxeItem implements IModItem, ICustomItemModel { + private final String baseName; - public ItemAxe(String baseName, IItemTier material, float damage, float speed) { - super(material, damage, speed, new Properties().group(NaturesAura.CREATIVE_TAB)); + public ItemAxe(String baseName, Tier material, float damage, float speed) { + super(material, damage, speed, new Properties().tab(NaturesAura.CREATIVE_TAB)); this.baseName = baseName; ModRegistry.add(this); } @@ -38,7 +39,7 @@ public class ItemAxe extends AxeItem implements IModItem, ICustomItemModel { @Override public float getDestroySpeed(ItemStack stack, BlockState state) { if (state.getMaterial() == Material.LEAVES) { - return this.efficiency; + return this.speed; } else { return super.getDestroySpeed(stack, state); } diff --git a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxe.java b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxe.java index 0af4d75a..7536b859 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxe.java +++ b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxe.java @@ -10,21 +10,21 @@ import de.ellpeck.naturesaura.misc.LevelData; import de.ellpeck.naturesaura.reg.ICustomItemModel; import de.ellpeck.naturesaura.reg.IModItem; import de.ellpeck.naturesaura.reg.ModRegistry; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.Player; -import net.minecraft.item.IItemTier; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.item.PickaxeItem; +import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; -import net.minecraft.util.InteractionResult; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.level.Level; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.PickaxeItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; import net.minecraftforge.common.capabilities.ICapabilityProvider; import javax.annotation.Nullable; @@ -33,8 +33,8 @@ public class ItemPickaxe extends PickaxeItem implements IModItem, ICustomItemMod private final String baseName; - public ItemPickaxe(String baseName, IItemTier material, int damage, float speed) { - super(material, damage, speed, new Properties().group(NaturesAura.CREATIVE_TAB)); + public ItemPickaxe(String baseName, Tier material, int damage, float speed) { + super(material, damage, speed, new Properties().tab(NaturesAura.CREATIVE_TAB)); this.baseName = baseName; ModRegistry.add(this); } @@ -45,23 +45,23 @@ public class ItemPickaxe extends PickaxeItem implements IModItem, ICustomItemMod } @Override - public InteractionResult onItemUse(ItemUseContext context) { + public InteractionResult useOn(UseOnContext context) { if (this == ModItems.INFUSED_IRON_PICKAXE) { Player player = context.getPlayer(); Level level = context.getLevel(); - BlockPos pos = context.getPos(); - ItemStack stack = player.getHeldItem(context.getHand()); + BlockPos pos = context.getClickedPos(); + ItemStack stack = player.getItemInHand(context.getHand()); BlockState state = level.getBlockState(pos); BlockState result = NaturesAuraAPI.BOTANIST_PICKAXE_CONVERSIONS.get(state); if (result != null) { if (!level.isClientSide) { - level.setBlockState(pos, result); + level.setBlockAndUpdate(pos, result); LevelData data = (LevelData) ILevelData.getLevelData(level); data.addMossStone(pos); } - level.playSound(player, pos, SoundEvents.BLOCK_STONE_PLACE, SoundCategory.BLOCKS, 1.0F, 1.0F); - stack.damageItem(15, player, Player -> Player.sendBreakAnimation(context.getHand())); + level.playSound(player, pos, SoundEvents.STONE_PLACE, SoundSource.BLOCKS, 1.0F, 1.0F); + stack.hurtAndBreak(15, player, p -> p.broadcastBreakEvent(context.getHand())); return InteractionResult.SUCCESS; } } @@ -75,13 +75,13 @@ public class ItemPickaxe extends PickaxeItem implements IModItem, ICustomItemMod return; if (!isSelected || levelIn.isClientSide) return; - AxisAlignedBB bounds = new AxisAlignedBB(entityIn.getPosition()).grow(3.5F); - for (ItemEntity item : levelIn.getEntitiesWithinAABB(ItemEntity.class, bounds)) { + AABB bounds = new AABB(entityIn.getOnPos()).inflate(3.5F); + for (ItemEntity item : levelIn.getEntitiesOfClass(ItemEntity.class, bounds)) { // only pick up freshly dropped items - if (item.ticksExisted >= 5 || !item.isAlive()) + if (item.tickCount >= 5 || !item.isAlive()) continue; - item.setPickupDelay(0); - item.onCollideWithPlayer((Player) entityIn); + item.setPickUpDelay(0); + item.playerTouch((Player) entityIn); } } } diff --git a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemShovel.java b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemShovel.java index 0b500e91..9c49fdc1 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemShovel.java +++ b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemShovel.java @@ -7,58 +7,66 @@ import de.ellpeck.naturesaura.items.ModItems; import de.ellpeck.naturesaura.reg.ICustomItemModel; import de.ellpeck.naturesaura.reg.IModItem; import de.ellpeck.naturesaura.reg.ModRegistry; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.Player; -import net.minecraft.item.*; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.tileentity.BlockEntity; -import net.minecraft.util.*; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.level.Level; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ShovelItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.phys.BlockHitResult; import net.minecraftforge.common.capabilities.ICapabilityProvider; import javax.annotation.Nullable; public class ItemShovel extends ShovelItem implements IModItem, ICustomItemModel { + private final String baseName; - public ItemShovel(String baseName, IItemTier material, float damage, float speed) { - super(material, damage, speed, new Properties().group(NaturesAura.CREATIVE_TAB)); + public ItemShovel(String baseName, Tier material, float damage, float speed) { + super(material, damage, speed, new Properties().tab(NaturesAura.CREATIVE_TAB)); this.baseName = baseName; ModRegistry.add(this); } @Override - public InteractionResult onItemUse(ItemUseContext context) { + public InteractionResult useOn(UseOnContext context) { Level level = context.getLevel(); Player player = context.getPlayer(); - ItemStack stack = player.getHeldItem(context.getHand()); - BlockPos pos = context.getPos(); + ItemStack stack = player.getItemInHand(context.getHand()); + BlockPos pos = context.getClickedPos(); BlockState state = level.getBlockState(pos); if (this == ModItems.INFUSED_IRON_SHOVEL) { int damage = 0; if (state.getBlock() == Blocks.DIRT || state.getBlock() == Blocks.MYCELIUM) { - if (level.getBlockState(pos.up()).getMaterial() == Material.AIR) { - level.setBlockState(pos, Blocks.GRASS_BLOCK.getDefaultState()); + if (level.getBlockState(pos.above()).getMaterial() == Material.AIR) { + level.setBlockAndUpdate(pos, Blocks.GRASS_BLOCK.defaultBlockState()); damage = 5; } } else { - int range = player.isSneaking() ? 0 : 1; + int range = player.isCrouching() ? 0 : 1; for (int x = -range; x <= range; x++) { for (int y = -range; y <= range; y++) { - BlockPos actualPos = pos.add(x, 0, y); - Direction facing = context.getFace(); - if (player.canPlayerEdit(actualPos.offset(facing), facing, stack)) { + BlockPos actualPos = pos.offset(x, 0, y); + Direction facing = context.getClickedFace(); + if (player.mayUseItemAt(actualPos.relative(facing), facing, stack)) { if (facing != Direction.DOWN - && level.getBlockState(actualPos.up()).getMaterial() == Material.AIR + && level.getBlockState(actualPos.above()).getMaterial() == Material.AIR && level.getBlockState(actualPos).getBlock() == Blocks.GRASS_BLOCK) { - if (!level.isClientSide) { - level.setBlockState(actualPos, Blocks.GRASS_PATH.getDefaultState(), 11); - } + if (!level.isClientSide) + level.setBlock(actualPos, Blocks.DIRT_PATH.defaultBlockState(), 11); damage = 1; } } @@ -67,23 +75,23 @@ public class ItemShovel extends ShovelItem implements IModItem, ICustomItemModel } if (damage > 0) { - level.playSound(player, pos, SoundEvents.ITEM_SHOVEL_FLATTEN, SoundCategory.BLOCKS, 1.0F, 1.0F); - stack.damageItem(damage, player, Player -> Player.sendBreakAnimation(context.getHand())); + level.playSound(player, pos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F); + stack.hurtAndBreak(damage, player, p -> p.broadcastBreakEvent(context.getHand())); return InteractionResult.SUCCESS; } } else if (this == ModItems.SKY_SHOVEL) { if (this.getDestroySpeed(stack, state) <= 1) - return super.onItemUse(context); - Hand otherHand = context.getHand() == Hand.MAIN_HAND ? Hand.OFF_HAND : Hand.MAIN_HAND; - ItemStack other = player.getHeldItem(otherHand); + return super.useOn(context); + InteractionHand otherHand = context.getHand() == InteractionHand.MAIN_HAND ? InteractionHand.OFF_HAND : InteractionHand.MAIN_HAND; + ItemStack other = player.getItemInHand(otherHand); if (other.isEmpty() || !(other.getItem() instanceof BlockItem)) - return super.onItemUse(context); + return super.useOn(context); level.removeBlock(pos, false); BlockEntity tile = state.hasBlockEntity() ? level.getBlockEntity(pos) : null; - Block.spawnDrops(state, level, pos, tile, null, ItemStack.EMPTY); - ItemUseContext newContext = new ItemUseContext(player, otherHand, new BlockRayTraceResult(context.getHitVec(), context.getFace(), context.getPos(), context.isInside())); - other.onItemUse(newContext); - stack.damageItem(1, player, p -> p.sendBreakAnimation(context.getHand())); + Block.dropResources(state, level, pos, tile, null, ItemStack.EMPTY); + UseOnContext newContext = new UseOnContext(player, otherHand, new BlockHitResult(context.getClickLocation(), context.getClickedFace(), context.getClickedPos(), context.isInside())); + other.useOn(newContext); + stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(context.getHand())); return InteractionResult.SUCCESS; } return InteractionResult.PASS; diff --git a/src/main/java/de/ellpeck/naturesaura/misc/WorldData.java b/src/main/java/de/ellpeck/naturesaura/misc/LevelData.java similarity index 79% rename from src/main/java/de/ellpeck/naturesaura/misc/WorldData.java rename to src/main/java/de/ellpeck/naturesaura/misc/LevelData.java index c7d77602..900a80f3 100644 --- a/src/main/java/de/ellpeck/naturesaura/misc/WorldData.java +++ b/src/main/java/de/ellpeck/naturesaura/misc/LevelData.java @@ -5,23 +5,22 @@ import com.google.common.collect.ListMultimap; import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.misc.ILevelData; -import de.ellpeck.naturesaura.blocks.tiles.ItemStackHandlerNA; import de.ellpeck.naturesaura.blocks.tiles.BlockEntitySpawnLamp; +import de.ellpeck.naturesaura.blocks.tiles.ItemStackHandlerNA; import de.ellpeck.naturesaura.chunk.AuraChunk; import de.ellpeck.naturesaura.items.ModItems; import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; -import net.minecraft.item.ItemStack; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.INBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.nbt.LongNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.ResourceLocation; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.LongTag; +import net.minecraft.nbt.Tag; +import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Tuple; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.LazyOptional; import javax.annotation.Nonnull; @@ -30,7 +29,7 @@ import java.util.*; public class LevelData implements ILevelData { - public final ListMultimap> effectPowders = ArrayListMultimap.create(); + public final ListMultimap> effectPowders = ArrayListMultimap.create(); public final Long2ObjectOpenHashMap auraChunksWithSpots = new Long2ObjectOpenHashMap<>(); public final List recentlyConvertedMossStones = new ArrayList<>(); public final Set spawnLamps = new HashSet<>(); @@ -47,7 +46,7 @@ public class LevelData implements ILevelData { public CompoundTag serializeNBT() { CompoundTag compound = new CompoundTag(); - ListNBT storages = new ListNBT(); + ListTag storages = new ListTag(); for (Map.Entry entry : this.enderStorages.entrySet()) { ItemStackHandlerNA handler = entry.getValue(); if (Helper.isEmpty(handler)) @@ -58,9 +57,9 @@ public class LevelData implements ILevelData { } compound.put("storages", storages); - ListNBT moss = new ListNBT(); + ListTag moss = new ListTag(); for (BlockPos pos : this.recentlyConvertedMossStones) - moss.add(LongNBT.valueOf(pos.toLong())); + moss.add(LongTag.valueOf(pos.asLong())); compound.put("converted_moss", moss); return compound; @@ -69,15 +68,15 @@ public class LevelData implements ILevelData { @Override public void deserializeNBT(CompoundTag compound) { this.enderStorages.clear(); - for (INBT base : compound.getList("storages", 10)) { + for (Tag base : compound.getList("storages", 10)) { CompoundTag storageComp = (CompoundTag) base; ItemStackHandlerNA storage = this.getEnderStorage(storageComp.getString("name")); storage.deserializeNBT(storageComp); } this.recentlyConvertedMossStones.clear(); - for (INBT base : compound.getList("converted_moss", Constants.NBT.TAG_LONG)) - this.recentlyConvertedMossStones.add(BlockPos.fromLong(((LongNBT) base).getLong())); + for (Tag base : compound.getList("converted_moss", Tag.TAG_LONG)) + this.recentlyConvertedMossStones.add(BlockPos.of(((LongTag) base).getAsLong())); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/particles/ParticleMagic.java b/src/main/java/de/ellpeck/naturesaura/particles/ParticleMagic.java index 642dfe2a..245b8884 100644 --- a/src/main/java/de/ellpeck/naturesaura/particles/ParticleMagic.java +++ b/src/main/java/de/ellpeck/naturesaura/particles/ParticleMagic.java @@ -9,7 +9,7 @@ import net.minecraft.client.level.ClientLevel; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; import net.minecraft.util.ReuseableStream; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Mth; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.vector.Quaternion; import net.minecraft.util.math.vector.Vector3d; @@ -97,9 +97,9 @@ public class ParticleMagic extends Particle { @Override public void renderParticle(IVertexBuilder buffer, ActiveRenderInfo renderInfo, float partialTicks) { Vector3d vec3d = renderInfo.getProjectedView(); - float f = (float) (MathHelper.lerp(partialTicks, this.prevPosX, this.posX) - vec3d.getX()); - float f1 = (float) (MathHelper.lerp(partialTicks, this.prevPosY, this.posY) - vec3d.getY()); - float f2 = (float) (MathHelper.lerp(partialTicks, this.prevPosZ, this.posZ) - vec3d.getZ()); + float f = (float) (Mth.lerp(partialTicks, this.prevPosX, this.posX) - vec3d.getX()); + float f1 = (float) (Mth.lerp(partialTicks, this.prevPosY, this.posY) - vec3d.getY()); + float f2 = (float) (Mth.lerp(partialTicks, this.prevPosZ, this.posZ) - vec3d.getZ()); Quaternion quaternion = renderInfo.getRotation(); Vector3f[] avector3f = new Vector3f[]{new Vector3f(-1.0F, -1.0F, 0.0F), new Vector3f(-1.0F, 1.0F, 0.0F), new Vector3f(1.0F, 1.0F, 0.0F), new Vector3f(1.0F, -1.0F, 0.0F)}; float f4 = 0.1F * this.particleScale; diff --git a/src/main/java/de/ellpeck/naturesaura/potion/PotionBreathless.java b/src/main/java/de/ellpeck/naturesaura/potion/PotionBreathless.java index abaeef41..ce2aa959 100644 --- a/src/main/java/de/ellpeck/naturesaura/potion/PotionBreathless.java +++ b/src/main/java/de/ellpeck/naturesaura/potion/PotionBreathless.java @@ -1,9 +1,9 @@ package de.ellpeck.naturesaura.potion; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.EffectType; -import net.minecraft.util.DamageSource; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingHealEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -15,13 +15,13 @@ public class PotionBreathless extends PotionImpl { private final Random random = new Random(); public PotionBreathless() { - super("breathless", EffectType.HARMFUL, 0); + super("breathless", MobEffectCategory.HARMFUL, 0); MinecraftForge.EVENT_BUS.register(this); } @SubscribeEvent public void onHeal(LivingHealEvent event) { - EffectInstance effect = event.getEntityLiving().getActivePotionEffect(this); + MobEffectInstance effect = event.getEntityLiving().getEffect(this); if (effect == null) return; float chance = (effect.getAmplifier() + 1) / 15F; @@ -31,13 +31,13 @@ public class PotionBreathless extends PotionImpl { } @Override - public boolean isReady(int duration, int amplifier) { + public boolean isDurationEffectTick(int duration, int amplifier) { int mod = 200 >> amplifier; return mod > 0 && duration % mod == 0 && this.random.nextBoolean(); } @Override - public void performEffect(LivingEntity entity, int amplifier) { - entity.attackEntityFrom(DamageSource.MAGIC, 1F); + public void applyEffectTick(LivingEntity entity, int amplifier) { + entity.hurt(DamageSource.MAGIC, 1F); } } diff --git a/src/main/java/de/ellpeck/naturesaura/potion/PotionImpl.java b/src/main/java/de/ellpeck/naturesaura/potion/PotionImpl.java index fb843d40..85c4f541 100644 --- a/src/main/java/de/ellpeck/naturesaura/potion/PotionImpl.java +++ b/src/main/java/de/ellpeck/naturesaura/potion/PotionImpl.java @@ -2,14 +2,14 @@ package de.ellpeck.naturesaura.potion; import de.ellpeck.naturesaura.reg.IModItem; import de.ellpeck.naturesaura.reg.ModRegistry; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; -public class PotionImpl extends Effect implements IModItem { +public class PotionImpl extends MobEffect implements IModItem { protected final String baseName; - protected PotionImpl(String baseName, EffectType type, int liquidColorIn) { + protected PotionImpl(String baseName, MobEffectCategory type, int liquidColorIn) { super(type, liquidColorIn); this.baseName = baseName; diff --git a/src/main/java/de/ellpeck/naturesaura/recipes/AltarRecipe.java b/src/main/java/de/ellpeck/naturesaura/recipes/AltarRecipe.java index bf921ec6..6a52bf5c 100644 --- a/src/main/java/de/ellpeck/naturesaura/recipes/AltarRecipe.java +++ b/src/main/java/de/ellpeck/naturesaura/recipes/AltarRecipe.java @@ -6,13 +6,13 @@ import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.type.IAuraType; import de.ellpeck.naturesaura.items.ItemAuraBottle; import de.ellpeck.naturesaura.items.ModItems; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.registries.ForgeRegistryEntry; @@ -38,59 +38,59 @@ public class AltarRecipe extends ModRecipe { } @Override - public ItemStack getRecipeOutput() { + public ItemStack getResultItem() { return this.output; } @Override - public IRecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return ModRecipes.ALTAR_SERIAIZER; } @Override - public IRecipeType getType() { + public RecipeType getType() { return ModRecipes.ALTAR_TYPE; } public ItemStack getDimensionBottle() { ItemStack bottle = ItemAuraBottle.setType(new ItemStack(ModItems.AURA_BOTTLE), this.requiredType); - bottle.setDisplayName(new TranslationTextComponent("info." + NaturesAura.MOD_ID + ".required_aura_type." + this.requiredType.getName())); + bottle.setHoverName(new TranslatableComponent("info." + NaturesAura.MOD_ID + ".required_aura_type." + this.requiredType.getName())); return bottle; } - public static class Serializer extends ForgeRegistryEntry> implements IRecipeSerializer { + public static class Serializer extends ForgeRegistryEntry> implements RecipeSerializer { @Override - public AltarRecipe read(ResourceLocation recipeId, JsonObject json) { + public AltarRecipe fromJson(ResourceLocation recipeId, JsonObject json) { return new AltarRecipe( recipeId, - Ingredient.deserialize(json.getAsJsonObject("input")), + Ingredient.fromJson(json.getAsJsonObject("input")), CraftingHelper.getItemStack(json.getAsJsonObject("output"), true), NaturesAuraAPI.AURA_TYPES.get(new ResourceLocation(json.get("aura_type").getAsString())), - json.has("catalyst") ? Ingredient.deserialize(json.getAsJsonObject("catalyst")) : Ingredient.EMPTY, + json.has("catalyst") ? Ingredient.fromJson(json.getAsJsonObject("catalyst")) : Ingredient.EMPTY, json.get("aura").getAsInt(), json.get("time").getAsInt()); } @Nullable @Override - public AltarRecipe read(ResourceLocation recipeId, PacketBuffer buffer) { + public AltarRecipe fromNetwork(ResourceLocation recipeId, FriendlyByteBuf buffer) { return new AltarRecipe( recipeId, - Ingredient.read(buffer), - buffer.readItemStack(), + Ingredient.fromNetwork(buffer), + buffer.readItem(), NaturesAuraAPI.AURA_TYPES.get(buffer.readResourceLocation()), - Ingredient.read(buffer), + Ingredient.fromNetwork(buffer), buffer.readInt(), buffer.readInt()); } @Override - public void write(PacketBuffer buffer, AltarRecipe recipe) { - recipe.input.write(buffer); - buffer.writeItemStack(recipe.output); + public void toNetwork(FriendlyByteBuf buffer, AltarRecipe recipe) { + recipe.input.toNetwork(buffer); + buffer.writeItem(recipe.output); buffer.writeResourceLocation(recipe.requiredType.getName()); - recipe.catalyst.write(buffer); + recipe.catalyst.toNetwork(buffer); buffer.writeInt(recipe.aura); buffer.writeInt(recipe.time); } diff --git a/src/main/java/de/ellpeck/naturesaura/recipes/AnimalSpawnerRecipe.java b/src/main/java/de/ellpeck/naturesaura/recipes/AnimalSpawnerRecipe.java index a75b1e4c..eef26450 100644 --- a/src/main/java/de/ellpeck/naturesaura/recipes/AnimalSpawnerRecipe.java +++ b/src/main/java/de/ellpeck/naturesaura/recipes/AnimalSpawnerRecipe.java @@ -2,18 +2,21 @@ package de.ellpeck.naturesaura.recipes; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; +import net.minecraft.core.BlockPos; import net.minecraft.entity.SpawnReason; -import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; +import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.PacketBuffer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.level.Level; -import net.minecraft.level.server.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistryEntry; @@ -40,30 +43,31 @@ public class AnimalSpawnerRecipe extends ModRecipe { // passed position is zero on the client, so we don't want to do initialization stuff for the entity if (pos == BlockPos.ZERO) return this.entity.create(level); - return this.entity.create((ServerLevel) level, null, null, null, pos, SpawnReason.SPAWNER, false, false); + return this.entity.create((ServerLevel) level, null, null, null, pos, MobSpawnType.SPAWNER, false, false); } @Override - public ItemStack getRecipeOutput() { + public ItemStack getResultItem() { return ItemStack.EMPTY; } @Override - public IRecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return ModRecipes.ANIMAL_SPAWNER_SERIALIZER; } @Override - public IRecipeType getType() { + public RecipeType getType() { return ModRecipes.ANIMAL_SPAWNER_TYPE; } - public static class Serializer extends ForgeRegistryEntry> implements IRecipeSerializer { + public static class Serializer extends ForgeRegistryEntry> implements RecipeSerializer { + @Override - public AnimalSpawnerRecipe read(ResourceLocation recipeId, JsonObject json) { + public AnimalSpawnerRecipe fromJson(ResourceLocation recipeId, JsonObject json) { List ingredients = new ArrayList<>(); for (JsonElement e : json.getAsJsonArray("ingredients")) - ingredients.add(Ingredient.deserialize(e)); + ingredients.add(Ingredient.fromJson(e)); return new AnimalSpawnerRecipe(recipeId, ForgeRegistries.ENTITIES.getValue(new ResourceLocation(json.get("entity").getAsString())), json.get("aura").getAsInt(), @@ -73,10 +77,10 @@ public class AnimalSpawnerRecipe extends ModRecipe { @Nullable @Override - public AnimalSpawnerRecipe read(ResourceLocation recipeId, PacketBuffer buffer) { + public AnimalSpawnerRecipe fromNetwork(ResourceLocation recipeId, FriendlyByteBuf buffer) { Ingredient[] ings = new Ingredient[buffer.readInt()]; for (int i = 0; i < ings.length; i++) - ings[i] = Ingredient.read(buffer); + ings[i] = Ingredient.fromNetwork(buffer); return new AnimalSpawnerRecipe( recipeId, ForgeRegistries.ENTITIES.getValue(buffer.readResourceLocation()), @@ -86,10 +90,10 @@ public class AnimalSpawnerRecipe extends ModRecipe { } @Override - public void write(PacketBuffer buffer, AnimalSpawnerRecipe recipe) { + public void toNetwork(FriendlyByteBuf buffer, AnimalSpawnerRecipe recipe) { buffer.writeInt(recipe.ingredients.length); for (Ingredient ing : recipe.ingredients) - ing.write(buffer); + ing.toNetwork(buffer); buffer.writeResourceLocation(recipe.entity.getRegistryName()); buffer.writeInt(recipe.aura); buffer.writeInt(recipe.time); diff --git a/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipe.java b/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipe.java index cfa7f6b3..e28a33d4 100644 --- a/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipe.java +++ b/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipe.java @@ -1,12 +1,12 @@ package de.ellpeck.naturesaura.recipes; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.ResourceLocation; -import net.minecraft.level.Level; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.level.Level; import net.minecraftforge.items.wrapper.RecipeWrapper; -public abstract class ModRecipe implements IRecipe { +public abstract class ModRecipe implements Recipe { public final ResourceLocation name; @@ -21,12 +21,12 @@ public abstract class ModRecipe implements IRecipe { } @Override - public ItemStack getCraftingResult(RecipeWrapper inv) { + public ItemStack assemble(RecipeWrapper inv) { return ItemStack.EMPTY; } @Override - public boolean canFit(int width, int height) { + public boolean canCraftInDimensions(int width, int height) { return false; } @@ -34,4 +34,5 @@ public abstract class ModRecipe implements IRecipe { public ResourceLocation getId() { return this.name; } + } diff --git a/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipes.java b/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipes.java index 93ddd2b5..9cbbfa7c 100644 --- a/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipes.java +++ b/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipes.java @@ -7,37 +7,36 @@ import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.misc.WeatherType; import de.ellpeck.naturesaura.api.misc.WeightedOre; -import net.minecraft.block.Blocks; -import net.minecraft.entity.EntityType; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; +import net.minecraft.core.Registry; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.INBT; -import net.minecraft.nbt.NBTDynamicOps; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.Registry; +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.Tag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.block.Blocks; import net.minecraftforge.registries.IForgeRegistry; import java.util.List; public final class ModRecipes { - public static final IRecipeType ALTAR_TYPE = new RecipeType<>(); - public static final IRecipeSerializer ALTAR_SERIAIZER = new AltarRecipe.Serializer(); + public static final RecipeType ALTAR_TYPE = new RecipeType<>(); + public static final RecipeSerializer ALTAR_SERIAIZER = new AltarRecipe.Serializer(); - public static final IRecipeType ANIMAL_SPAWNER_TYPE = new RecipeType<>(); - public static final IRecipeSerializer ANIMAL_SPAWNER_SERIALIZER = new AnimalSpawnerRecipe.Serializer(); + public static final RecipeType ANIMAL_SPAWNER_TYPE = new RecipeType<>(); + public static final RecipeSerializer ANIMAL_SPAWNER_SERIALIZER = new AnimalSpawnerRecipe.Serializer(); - public static final IRecipeType OFFERING_TYPE = new RecipeType<>(); - public static final IRecipeSerializer OFFERING_SERIALIZER = new OfferingRecipe.Serializer(); + public static final RecipeType OFFERING_TYPE = new RecipeType<>(); + public static final RecipeSerializer OFFERING_SERIALIZER = new OfferingRecipe.Serializer(); - public static final IRecipeType TREE_RITUAL_TYPE = new RecipeType<>(); - public static final IRecipeSerializer TREE_RITUAL_SERIALIZER = new TreeRitualRecipe.Serializer(); + public static final RecipeType TREE_RITUAL_TYPE = new RecipeType<>(); + public static final RecipeSerializer TREE_RITUAL_SERIALIZER = new TreeRitualRecipe.Serializer(); - public static void register(IForgeRegistry> registry) { + public static void register(IForgeRegistry> registry) { register(registry, "altar", ALTAR_TYPE, ALTAR_SERIAIZER); register(registry, "animal_spawner", ANIMAL_SPAWNER_TYPE, ANIMAL_SPAWNER_SERIALIZER); register(registry, "offering", OFFERING_TYPE, OFFERING_SERIALIZER); @@ -46,17 +45,17 @@ public final class ModRecipes { public static void init() { NaturesAuraAPI.BOTANIST_PICKAXE_CONVERSIONS.put( - Blocks.COBBLESTONE.getDefaultState(), - Blocks.MOSSY_COBBLESTONE.getDefaultState()); + Blocks.COBBLESTONE.defaultBlockState(), + Blocks.MOSSY_COBBLESTONE.defaultBlockState()); NaturesAuraAPI.BOTANIST_PICKAXE_CONVERSIONS.put( - Blocks.STONE_BRICKS.getDefaultState(), - Blocks.MOSSY_STONE_BRICKS.getDefaultState()); + Blocks.STONE_BRICKS.defaultBlockState(), + Blocks.MOSSY_STONE_BRICKS.defaultBlockState()); NaturesAuraAPI.BOTANIST_PICKAXE_CONVERSIONS.put( - Blocks.COBBLESTONE_WALL.getDefaultState(), - Blocks.MOSSY_COBBLESTONE_WALL.getDefaultState()); + Blocks.COBBLESTONE_WALL.defaultBlockState(), + Blocks.MOSSY_COBBLESTONE_WALL.defaultBlockState()); NaturesAuraAPI.BOTANIST_PICKAXE_CONVERSIONS.put( - Blocks.STONE_BRICK_WALL.getDefaultState(), - Blocks.MOSSY_STONE_BRICK_WALL.getDefaultState()); + Blocks.STONE_BRICK_WALL.defaultBlockState(), + Blocks.MOSSY_STONE_BRICK_WALL.defaultBlockState()); ore(NaturesAuraAPI.OVERWORLD_ORES, "ores/coal", 5000); ore(NaturesAuraAPI.NETHER_ORES, "ores/nether/coal", 5000); @@ -131,14 +130,14 @@ public final class ModRecipes { list.add(new WeightedOre(res, weight)); } - private static void register(IForgeRegistry> registry, String name, IRecipeType type, IRecipeSerializer serializer) { + private static void register(IForgeRegistry> registry, String name, RecipeType type, RecipeSerializer serializer) { ResourceLocation res = new ResourceLocation(NaturesAura.MOD_ID, name); Registry.register(Registry.RECIPE_TYPE, res, type); registry.register(serializer.setRegistryName(res)); } public static JsonObject serializeStack(ItemStack stack) { - CompoundTag nbt = stack.write(new CompoundTag()); + CompoundTag nbt = stack.save(new CompoundTag()); byte c = nbt.getByte("Count"); if (c != 1) { nbt.putByte("count", c); @@ -146,19 +145,20 @@ public final class ModRecipes { nbt.remove("Count"); renameTag(nbt, "id", "item"); renameTag(nbt, "tag", "nbt"); - Dynamic dyn = new Dynamic<>(NBTDynamicOps.INSTANCE, nbt); + Dynamic dyn = new Dynamic<>(NbtOps.INSTANCE, nbt); return dyn.convert(JsonOps.INSTANCE).getValue().getAsJsonObject(); } private static void renameTag(CompoundTag nbt, String oldName, String newName) { - INBT tag = nbt.get(oldName); + Tag tag = nbt.get(oldName); if (tag != null) { nbt.remove(oldName); nbt.put(newName, tag); } } - private static class RecipeType> implements IRecipeType { + private static class RecipeType> implements net.minecraft.world.item.crafting.RecipeType { + @Override public String toString() { return Registry.RECIPE_TYPE.getKey(this).toString(); diff --git a/src/main/java/de/ellpeck/naturesaura/recipes/OfferingRecipe.java b/src/main/java/de/ellpeck/naturesaura/recipes/OfferingRecipe.java index 059245b2..9687e33e 100644 --- a/src/main/java/de/ellpeck/naturesaura/recipes/OfferingRecipe.java +++ b/src/main/java/de/ellpeck/naturesaura/recipes/OfferingRecipe.java @@ -1,12 +1,12 @@ package de.ellpeck.naturesaura.recipes; import com.google.gson.JsonObject; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.ResourceLocation; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.registries.ForgeRegistryEntry; @@ -26,45 +26,46 @@ public class OfferingRecipe extends ModRecipe { } @Override - public ItemStack getRecipeOutput() { + public ItemStack getResultItem() { return this.output; } @Override - public IRecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return ModRecipes.OFFERING_SERIALIZER; } @Override - public IRecipeType getType() { + public RecipeType getType() { return ModRecipes.OFFERING_TYPE; } - public static class Serializer extends ForgeRegistryEntry> implements IRecipeSerializer { + public static class Serializer extends ForgeRegistryEntry> implements RecipeSerializer { + @Override - public OfferingRecipe read(ResourceLocation recipeId, JsonObject json) { + public OfferingRecipe fromJson(ResourceLocation recipeId, JsonObject json) { return new OfferingRecipe( recipeId, - Ingredient.deserialize(json.get("input")), - Ingredient.deserialize(json.get("start_item")), + Ingredient.fromJson(json.get("input")), + Ingredient.fromJson(json.get("start_item")), CraftingHelper.getItemStack(json.getAsJsonObject("output"), true)); } @Nullable @Override - public OfferingRecipe read(ResourceLocation recipeId, PacketBuffer buffer) { + public OfferingRecipe fromNetwork(ResourceLocation recipeId, FriendlyByteBuf buffer) { return new OfferingRecipe( recipeId, - Ingredient.read(buffer), - Ingredient.read(buffer), - buffer.readItemStack()); + Ingredient.fromNetwork(buffer), + Ingredient.fromNetwork(buffer), + buffer.readItem()); } @Override - public void write(PacketBuffer buffer, OfferingRecipe recipe) { - recipe.input.write(buffer); - recipe.startItem.write(buffer); - buffer.writeItemStack(recipe.output); + public void toNetwork(FriendlyByteBuf buffer, OfferingRecipe recipe) { + recipe.input.toNetwork(buffer); + recipe.startItem.toNetwork(buffer); + buffer.writeItem(recipe.output); } } } diff --git a/src/main/java/de/ellpeck/naturesaura/recipes/TreeRitualRecipe.java b/src/main/java/de/ellpeck/naturesaura/recipes/TreeRitualRecipe.java index 24497db5..4497b95e 100644 --- a/src/main/java/de/ellpeck/naturesaura/recipes/TreeRitualRecipe.java +++ b/src/main/java/de/ellpeck/naturesaura/recipes/TreeRitualRecipe.java @@ -2,12 +2,12 @@ package de.ellpeck.naturesaura.recipes; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.ResourceLocation; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.registries.ForgeRegistryEntry; @@ -31,29 +31,30 @@ public class TreeRitualRecipe extends ModRecipe { } @Override - public ItemStack getRecipeOutput() { + public ItemStack getResultItem() { return this.result; } @Override - public IRecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return ModRecipes.TREE_RITUAL_SERIALIZER; } @Override - public IRecipeType getType() { + public RecipeType getType() { return ModRecipes.TREE_RITUAL_TYPE; } - public static class Serializer extends ForgeRegistryEntry> implements IRecipeSerializer { + public static class Serializer extends ForgeRegistryEntry> implements RecipeSerializer { + @Override - public TreeRitualRecipe read(ResourceLocation recipeId, JsonObject json) { + public TreeRitualRecipe fromJson(ResourceLocation recipeId, JsonObject json) { List ings = new ArrayList<>(); for (JsonElement element : json.getAsJsonArray("ingredients")) - ings.add(Ingredient.deserialize(element)); + ings.add(Ingredient.fromJson(element)); return new TreeRitualRecipe( recipeId, - Ingredient.deserialize(json.getAsJsonObject("sapling")), + Ingredient.fromJson(json.getAsJsonObject("sapling")), CraftingHelper.getItemStack(json.getAsJsonObject("output"), true), json.get("time").getAsInt(), ings.toArray(new Ingredient[0])); @@ -61,25 +62,25 @@ public class TreeRitualRecipe extends ModRecipe { @Nullable @Override - public TreeRitualRecipe read(ResourceLocation recipeId, PacketBuffer buffer) { + public TreeRitualRecipe fromNetwork(ResourceLocation recipeId, FriendlyByteBuf buffer) { Ingredient[] ings = new Ingredient[buffer.readInt()]; for (int i = 0; i < ings.length; i++) - ings[i] = Ingredient.read(buffer); + ings[i] = Ingredient.fromNetwork(buffer); return new TreeRitualRecipe( recipeId, - Ingredient.read(buffer), - buffer.readItemStack(), + Ingredient.fromNetwork(buffer), + buffer.readItem(), buffer.readInt(), ings); } @Override - public void write(PacketBuffer buffer, TreeRitualRecipe recipe) { + public void toNetwork(FriendlyByteBuf buffer, TreeRitualRecipe recipe) { buffer.writeInt(recipe.ingredients.length); for (Ingredient ing : recipe.ingredients) - ing.write(buffer); - recipe.saplingType.write(buffer); - buffer.writeItemStack(recipe.result); + ing.toNetwork(buffer); + recipe.saplingType.toNetwork(buffer); + buffer.writeItem(recipe.result); buffer.writeInt(recipe.time); } } diff --git a/src/main/java/de/ellpeck/naturesaura/reg/IColorProvidingItem.java b/src/main/java/de/ellpeck/naturesaura/reg/IColorProvidingItem.java index 1a5a734a..7f8119cc 100644 --- a/src/main/java/de/ellpeck/naturesaura/reg/IColorProvidingItem.java +++ b/src/main/java/de/ellpeck/naturesaura/reg/IColorProvidingItem.java @@ -1,12 +1,12 @@ package de.ellpeck.naturesaura.reg; -import net.minecraft.client.renderer.color.IItemColor; +import net.minecraft.client.color.item.ItemColor; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; public interface IColorProvidingItem { @OnlyIn(Dist.CLIENT) - IItemColor getItemColor(); + ItemColor getItemColor(); } diff --git a/src/main/java/de/ellpeck/naturesaura/reg/ModItemTier.java b/src/main/java/de/ellpeck/naturesaura/reg/ModItemTier.java index 9476d3cd..6ce58f7e 100644 --- a/src/main/java/de/ellpeck/naturesaura/reg/ModItemTier.java +++ b/src/main/java/de/ellpeck/naturesaura/reg/ModItemTier.java @@ -1,22 +1,22 @@ package de.ellpeck.naturesaura.reg; import de.ellpeck.naturesaura.items.ModItems; -import net.minecraft.item.IItemTier; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.LazyValue; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraftforge.common.util.Lazy; import java.util.function.Supplier; -public enum ModItemTier implements IItemTier { - INFUSED(2, 250, 6, 2, 16, () -> Ingredient.fromItems(ModItems.INFUSED_IRON)), - SKY(3, 1500, 8, 3, 12, () -> Ingredient.fromItems(ModItems.SKY_INGOT)); +public enum ModItemTier implements Tier { + INFUSED(2, 250, 6, 2, 16, () -> Ingredient.of(ModItems.INFUSED_IRON)), + SKY(3, 1500, 8, 3, 12, () -> Ingredient.of(ModItems.SKY_INGOT)); private final int harvestLevel; private final int maxUses; private final float efficiency; private final float attackDamage; private final int enchantability; - private final LazyValue repairMaterial; + private final Lazy repairMaterial; ModItemTier(int harvestLevelIn, int maxUsesIn, float efficiencyIn, float attackDamageIn, int enchantabilityIn, Supplier repairMaterialIn) { this.harvestLevel = harvestLevelIn; @@ -24,36 +24,36 @@ public enum ModItemTier implements IItemTier { this.efficiency = efficiencyIn; this.attackDamage = attackDamageIn; this.enchantability = enchantabilityIn; - this.repairMaterial = new LazyValue<>(repairMaterialIn); + this.repairMaterial = Lazy.of(repairMaterialIn); } @Override - public int getMaxUses() { + public int getUses() { return this.maxUses; } @Override - public float getEfficiency() { + public float getSpeed() { return this.efficiency; } @Override - public float getAttackDamage() { + public float getAttackDamageBonus() { return this.attackDamage; } @Override - public int getHarvestLevel() { + public int getLevel() { return this.harvestLevel; } @Override - public int getEnchantability() { + public int getEnchantmentValue() { return this.enchantability; } @Override - public Ingredient getRepairMaterial() { - return this.repairMaterial.getValue(); + public Ingredient getRepairIngredient() { + return this.repairMaterial.get(); } } diff --git a/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java b/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java index b4aa2351..25c89e1d 100644 --- a/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java +++ b/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java @@ -4,19 +4,19 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.misc.ILevelData; import de.ellpeck.naturesaura.blocks.*; -import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.BlockEntityAuraBloom; import de.ellpeck.naturesaura.blocks.tiles.BlockEntityEnderCrate; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.enchant.AuraMendingEnchantment; import de.ellpeck.naturesaura.enchant.ModEnchantments; import de.ellpeck.naturesaura.entities.*; import de.ellpeck.naturesaura.entities.render.RenderEffectInhibitor; import de.ellpeck.naturesaura.entities.render.RenderMoverMinecart; import de.ellpeck.naturesaura.entities.render.RenderStub; -import de.ellpeck.naturesaura.gen.ModFeatures; import de.ellpeck.naturesaura.gen.LevelGenAncientTree; import de.ellpeck.naturesaura.gen.LevelGenAuraBloom; import de.ellpeck.naturesaura.gen.LevelGenNetherWartMushroom; +import de.ellpeck.naturesaura.gen.ModFeatures; import de.ellpeck.naturesaura.gui.ContainerEnderCrate; import de.ellpeck.naturesaura.gui.ModContainers; import de.ellpeck.naturesaura.items.*; @@ -25,7 +25,6 @@ import de.ellpeck.naturesaura.potion.ModPotions; import de.ellpeck.naturesaura.potion.PotionBreathless; import de.ellpeck.naturesaura.recipes.EnabledCondition; import de.ellpeck.naturesaura.recipes.ModRecipes; -import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.FlowerPotBlock; import net.minecraft.block.SoundType; @@ -38,21 +37,24 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.inventory.container.ContainerType; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.potion.Effect; -import net.minecraft.tileentity.BlockEntity; -import net.minecraft.tileentity.BlockEntityType; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.LevelGenRegistries; import net.minecraft.level.Level; import net.minecraft.level.gen.feature.Feature; import net.minecraft.level.gen.feature.structure.Structure; +import net.minecraft.tileentity.BlockEntityType; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.LevelGenRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.common.extensions.IForgeContainerType; +import net.minecraftforge.common.extensions.IForgeMenuType; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.client.registry.IRenderFactory; @@ -158,7 +160,7 @@ public final class ModRegistry { public static void registerItems(RegistryEvent.Register event) { for (IModItem block : ALL_ITEMS) { if (block instanceof Block && !(block instanceof INoItemBlock)) { - BlockItem item = new BlockItem((Block) block, new Item.Properties().group(NaturesAura.CREATIVE_TAB)); + BlockItem item = new BlockItem((Block) block, new Item.Properties().tab(NaturesAura.CREATIVE_TAB)); item.setRegistryName(block.getBaseName()); event.getRegistry().register(item); } @@ -243,7 +245,7 @@ public final class ModRegistry { } @SubscribeEvent - public static void registerPotions(RegistryEvent.Register event) { + public static void registerPotions(RegistryEvent.Register event) { event.getRegistry().registerAll( new PotionBreathless() ); @@ -251,16 +253,16 @@ public final class ModRegistry { } @SubscribeEvent - public static void registerContainers(RegistryEvent.Register> event) { + public static void registerContainers(RegistryEvent.Register> event) { event.getRegistry().registerAll( - IForgeContainerType.create((windowId, inv, data) -> { + IForgeMenuType.create((windowId, inv, data) -> { BlockEntity tile = inv.player.level.getBlockEntity(data.readBlockPos()); - if (tile instanceof BlockEntityEnderCrate) - return new ContainerEnderCrate(ModContainers.ENDER_CRATE, windowId, inv.player, ((BlockEntityEnderCrate) tile).getItemHandler()); + if (tile instanceof BlockEntityEnderCrate crate) + return new ContainerEnderCrate(ModContainers.ENDER_CRATE, windowId, inv.player, crate.getItemHandler()); return null; }).setRegistryName("ender_crate"), - IForgeContainerType.create((windowId, inv, data) -> { - IItemHandler handler = ILevelData.getOverworldData(inv.player.level).getEnderStorage(data.readString()); + IForgeMenuType.create((windowId, inv, data) -> { + IItemHandler handler = ILevelData.getOverworldData(inv.player.level).getEnderStorage(data.readUtf()); return new ContainerEnderCrate(ModContainers.ENDER_ACCESS, windowId, inv.player, handler); }).setRegistryName("ender_access") );