From 60506d95be75b3c04c1e67b68b0b56aa1f779aef Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Tue, 21 Jan 2020 21:04:44 +0100 Subject: [PATCH] part 1 of probably 2000 --- build.gradle | 1 + .../java/de/ellpeck/naturesaura/Helper.java | 118 +++++------ .../de/ellpeck/naturesaura/ModConfig.java | 60 +++--- .../naturesaura/api/NaturesAuraAPI.java | 13 +- .../api/aura/chunk/IAuraChunk.java | 15 +- .../aura/container/BasicAuraContainer.java | 4 +- .../api/aura/type/BasicAuraType.java | 6 +- .../naturesaura/api/aura/type/IAuraType.java | 5 +- .../naturesaura/api/misc/IWorldData.java | 8 +- .../api/multiblock/IMultiblock.java | 4 +- .../naturesaura/api/multiblock/Matcher.java | 11 +- .../api/recipes/AnimalSpawnerRecipe.java | 11 +- .../api/recipes/ing/AmountIngredient.java | 8 +- .../blocks/BlockAncientSapling.java | 52 ++--- .../naturesaura/blocks/BlockChunkLoader.java | 20 +- .../blocks/BlockContainerImpl.java | 43 ++-- .../blocks/BlockGeneratorLimitRemover.java | 12 +- .../naturesaura/blocks/BlockGoldPowder.java | 75 +++---- .../naturesaura/blocks/BlockGratedChute.java | 3 +- .../ellpeck/naturesaura/blocks/BlockImpl.java | 2 +- .../naturesaura/blocks/BlockNatureAltar.java | 26 +-- .../naturesaura/blocks/BlockOakGenerator.java | 13 +- .../blocks/BlockOfferingTable.java | 22 +-- .../blocks/BlockPickupStopper.java | 11 +- .../naturesaura/blocks/BlockPowderPlacer.java | 12 +- .../blocks/BlockProjectileGenerator.java | 48 ++--- .../naturesaura/blocks/BlockSpawnLamp.java | 30 ++- .../naturesaura/blocks/BlockStairsNA.java | 2 +- .../naturesaura/blocks/BlockWoodStand.java | 35 ++-- .../naturesaura/blocks/multi/Multiblocks.java | 20 +- .../tiles/TileEntityAnimalGenerator.java | 19 +- .../blocks/tiles/TileEntityAnimalSpawner.java | 44 +++-- .../blocks/tiles/TileEntityAuraDetector.java | 15 +- .../blocks/tiles/TileEntityAutoCrafter.java | 41 ++-- .../blocks/tiles/TileEntityChunkLoader.java | 32 ++- .../blocks/tiles/TileEntityEndFlower.java | 38 ++-- .../blocks/tiles/TileEntityFieldCreator.java | 55 +++--- .../tiles/TileEntityFireworkGenerator.java | 49 ++--- .../tiles/TileEntityFlowerGenerator.java | 51 +++-- .../blocks/tiles/TileEntityFurnaceHeater.java | 50 ++--- .../blocks/tiles/TileEntityGratedChute.java | 36 ++-- .../blocks/tiles/TileEntityHopperUpgrade.java | 32 +-- .../blocks/tiles/TileEntityImpl.java | 69 ++++--- .../blocks/tiles/TileEntityMossGenerator.java | 20 +- .../blocks/tiles/TileEntityNatureAltar.java | 68 ++++--- .../blocks/tiles/TileEntityOakGenerator.java | 18 +- .../blocks/tiles/TileEntityOfferingTable.java | 52 ++--- .../blocks/tiles/TileEntityPlacer.java | 43 ++-- .../tiles/TileEntityPotionGenerator.java | 31 +-- .../tiles/TileEntityProjectileGenerator.java | 10 +- .../blocks/tiles/TileEntityRFConverter.java | 42 ++-- .../blocks/tiles/TileEntityTimeChanger.java | 36 ++-- .../blocks/tiles/TileEntityWoodStand.java | 66 ++++--- .../blocks/tiles/render/RenderEnderCrate.java | 49 ++--- .../render/RenderGeneratorLimitRemover.java | 24 ++- .../tiles/render/RenderNatureAltar.java | 15 +- .../render/RenderProjectileGenerator.java | 2 + .../ellpeck/naturesaura/chunk/AuraChunk.java | 37 ++-- .../chunk/effect/AnimalEffect.java | 26 +-- .../chunk/effect/OreSpawnEffect.java | 27 ++- .../chunk/effect/PlantBoostEffect.java | 22 +-- .../naturesaura/commands/CommandAura.java | 9 +- .../naturesaura/compat/BaublesCompat.java | 2 + .../de/ellpeck/naturesaura/compat/Compat.java | 13 +- .../compat/crafttweaker/AltarTweaker.java | 18 +- .../crafttweaker/AnimalSpawnerTweaker.java | 2 + .../crafttweaker/CraftTweakerCompat.java | 4 +- .../compat/crafttweaker/OfferingTweaker.java | 2 + .../crafttweaker/TreeRitualTweaker.java | 2 + .../compat/jei/{altar => }/AltarCategory.java | 40 ++-- .../{animal => }/AnimalSpawnerCategory.java | 40 ++-- .../compat/jei/JEINaturesAuraPlugin.java | 67 +++---- .../jei/{offering => }/OfferingCategory.java | 37 ++-- .../{treeritual => }/TreeRitualCategory.java | 47 +++-- .../compat/jei/altar/AltarWrapper.java | 28 --- .../jei/animal/AnimalSpawnerWrapper.java | 71 ------- .../compat/jei/offering/OfferingWrapper.java | 25 --- .../jei/treeritual/TreeRitualWrapper.java | 28 --- .../compat/patchouli/ProcessorAltar.java | 2 +- .../patchouli/ProcessorAnimalSpawner.java | 12 +- .../entities/render/RenderMoverMinecart.java | 4 +- .../naturesaura/events/ClientEvents.java | 187 +++++++++--------- .../naturesaura/events/CommonEvents.java | 42 ++-- .../naturesaura/items/RangeVisualizer.java | 14 +- .../naturesaura/packet/PacketAuraChunk.java | 3 +- .../naturesaura/packet/PacketClient.java | 3 +- .../naturesaura/packet/PacketHandler.java | 21 +- .../packet/PacketParticleStream.java | 3 +- .../naturesaura/packet/PacketParticles.java | 3 +- .../naturesaura/recipes/ModRecipes.java | 31 +-- .../naturesaura/reg/NAArmorMaterial.java | 11 +- .../renderers/SupporterFancyHandler.java | 18 +- 92 files changed, 1186 insertions(+), 1412 deletions(-) rename src/main/java/de/ellpeck/naturesaura/compat/jei/{altar => }/AltarCategory.java (65%) rename src/main/java/de/ellpeck/naturesaura/compat/jei/{animal => }/AnimalSpawnerCategory.java (59%) rename src/main/java/de/ellpeck/naturesaura/compat/jei/{offering => }/OfferingCategory.java (66%) rename src/main/java/de/ellpeck/naturesaura/compat/jei/{treeritual => }/TreeRitualCategory.java (54%) delete mode 100644 src/main/java/de/ellpeck/naturesaura/compat/jei/altar/AltarWrapper.java delete mode 100644 src/main/java/de/ellpeck/naturesaura/compat/jei/animal/AnimalSpawnerWrapper.java delete mode 100644 src/main/java/de/ellpeck/naturesaura/compat/jei/offering/OfferingWrapper.java delete mode 100644 src/main/java/de/ellpeck/naturesaura/compat/jei/treeritual/TreeRitualWrapper.java diff --git a/build.gradle b/build.gradle index 55f979d9..fda9a396 100644 --- a/build.gradle +++ b/build.gradle @@ -91,6 +91,7 @@ dependencies { runtimeOnly fg.deobf("mezz.jei:jei-1.14.4:6.0.0.11") compile fg.deobf("com.blamejared.crafttweaker:CraftTweaker-1.14.4:5.0.0.89") + compile fg.deobf("vazkii.patchouli:Patchouli:1.1-25.4") } // Example for how to get properties into the manifest for reading by the runtime.. diff --git a/src/main/java/de/ellpeck/naturesaura/Helper.java b/src/main/java/de/ellpeck/naturesaura/Helper.java index 05c5e651..9469d5c1 100644 --- a/src/main/java/de/ellpeck/naturesaura/Helper.java +++ b/src/main/java/de/ellpeck/naturesaura/Helper.java @@ -1,45 +1,42 @@ package de.ellpeck.naturesaura; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.item.IAuraRecharge; import de.ellpeck.naturesaura.blocks.tiles.TileEntityImpl; import de.ellpeck.naturesaura.chunk.AuraChunk; -import net.minecraft.advancements.Advancement; import net.minecraft.block.Block; -import net.minecraft.block.properties.IProperty; import net.minecraft.block.BlockState; import net.minecraft.client.Minecraft; -import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.model.ItemCameraTransforms; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.item.ItemFrameEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.util.SoundEvents; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; -import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.INBT; +import net.minecraft.state.IProperty; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.SoundCategory; +import net.minecraft.util.*; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; +import net.minecraft.world.IWorld; import net.minecraft.world.World; -import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.AbstractChunkProvider; -import net.minecraft.world.chunk.ServerChunkProvider; +import net.minecraft.world.chunk.Chunk; +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.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; +import net.minecraftforge.registries.ForgeRegistries; import org.lwjgl.opengl.GL11; import javax.annotation.Nonnull; @@ -50,46 +47,39 @@ import java.util.function.Function; public final class Helper { - public static boolean getTileEntitiesInArea(World world, BlockPos pos, int radius, Function consumer) { - world.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":getTileEntitiesInArea"); + public static boolean getTileEntitiesInArea(IWorld world, 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++) { if (isChunkLoaded(world, x, z)) { - for (TileEntity tile : world.getChunk(x, z).getTileEntityMap().values()) { - if (tile.getPos().distanceSq(pos) <= radius * radius) - if (consumer.apply(tile)) { - world.profiler.endSection(); + for (BlockPos tilePos : world.getChunk(x, z).getTileEntitiesPos()) { + if (tilePos.distanceSq(pos) <= radius * radius) + if (consumer.apply(world.getTileEntity(tilePos))) return true; - } } } } } - world.profiler.endSection(); return false; } public static void getAuraChunksInArea(World world, BlockPos pos, int radius, Consumer consumer) { - world.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":getAuraChunksInArea"); 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++) { - if (Helper.isChunkLoaded(world, x, z)) { + if (isChunkLoaded(world, x, z)) { Chunk chunk = world.getChunk(x, z); - if (chunk.hasCapability(NaturesAuraAPI.capAuraChunk, null)) { - AuraChunk auraChunk = (AuraChunk) chunk.getCapability(NaturesAuraAPI.capAuraChunk, null); + AuraChunk auraChunk = (AuraChunk) chunk.getCapability(NaturesAuraAPI.capAuraChunk, null).orElse(null); + if (auraChunk != null) consumer.accept(auraChunk); - } } } } - world.profiler.endSection(); } public static List getAttachedItemFrames(World world, BlockPos pos) { List frames = world.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.facingDirection.getOpposite()); + BlockPos framePos = frame.getHangingPosition().offset(frame.getHorizontalFacing()); if (!pos.equals(framePos)) frames.remove(i); } @@ -98,12 +88,13 @@ public final class Helper { // For some reason this method isn't public in World, but I also don't want to have to make a new BlockPos // or use the messy MutableBlockPos system just to see if a chunk is loaded, so this will have to do I guess - public static boolean isChunkLoaded(World world, int x, int z) { + public static boolean isChunkLoaded(IWorld world, int x, int z) { AbstractChunkProvider provider = world.getChunkProvider(); - if (provider instanceof ServerChunkProvider) - return ((ServerChunkProvider) provider).chunkExists(x, z); - else - return !provider.provideChunk(x, z).isEmpty(); + if (!world.isRemote()) { + return provider.chunkExists(x, z); + } else { + return !provider.getChunk(x, z, false).isEmpty(); + } } public static int blendColors(int c1, int c2, float ratio) { @@ -117,7 +108,7 @@ public final class Helper { public static boolean areItemsEqual(ItemStack first, ItemStack second, boolean nbt) { if (!ItemStack.areItemsEqual(first, second)) return false; - return !nbt || ItemStack.areItemStackShareTagsEqual(first, second); + return !nbt || ItemStack.areItemStackTagsEqual(first, second); } @OnlyIn(Dist.CLIENT) @@ -125,11 +116,13 @@ public final class Helper { if (!stack.isEmpty()) { GlStateManager.pushMatrix(); GlStateManager.disableLighting(); - GlStateManager.pushAttrib(); + GlStateManager.pushTextureAttributes(); + GlStateManager.pushLightingAttributes(); RenderHelper.enableStandardItemLighting(); - Minecraft.getMinecraft().getRenderItem().renderItem(stack, ItemCameraTransforms.TransformType.FIXED); + Minecraft.getInstance().getItemRenderer().renderItem(stack, ItemCameraTransforms.TransformType.FIXED); RenderHelper.disableStandardItemLighting(); - GlStateManager.popAttrib(); + GlStateManager.popAttributes(); + GlStateManager.popAttributes(); GlStateManager.enableLighting(); GlStateManager.popMatrix(); } @@ -141,12 +134,12 @@ public final class Helper { GlStateManager.enableBlend(); GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); RenderHelper.enableGUIStandardItemLighting(); - GlStateManager.enableDepth(); + GlStateManager.enableDepthTest(); GlStateManager.enableRescaleNormal(); - GlStateManager.translate(x, y, 0); - GlStateManager.scale(scale, scale, scale); - Minecraft.getMinecraft().getRenderItem().renderItemAndEffectIntoGUI(stack, 0, 0); - Minecraft.getMinecraft().getRenderItem().renderItemOverlayIntoGUI(Minecraft.getMinecraft().fontRenderer, stack, 0, 0, null); + GlStateManager.translatef(x, y, 0); + GlStateManager.scalef(scale, scale, scale); + Minecraft.getInstance().getItemRenderer().renderItemAndEffectIntoGUI(stack, 0, 0); + Minecraft.getInstance().getItemRenderer().renderItemOverlayIntoGUI(Minecraft.getInstance().fontRenderer, stack, 0, 0, null); RenderHelper.disableStandardItemLighting(); GlStateManager.popMatrix(); } @@ -162,7 +155,7 @@ public final class Helper { if (!ItemStack.areItemStacksEqual(remain, handStack)) { if (sound) player.world.playSound(player, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, - SoundEvents.ENTITY_ITEMFRAME_ADD_ITEM, SoundCategory.PLAYERS, 0.75F, 1F); + SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, SoundCategory.PLAYERS, 0.75F, 1F); if (!player.world.isRemote) player.setHeldItem(hand, remain); return true; @@ -172,12 +165,12 @@ public final class Helper { if (!handler.getStackInSlot(slot).isEmpty()) { if (sound) player.world.playSound(player, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, - SoundEvents.ENTITY_ITEMFRAME_REMOVE_ITEM, SoundCategory.PLAYERS, 0.75F, 1F); + SoundEvents.ENTITY_ITEM_FRAME_REMOVE_ITEM, SoundCategory.PLAYERS, 0.75F, 1F); if (!player.world.isRemote) { ItemStack stack = handler.getStackInSlot(slot); if (!player.addItemStackToInventory(stack)) { ItemEntity item = new ItemEntity(player.world, player.posX, player.posY, player.posZ, stack); - player.world.spawnEntity(item); + player.world.addEntity(item); } handler.setStackInSlot(slot, ItemStack.EMPTY); } @@ -193,8 +186,8 @@ public final class Helper { private final IAuraRecharge recharge = (container, containerSlot, itemSlot, isSelected) -> { if (isSelected || !needsSelected) { int toDrain = 300; - if (stack.getItemDamage() > 0 && container.drainAura(toDrain, true) >= toDrain) { - stack.setItemDamage(stack.getItemDamage() - 1); + if (stack.getDamage() > 0 && container.drainAura(toDrain, true) >= toDrain) { + stack.setDamage(stack.getDamage() - 1); container.drainAura(toDrain, false); return true; } @@ -202,28 +195,25 @@ public final class Helper { return false; }; - @Override - public boolean hasCapability(@Nonnull Capability capability, @Nullable Direction facing) { - return capability == NaturesAuraAPI.capAuraRecharge; - } - @Nullable @Override - public T getCapability(@Nonnull Capability capability, @Nullable Direction facing) { - return capability == NaturesAuraAPI.capAuraRecharge ? (T) this.recharge : null; + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction facing) { + if (capability == NaturesAuraAPI.capAuraRecharge) + return LazyOptional.of(() -> (T) this.recharge); + return LazyOptional.empty(); } }; } public static BlockState getStateFromString(String raw) { String[] split = raw.split("\\["); - Block block = Block.REGISTRY.getObject(new ResourceLocation(split[0])); + Block block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(split[0])); if (block != null) { BlockState state = block.getDefaultState(); if (split.length > 1) { for (String part : split[1].replace("]", "").split(",")) { String[] keyValue = part.split("="); - for (IProperty prop : state.getProperties().keySet()) { + for (IProperty prop : state.getProperties()) { BlockState changed = findProperty(state, prop, keyValue[0], keyValue[1]); if (changed != null) { state = changed; @@ -241,32 +231,32 @@ public final class Helper { if (key.equals(prop.getName())) for (T value : prop.getAllowedValues()) if (prop.getName(value).equals(newValue)) - return state.withProperty(prop, value); + return state.with(prop, value); return null; } public static void registerCap(Class type) { CapabilityManager.INSTANCE.register(type, new Capability.IStorage() { - @Nullable @Override - public NBTBase writeNBT(Capability capability, Object instance, Direction side) { - return null; + public void readNBT(Capability capability, T instance, Direction side, INBT nbt) { + } + @Nullable @Override - public void readNBT(Capability capability, Object instance, Direction side, NBTBase nbt) { - + public INBT writeNBT(Capability capability, Object instance, Direction side) { + return null; } }, () -> null); } public static void addAdvancement(PlayerEntity player, ResourceLocation advancement, String criterion) { if (!(player instanceof ServerPlayerEntity)) - return; + return;/* TODO add advancements ServerPlayerEntity playerMp = (ServerPlayerEntity) player; Advancement adv = playerMp.getServerWorld().getAdvancementManager().getAdvancement(advancement); if (adv != null) - playerMp.getAdvancements().grantCriterion(adv, criterion); + playerMp.getAdvancements().grantCriterion(adv, criterion);*/ } public static int getIngredientAmount(Ingredient ingredient) { diff --git a/src/main/java/de/ellpeck/naturesaura/ModConfig.java b/src/main/java/de/ellpeck/naturesaura/ModConfig.java index d72e788c..edb8d12a 100644 --- a/src/main/java/de/ellpeck/naturesaura/ModConfig.java +++ b/src/main/java/de/ellpeck/naturesaura/ModConfig.java @@ -7,11 +7,9 @@ import de.ellpeck.naturesaura.api.recipes.WeightedOre; import de.ellpeck.naturesaura.chunk.effect.OreSpawnEffect; import net.minecraft.util.ResourceLocation; import net.minecraft.world.dimension.DimensionType; -import net.minecraftforge.common.config.Config; -import net.minecraftforge.common.config.Config.Comment; -import net.minecraftforge.common.config.Config.RangeDouble; -@Config(modid = NaturesAura.MOD_ID, category = "") +// TODO configs +//@Config(modid = NaturesAura.MOD_ID, category = "") public final class ModConfig { public static General general = new General(); @@ -20,72 +18,72 @@ public final class ModConfig { public static class General { - @Comment("Additional conversion recipes for the Botanist's Pickaxe right click function. Each entry needs to be formatted as modid:input_block[prop1=value1,...]->modid:output_block[prop1=value1,...] where block state properties are optional") + //@Comment("Additional conversion recipes for the Botanist's Pickaxe right click function. Each entry needs to be formatted as modid:input_block[prop1=value1,...]->modid:output_block[prop1=value1,...] where block state properties are optional") public String[] additionalBotanistPickaxeConversions = new String[0]; - @Comment("Additional blocks that several mechanics identify as flowers. Each entry needs to be formatted as modid:block[prop1=value1,...] where block state properties are optional") + //@Comment("Additional blocks that several mechanics identify as flowers. Each entry needs to be formatted as modid:block[prop1=value1,...] where block state properties are optional") public String[] additionalFlowers = new String[0]; - @Comment("Additional dimensions that map to Aura types that should be present in them. This is useful if you have a modpack with custom dimensions that should have Aura act similarly to an existing dimension in them. Each entry needs to be formatted as dimension_name->aura_type, where aura_type can be any of naturesaura:overworld, naturesaura:nether and naturesaura:end.") + //@Comment("Additional dimensions that map to Aura types that should be present in them. This is useful if you have a modpack with custom dimensions that should have Aura act similarly to an existing dimension in them. Each entry needs to be formatted as dimension_name->aura_type, where aura_type can be any of naturesaura:overworld, naturesaura:nether and naturesaura:end.") public String[] auraTypeOverrides = new String[0]; - @Comment("Additional blocks that are recognized as generatable ores for the passive ore generation effect. Each entry needs to be formatted as oredictEntry:oreWeight:dimension where a higher weight makes the ore more likely to spawn with 5000 being the weight of coal, the default ore with the highest weight, and dimension being any of overworld and nether") + //@Comment("Additional blocks that are recognized as generatable ores for the passive ore generation effect. Each entry needs to be formatted as oredictEntry:oreWeight:dimension where a higher weight makes the ore more likely to spawn with 5000 being the weight of coal, the default ore with the highest weight, and dimension being any of overworld and nether") public String[] additionalOres = new String[0]; - @Comment("Blocks that are exempt from being recognized as generatable ores for the passive ore generation effect. Each entry needs to be formatted as modid:block[prop1=value1,...] where block state properties are optional") + //@Comment("Blocks that are exempt from being recognized as generatable ores for the passive ore generation effect. Each entry needs to be formatted as modid:block[prop1=value1,...] where block state properties are optional") public String[] oreExceptions = new String[0]; - @Comment("Additional projectile types that are allowed to be consumed by the projectile generator. Each entry needs to be formatted as entity_registry_name->aura_amount") + //@Comment("Additional projectile types that are allowed to be consumed by the projectile generator. Each entry needs to be formatted as entity_registry_name->aura_amount") public String[] additionalProjectiles = new String[0]; - @Comment("The amount of blocks that can be between two Aura Field Creators for them to be connectable and work together") + //@Comment("The amount of blocks that can be between two Aura Field Creators for them to be connectable and work together") public int fieldCreatorRange = 10; - @Comment("The Aura to RF ratio used by the RF converter, read as aura*ratio = rf") + //@Comment("The Aura to RF ratio used by the RF converter, read as aura*ratio = rf") public float auraToRFRatio = 0.05F; } public static class Features { - @Comment("If using Dragon's Breath in a Brewing Stand should not cause a glass bottle to appear") + //@Comment("If using Dragon's Breath in a Brewing Stand should not cause a glass bottle to appear") public boolean removeDragonBreathContainerItem = true; - @Comment("If the RF converter block should be enabled") + //@Comment("If the RF converter block should be enabled") public boolean rfConverter = true; - @Comment("If the chunk loader block should be enabled") + //@Comment("If the chunk loader block should be enabled") public boolean chunkLoader = true; - @Comment("If the Aura Imbalance effect of grass and trees dying in the area if the Aura levels are too low should occur") + //@Comment("If the Aura Imbalance effect of grass and trees dying in the area if the Aura levels are too low should occur") public boolean grassDieEffect = true; - @Comment("If the Aura Imbalance effect of plant growth being boosted if the Aura levels are high enough should occur") + //@Comment("If the Aura Imbalance effect of plant growth being boosted if the Aura levels are high enough should occur") public boolean plantBoostEffect = true; - @Comment("If the Aura Imbalance effect of aura containers in players' inventories being filled if the Aura levels are high enough should occur") + //@Comment("If the Aura Imbalance effect of aura containers in players' inventories being filled if the Aura levels are high enough should occur") public boolean cacheRechargeEffect = true; - @Comment("If the Aura Imbalance effect of explosions happening randomly if Aura levels are too low should occur") + //@Comment("If the Aura Imbalance effect of explosions happening randomly if Aura levels are too low should occur") public boolean explosionEffect = true; - @Comment("If the Aura Imbalance effect of breathlessness if Aura levels are too low should occur") + //@Comment("If the Aura Imbalance effect of breathlessness if Aura levels are too low should occur") public boolean breathlessEffect = true; - @Comment("If the Aura Imbalance effect of farm animals being affected in positive ways if Aura levels are too high should occur") + //@Comment("If the Aura Imbalance effect of farm animals being affected in positive ways if Aura levels are too high should occur") public boolean animalEffect = true; - @Comment("If the Aura Imbalance effect of ores spawning in the area if Aura levels are too high should occur") + //@Comment("If the Aura Imbalance effect of ores spawning in the area if Aura levels are too high should occur") public boolean oreEffect = true; } public static class Client { - @Comment("The percentage of particles that should be displayed, where 1 is 100% and 0 is 0%") - @RangeDouble(min = 0, max = 1) + //@Comment("The percentage of particles that should be displayed, where 1 is 100% and 0 is 0%") + //@RangeDouble(min = 0, max = 1) public double particleAmount = 1; - @Comment("If particle spawning should respect the particle setting in Minecraft's video settings screen") + //@Comment("If particle spawning should respect the particle setting in Minecraft's video settings screen") public boolean respectVanillaParticleSettings = true; - @Comment("The percentage of particles that should spawn when there is an excess amount of Aura in the environment, where 1 is 100% and 0 is 0%") + //@Comment("The percentage of particles that should spawn when there is an excess amount of Aura in the environment, where 1 is 100% and 0 is 0%") public double excessParticleAmount = 1; - @Comment("The location of the aura bar, where 0 is top left, 1 is top right, 2 is bottom left and 3 is bottom right") - @Config.RangeInt(min = 0, max = 3) + //@Comment("The location of the aura bar, where 0 is top left, 1 is top right, 2 is bottom left and 3 is bottom right") + //@Config.RangeInt(min = 0, max = 3) public int auraBarLocation = 0; - @Comment("If debug information about Aura around the player should be displayed in the F3 debug menu if the player is in creative mode") + //@Comment("If debug information about Aura around the player should be displayed in the F3 debug menu if the player is in creative mode") public boolean debugText = true; - @Comment("If, when the F3 debug menu is open and the player is in creative mode, every Aura spot should be highlighted in the world for debug purposes") + //@Comment("If, when the F3 debug menu is open and the player is in creative mode, every Aura spot should be highlighted in the world for debug purposes") public boolean debugWorld = false; } @@ -114,7 +112,7 @@ public final class ModConfig { String[] split = s.split("->"); IAuraType type = NaturesAuraAPI.AURA_TYPES.get(new ResourceLocation(split[1])); if (type instanceof BasicAuraType) - ((BasicAuraType) type).addDimensionType(DimensionType.byName(split[0])); + ((BasicAuraType) type).addDimensionType(DimensionType.byName(new ResourceLocation(split[0]))); } } catch (Exception e) { NaturesAura.LOGGER.warn("Error parsing auraTypeOverrides", e); diff --git a/src/main/java/de/ellpeck/naturesaura/api/NaturesAuraAPI.java b/src/main/java/de/ellpeck/naturesaura/api/NaturesAuraAPI.java index e08a4ee5..637067ba 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/NaturesAuraAPI.java +++ b/src/main/java/de/ellpeck/naturesaura/api/NaturesAuraAPI.java @@ -13,16 +13,17 @@ import de.ellpeck.naturesaura.api.misc.IWorldData; import de.ellpeck.naturesaura.api.multiblock.IMultiblock; import de.ellpeck.naturesaura.api.multiblock.Matcher; import de.ellpeck.naturesaura.api.recipes.*; -import net.minecraft.block.FlowerBlock; import net.minecraft.block.BlockState; +import net.minecraft.block.FlowerBlock; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Tuple; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; -import net.minecraft.world.dimension.DimensionType; +import net.minecraft.world.IWorld; import net.minecraft.world.World; +import net.minecraft.world.dimension.DimensionType; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.CapabilityInject; @@ -83,7 +84,7 @@ public final class NaturesAuraAPI { */ public static final Map AURA_TYPES = new HashMap<>(); public static final BasicAuraType TYPE_OVERWORLD = new BasicAuraType(new ResourceLocation(MOD_ID, "overworld"), DimensionType.OVERWORLD, 0xbef224, 0).register(); - public static final BasicAuraType TYPE_NETHER = new BasicAuraType(new ResourceLocation(MOD_ID, "nether"), DimensionType.NETHER, 0x871c0c, 0).register(); + public static final BasicAuraType TYPE_NETHER = new BasicAuraType(new ResourceLocation(MOD_ID, "nether"), DimensionType.THE_NETHER, 0x871c0c, 0).register(); public static final BasicAuraType TYPE_END = new BasicAuraType(new ResourceLocation(MOD_ID, "end"), DimensionType.THE_END, 0x302624, 0).register(); public static final BasicAuraType TYPE_OTHER = new BasicAuraType(new ResourceLocation(MOD_ID, "other"), null, 0x2fa8a0, Integer.MIN_VALUE).register(); /** @@ -148,7 +149,7 @@ public final class NaturesAuraAPI { * is only applicable to chunks and all chunks in the world automatically * get assigned this capability, using it directly is not necessary for * addon developers. To retrieve this capability from any chunk, use the - * helper method {@link IAuraChunk#getAuraChunk(World, BlockPos)}. + * helper method {@link IAuraChunk#getAuraChunk(IWorld, BlockPos)}. */ @CapabilityInject(IAuraChunk.class) public static Capability capAuraChunk; @@ -343,9 +344,9 @@ public final class NaturesAuraAPI { BlockPos getLowestAuraDrainSpot(World world, BlockPos pos, int radius, BlockPos defaultSpot); /** - * @see IAuraChunk#getHighestSpot(World, BlockPos, int, BlockPos) + * @see IAuraChunk#getHighestSpot(IWorld, BlockPos, int, BlockPos) */ - BlockPos getHighestAuraDrainSpot(World world, BlockPos pos, int radius, BlockPos defaultSpot); + BlockPos getHighestAuraDrainSpot(IWorld world, BlockPos pos, int radius, BlockPos defaultSpot); } } diff --git a/src/main/java/de/ellpeck/naturesaura/api/aura/chunk/IAuraChunk.java b/src/main/java/de/ellpeck/naturesaura/api/aura/chunk/IAuraChunk.java index edf34ce1..2e7e5719 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/aura/chunk/IAuraChunk.java +++ b/src/main/java/de/ellpeck/naturesaura/api/aura/chunk/IAuraChunk.java @@ -4,6 +4,7 @@ import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.type.IAuraType; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.common.util.INBTSerializable; @@ -13,7 +14,7 @@ import java.util.function.BiConsumer; /** * A class whose instances hold information about the aura present in any given * {@link Chunk}. To get an instance for a chunk, use {@link - * #getAuraChunk(World, BlockPos)}. + * #getAuraChunk(IWorld, BlockPos)}. *

* It is not intended for API users to create custom implementation of this * class. @@ -32,13 +33,9 @@ public interface IAuraChunk extends INBTSerializable { * @param pos A position that the chunk contains * @return The {@link IAuraChunk} instance belonging to the chunk */ - static IAuraChunk getAuraChunk(World world, BlockPos pos) { - Chunk chunk = world.getChunk(pos); - if (chunk.hasCapability(NaturesAuraAPI.capAuraChunk, null)) { - return chunk.getCapability(NaturesAuraAPI.capAuraChunk, null); - } else { - return null; - } + static IAuraChunk getAuraChunk(IWorld world, BlockPos pos) { + Chunk chunk = (Chunk) world.getChunk(pos); + return chunk.getCapability(NaturesAuraAPI.capAuraChunk, null).orElse(null); } /** @@ -136,7 +133,7 @@ public interface IAuraChunk extends INBTSerializable { * spot when none are found * @return The position of the highest drain spot */ - static BlockPos getHighestSpot(World world, BlockPos pos, int radius, BlockPos defaultSpot) { + static BlockPos getHighestSpot(IWorld world, BlockPos pos, int radius, BlockPos defaultSpot) { return NaturesAuraAPI.instance().getHighestAuraDrainSpot(world, pos, radius, defaultSpot); } diff --git a/src/main/java/de/ellpeck/naturesaura/api/aura/container/BasicAuraContainer.java b/src/main/java/de/ellpeck/naturesaura/api/aura/container/BasicAuraContainer.java index e7ff0acd..c51531b0 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/aura/container/BasicAuraContainer.java +++ b/src/main/java/de/ellpeck/naturesaura/api/aura/container/BasicAuraContainer.java @@ -53,10 +53,10 @@ public class BasicAuraContainer implements IAuraContainer { } public void writeNBT(CompoundNBT compound) { - compound.setInteger("aura", this.aura); + compound.putInt("aura", this.aura); } public void readNBT(CompoundNBT compound) { - this.aura = compound.getInteger("aura"); + this.aura = compound.getInt("aura"); } } diff --git a/src/main/java/de/ellpeck/naturesaura/api/aura/type/BasicAuraType.java b/src/main/java/de/ellpeck/naturesaura/api/aura/type/BasicAuraType.java index 7cdc54bb..dc0f8ca1 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/aura/type/BasicAuraType.java +++ b/src/main/java/de/ellpeck/naturesaura/api/aura/type/BasicAuraType.java @@ -2,8 +2,8 @@ package de.ellpeck.naturesaura.api.aura.type; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import net.minecraft.util.ResourceLocation; +import net.minecraft.world.IWorld; import net.minecraft.world.dimension.DimensionType; -import net.minecraft.world.World; import java.util.HashSet; import java.util.Set; @@ -34,8 +34,8 @@ public class BasicAuraType implements IAuraType { } @Override - public boolean isPresentInWorld(World world) { - return this.dimensions.isEmpty() || this.dimensions.contains(world.provider.getDimensionType()); + public boolean isPresentInWorld(IWorld world) { + return this.dimensions.isEmpty() || this.dimensions.contains(world.getDimension().getType()); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/api/aura/type/IAuraType.java b/src/main/java/de/ellpeck/naturesaura/api/aura/type/IAuraType.java index 88a9c468..834dfbba 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/aura/type/IAuraType.java +++ b/src/main/java/de/ellpeck/naturesaura/api/aura/type/IAuraType.java @@ -2,11 +2,12 @@ package de.ellpeck.naturesaura.api.aura.type; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import net.minecraft.util.ResourceLocation; +import net.minecraft.world.IWorld; import net.minecraft.world.World; public interface IAuraType { - static IAuraType forWorld(World world) { + static IAuraType forWorld(IWorld world) { IAuraType highestType = NaturesAuraAPI.TYPE_OTHER; for (IAuraType type : NaturesAuraAPI.AURA_TYPES.values()) if (type.isPresentInWorld(world) && type.getPriority() > highestType.getPriority()) @@ -16,7 +17,7 @@ public interface IAuraType { ResourceLocation getName(); - boolean isPresentInWorld(World world); + boolean isPresentInWorld(IWorld world); int getColor(); diff --git a/src/main/java/de/ellpeck/naturesaura/api/misc/IWorldData.java b/src/main/java/de/ellpeck/naturesaura/api/misc/IWorldData.java index cdf84e13..417445f2 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/misc/IWorldData.java +++ b/src/main/java/de/ellpeck/naturesaura/api/misc/IWorldData.java @@ -2,8 +2,8 @@ package de.ellpeck.naturesaura.api.misc; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import net.minecraft.nbt.CompoundNBT; -import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.World; +import net.minecraft.world.dimension.DimensionType; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.items.IItemHandlerModifiable; @@ -11,14 +11,12 @@ import net.minecraftforge.items.IItemHandlerModifiable; public interface IWorldData extends ICapabilityProvider, INBTSerializable { static IWorldData getWorldData(World world) { - if (world.hasCapability(NaturesAuraAPI.capWorldData, null)) - return world.getCapability(NaturesAuraAPI.capWorldData, null); - return null; + return world.getCapability(NaturesAuraAPI.capWorldData, null).orElse(null); } static IWorldData getOverworldData(World world) { if (!world.isRemote) - return getWorldData(world.getMinecraftServer().getWorld(DimensionType.OVERWORLD.getId())); + return getWorldData(world.getServer().getWorld(DimensionType.OVERWORLD)); return getWorldData(world); } diff --git a/src/main/java/de/ellpeck/naturesaura/api/multiblock/IMultiblock.java b/src/main/java/de/ellpeck/naturesaura/api/multiblock/IMultiblock.java index 0415357a..ab0ce487 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/multiblock/IMultiblock.java +++ b/src/main/java/de/ellpeck/naturesaura/api/multiblock/IMultiblock.java @@ -2,14 +2,14 @@ package de.ellpeck.naturesaura.api.multiblock; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; +import net.minecraft.world.IWorld; import java.util.Map; import java.util.function.BiFunction; public interface IMultiblock { - boolean isComplete(World world, BlockPos center); + boolean isComplete(IWorld world, BlockPos center); boolean forEach(BlockPos center, char c, BiFunction function); 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 df03536d..3c2a5bfb 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/multiblock/Matcher.java +++ b/src/main/java/de/ellpeck/naturesaura/api/multiblock/Matcher.java @@ -3,13 +3,8 @@ package de.ellpeck.naturesaura.api.multiblock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; - -import java.util.ArrayList; -import java.util.List; public class Matcher { @@ -34,7 +29,9 @@ public class Matcher { } public static Matcher oreDict(Block defaultBlock, String name) { - return new Matcher(defaultBlock.getDefaultState(), new ICheck() { + return new Matcher(defaultBlock.getDefaultState(), + (world, start, offset, pos, state, otherC) -> state.getBlock() == defaultBlock); + /* TODO return new Matcher(defaultBlock.getDefaultState(), new ICheck() { private List states; @Override @@ -55,7 +52,7 @@ public class Matcher { return this.states.isEmpty() || this.states.contains(state); } - }); + });*/ } public interface ICheck { diff --git a/src/main/java/de/ellpeck/naturesaura/api/recipes/AnimalSpawnerRecipe.java b/src/main/java/de/ellpeck/naturesaura/api/recipes/AnimalSpawnerRecipe.java index 11ed1ace..86dc8d2c 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/recipes/AnimalSpawnerRecipe.java +++ b/src/main/java/de/ellpeck/naturesaura/api/recipes/AnimalSpawnerRecipe.java @@ -2,13 +2,14 @@ package de.ellpeck.naturesaura.api.recipes; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; import net.minecraft.entity.MobEntity; +import net.minecraft.entity.SpawnReason; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; -import net.minecraftforge.fml.common.registry.EntityEntry; -import net.minecraftforge.fml.common.registry.ForgeRegistries; +import net.minecraftforge.registries.ForgeRegistries; public class AnimalSpawnerRecipe { @@ -27,10 +28,10 @@ public class AnimalSpawnerRecipe { } public Entity makeEntity(World world, double x, double y, double z) { - EntityEntry entry = ForgeRegistries.ENTITIES.getValue(this.entity); + EntityType entry = ForgeRegistries.ENTITIES.getValue(this.entity); if (entry == null) return null; - Entity entity = entry.newInstance(world); + Entity entity = entry.create(world); if (x == 0 && y == 0 && z == 0) return entity; entity.setLocationAndAngles(x, y, z, MathHelper.wrapDegrees(world.rand.nextFloat() * 360F), 0F); @@ -38,7 +39,7 @@ public class AnimalSpawnerRecipe { MobEntity living = (MobEntity) entity; living.rotationYawHead = entity.rotationYaw; living.renderYawOffset = entity.rotationYaw; - living.onInitialSpawn(world.getDifficultyForLocation(living.getPosition()), null); + living.onInitialSpawn(world, world.getDifficultyForLocation(living.getPosition()), SpawnReason.SPAWNER, null, null); // TODO test if null is okay here } return entity; } diff --git a/src/main/java/de/ellpeck/naturesaura/api/recipes/ing/AmountIngredient.java b/src/main/java/de/ellpeck/naturesaura/api/recipes/ing/AmountIngredient.java index 625f404b..ea46bdaa 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/recipes/ing/AmountIngredient.java +++ b/src/main/java/de/ellpeck/naturesaura/api/recipes/ing/AmountIngredient.java @@ -4,6 +4,8 @@ import it.unimi.dsi.fastutil.ints.IntList; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; +import java.util.stream.Stream; + public class AmountIngredient extends Ingredient { public final Ingredient delegate; @@ -11,7 +13,7 @@ public class AmountIngredient extends Ingredient { private ItemStack[] matchingStacks; public AmountIngredient(Ingredient delegate, int amount) { - super(0); + super(Stream.empty()); this.delegate = delegate; this.amount = amount; } @@ -35,8 +37,8 @@ public class AmountIngredient extends Ingredient { } @Override - public boolean apply(ItemStack stack) { - if (!this.delegate.apply(stack)) + public boolean test(ItemStack stack) { + if (!this.delegate.test(stack)) return false; return stack.getCount() >= this.amount; } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientSapling.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientSapling.java index 93ef658d..0a02a8c0 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientSapling.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientSapling.java @@ -6,24 +6,18 @@ import de.ellpeck.naturesaura.reg.IModelProvider; import de.ellpeck.naturesaura.reg.ModRegistry; import net.minecraft.block.*; import net.minecraft.block.material.Material; -import net.minecraft.block.state.BlockStateContainer; -import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.state.StateContainer; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockAccess; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; import net.minecraft.world.World; -import net.minecraftforge.event.terraingen.TerrainGen; -import net.minecraftforge.fml.common.event.FMLInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.event.ForgeEventFactory; import java.util.Random; -// Make this extend SaplingBlock? public class BlockAncientSapling extends BushBlock implements IGrowable, IModItem, IModelProvider { - - private static final AxisAlignedBB AABB = new AxisAlignedBB( - 0.09999999403953552D, 0.0D, 0.09999999403953552D, - 0.8999999761581421D, 0.800000011920929D, 0.8999999761581421D); + protected static final VoxelShape SHAPE = Block.makeCuboidShape(2.0D, 0.0D, 2.0D, 14.0D, 12.0D, 14.0D); public BlockAncientSapling() { super(ModBlocks.prop(Material.PLANTS).hardnessAndResistance(0.0F).sound(SoundType.PLANT)); @@ -31,17 +25,17 @@ public class BlockAncientSapling extends BushBlock implements IGrowable, IModIte } @Override - public AxisAlignedBB getBoundingBox(BlockState state, IBlockAccess source, BlockPos pos) { - return AABB; + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return SHAPE; } @Override - public void updateTick(World world, BlockPos pos, BlockState state, Random rand) { + public void randomTick(BlockState state, World world, BlockPos pos, Random random) { if (!world.isRemote) { - super.updateTick(world, pos, state, rand); + super.randomTick(state, world, pos, random); - if (world.getLightFromNeighbors(pos.up()) >= 9 && rand.nextInt(7) == 0) { - this.grow(world, rand, pos, state); + if (world.getLight(pos.up()) >= 9 && random.nextInt(7) == 0) { + this.grow(world, random, pos, state); } } } @@ -52,22 +46,12 @@ public class BlockAncientSapling extends BushBlock implements IGrowable, IModIte } @Override - public BlockState getStateFromMeta(int meta) { - return this.getDefaultState().withProperty(SaplingBlock.STAGE, meta); + protected void fillStateContainer(StateContainer.Builder builder) { + builder.add(SaplingBlock.STAGE); } @Override - public int getMetaFromState(BlockState state) { - return state.getValue(SaplingBlock.STAGE); - } - - @Override - protected BlockStateContainer createBlockState() { - return new BlockStateContainer(this, SaplingBlock.STAGE); - } - - @Override - public boolean canGrow(World world, BlockPos pos, BlockState state, boolean isClient) { + public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { return true; } @@ -78,9 +62,9 @@ public class BlockAncientSapling extends BushBlock implements IGrowable, IModIte @Override public void grow(World world, Random rand, BlockPos pos, BlockState state) { - if (state.getValue(SaplingBlock.STAGE) == 0) { - world.setBlockState(pos, state.cycleProperty(SaplingBlock.STAGE), 4); - } else if (TerrainGen.saplingGrowTree(world, rand, pos)) { + if (state.get(SaplingBlock.STAGE) == 0) { + world.setBlockState(pos, state.cycle(SaplingBlock.STAGE), 4); + } else if (ForgeEventFactory.saplingGrowTree(world, rand, pos)) { new WorldGenAncientTree(true).generate(world, rand, pos); } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java index c948245b..201af3f0 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java @@ -1,35 +1,22 @@ package de.ellpeck.naturesaura.blocks; -import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.render.IVisualizable; import de.ellpeck.naturesaura.blocks.tiles.TileEntityChunkLoader; -import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.block.state.BlockFaceShape; -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.BlockRenderLayer; -import net.minecraft.util.Direction; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockReader; -import net.minecraft.world.IEnviromentBlockReader; import net.minecraft.world.World; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import java.util.List; import java.util.Random; public class BlockChunkLoader extends BlockContainerImpl implements IVisualizable { @@ -92,7 +79,8 @@ public class BlockChunkLoader extends BlockContainerImpl implements IVisualizabl return SHAPE; } - public static class ChunkLoadingCallback implements ForgeChunkManager.LoadingCallback { + // TODO chunk loading + /*public static class ChunkLoadingCallback implements ForgeChunkManager.LoadingCallback { @Override public void ticketsLoaded(List tickets, World world) { @@ -107,5 +95,5 @@ public class BlockChunkLoader extends BlockContainerImpl implements IVisualizabl loader.loadChunks(); } } - } + }*/ } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockContainerImpl.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockContainerImpl.java index 5d1edea3..32f43aad 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockContainerImpl.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockContainerImpl.java @@ -1,26 +1,17 @@ package de.ellpeck.naturesaura.blocks; -import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.blocks.tiles.TileEntityImpl; import de.ellpeck.naturesaura.reg.IModItem; import de.ellpeck.naturesaura.reg.IModelProvider; import de.ellpeck.naturesaura.reg.ModRegistry; -import net.minecraft.block.Block; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.ContainerBlock; +import net.minecraft.block.*; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; -import net.minecraftforge.fml.common.event.FMLInitializationEvent; -import net.minecraftforge.fml.common.registry.GameRegistry; import javax.annotation.Nullable; import java.util.Random; @@ -57,17 +48,17 @@ public class BlockContainerImpl extends ContainerBlock implements IModItem, IMod public String getBaseName() { return this.baseName; } - +/* TODO tile entties??? public void onInit(FMLInitializationEvent event) { - GameRegistry.registerTileEntity(this.tileClass, new ResourceLocation(NaturesAura.MOD_ID, this.tileRegName)); - } + ForgeRegistries.TILE_ENTITIES.register(this.tileClass, new ResourceLocation(NaturesAura.MOD_ID, this.tileRegName)); + }*/ @Override public BlockRenderType getRenderType(BlockState state) { return BlockRenderType.MODEL; } - @Override +/* TODO this @Override public void breakBlock(World worldIn, BlockPos pos, BlockState state) { if (!worldIn.isRemote) { TileEntity tile = worldIn.getTileEntity(pos); @@ -75,26 +66,28 @@ public class BlockContainerImpl extends ContainerBlock implements IModItem, IMod ((TileEntityImpl) tile).dropInventory(); } super.breakBlock(worldIn, pos, state); - } - + }*/ +/* + TODO drop stuff @Override - public void getDrops(NonNullList drops, IBlockAccess world, BlockPos pos, BlockState state, int fortune) { - TileEntity tile = world.getTileEntity(pos); + public List getDrops(BlockState state, LootContext.Builder builder) { + TileEntity tile = builder.getWorld().getTileEntity(builder.get(LootParameters.POSITION)); + if (tile instanceof TileEntityImpl) drops.add(((TileEntityImpl) tile).getDrop(state, fortune)); else super.getDrops(drops, world, pos, state, fortune); - } + }*/ - @Override + /* @Override public boolean removedByPlayer(BlockState state, World world, BlockPos pos, PlayerEntity player, boolean willHarvest) { return willHarvest || super.removedByPlayer(state, world, pos, player, false); - } + }*/ @Override public void harvestBlock(World worldIn, PlayerEntity player, BlockPos pos, BlockState state, @Nullable TileEntity te, ItemStack stack) { super.harvestBlock(worldIn, player, pos, state, te, stack); - worldIn.setBlockToAir(pos); + worldIn.setBlockState(pos, Blocks.AIR.getDefaultState()); } @Override @@ -104,7 +97,7 @@ public class BlockContainerImpl extends ContainerBlock implements IModItem, IMod ((TileEntityImpl) tile).loadDataOnPlace(stack); } - @Override + /*@Override TODO weird redstone stuff public void onBlockAdded(World worldIn, BlockPos pos, BlockState state) { this.updateRedstoneState(worldIn, pos); } @@ -129,10 +122,10 @@ public class BlockContainerImpl extends ContainerBlock implements IModItem, IMod @Override public int tickRate(World worldIn) { return 4; - } + }*/ @Override - public void updateTick(World worldIn, BlockPos pos, BlockState state, Random rand) { + public void tick(BlockState state, World worldIn, BlockPos pos, Random random) { if (!worldIn.isRemote) { TileEntity tile = worldIn.getTileEntity(pos); if (tile instanceof TileEntityImpl) { diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGeneratorLimitRemover.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGeneratorLimitRemover.java index 22b30509..d9371692 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGeneratorLimitRemover.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGeneratorLimitRemover.java @@ -1,24 +1,18 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.blocks.tiles.TileEntityGeneratorLimitRemover; -import de.ellpeck.naturesaura.blocks.tiles.render.RenderGeneratorLimitRemover; -import de.ellpeck.naturesaura.reg.ITESRProvider; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.tileentity.TileEntityRenderer; -import net.minecraft.util.Tuple; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -public class BlockGeneratorLimitRemover extends BlockContainerImpl implements ITESRProvider { +public class BlockGeneratorLimitRemover extends BlockContainerImpl /*implements ITESRProvider*/ { public BlockGeneratorLimitRemover() { super("generator_limit_remover", TileEntityGeneratorLimitRemover.class, "generator_limit_remover", ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE)); } - @Override + /*@Override @OnlyIn(Dist.CLIENT) public Tuple getTESR() { return new Tuple<>(TileEntityGeneratorLimitRemover.class, new RenderGeneratorLimitRemover()); - } + }*/ } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGoldPowder.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGoldPowder.java index 7c41f3a7..a9c70e17 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGoldPowder.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGoldPowder.java @@ -4,20 +4,18 @@ import de.ellpeck.naturesaura.reg.IColorProvidingBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.block.state.BlockFaceShape; import net.minecraft.client.renderer.color.IBlockColor; import net.minecraft.state.EnumProperty; import net.minecraft.state.StateContainer; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.Direction; import net.minecraft.util.IStringSerializable; -import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -31,24 +29,7 @@ public class BlockGoldPowder extends BlockImpl implements IColorProvidingBlock { public static final EnumProperty EAST = EnumProperty.create("east", AttachPos.class); public static final EnumProperty SOUTH = EnumProperty.create("south", AttachPos.class); public static final EnumProperty WEST = EnumProperty.create("west", AttachPos.class); - protected static final VoxelShape[] SHAPES = new VoxelShape[]{ - VoxelShapes.create(0.1875D, 0.0D, 0.1875D, 0.8125D, 0.0625D, 0.8125D), - VoxelShapes.create(0.1875D, 0.0D, 0.1875D, 0.8125D, 0.0625D, 1.0D), - VoxelShapes.create(0.0D, 0.0D, 0.1875D, 0.8125D, 0.0625D, 0.8125D), - VoxelShapes.create(0.0D, 0.0D, 0.1875D, 0.8125D, 0.0625D, 1.0D), - VoxelShapes.create(0.1875D, 0.0D, 0.0D, 0.8125D, 0.0625D, 0.8125D), - VoxelShapes.create(0.1875D, 0.0D, 0.0D, 0.8125D, 0.0625D, 1.0D), - VoxelShapes.create(0.0D, 0.0D, 0.0D, 0.8125D, 0.0625D, 0.8125D), - VoxelShapes.create(0.0D, 0.0D, 0.0D, 0.8125D, 0.0625D, 1.0D), - VoxelShapes.create(0.1875D, 0.0D, 0.1875D, 1.0D, 0.0625D, 0.8125D), - VoxelShapes.create(0.1875D, 0.0D, 0.1875D, 1.0D, 0.0625D, 1.0D), - VoxelShapes.create(0.0D, 0.0D, 0.1875D, 1.0D, 0.0625D, 0.8125D), - VoxelShapes.create(0.0D, 0.0D, 0.1875D, 1.0D, 0.0625D, 1.0D), - VoxelShapes.create(0.1875D, 0.0D, 0.0D, 1.0D, 0.0625D, 0.8125D), - VoxelShapes.create(0.1875D, 0.0D, 0.0D, 1.0D, 0.0625D, 1.0D), - VoxelShapes.create(0.0D, 0.0D, 0.0D, 1.0D, 0.0625D, 0.8125D), - VoxelShapes.create(0.0D, 0.0D, 0.0D, 1.0D, 0.0625D, 1.0D) - }; + protected static final VoxelShape[] SHAPES = new VoxelShape[]{Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 16.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 16.0D, 1.0D, 16.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D)}; public BlockGoldPowder() { super("gold_powder", ModBlocks.prop(Blocks.REDSTONE_WIRE)); @@ -74,11 +55,6 @@ public class BlockGoldPowder extends BlockImpl implements IColorProvidingBlock { return SHAPES[getShapeIndex(state)]; } - @Override - public AxisAlignedBB getBoundingBox(BlockState state, IBlockAccess source, BlockPos pos) { - return SHAPES[getShapeIndex(state.getActualState(source, pos))]; - } - private static int getShapeIndex(BlockState state) { int i = 0; boolean n = state.get(NORTH) != AttachPos.NONE; @@ -101,37 +77,40 @@ public class BlockGoldPowder extends BlockImpl implements IColorProvidingBlock { return i; } + // TODO weird gold powder thing +/* @Override - public BlockState getActualState(BlockState state, IBlockAccess worldIn, BlockPos pos) { - state = state.withProperty(WEST, this.getAttachPosition(worldIn, pos, Direction.WEST)); - state = state.withProperty(EAST, this.getAttachPosition(worldIn, pos, Direction.EAST)); - state = state.withProperty(NORTH, this.getAttachPosition(worldIn, pos, Direction.NORTH)); - state = state.withProperty(SOUTH, this.getAttachPosition(worldIn, pos, Direction.SOUTH)); + public BlockState getActualState(BlockState state, IWorld worldIn, BlockPos pos) { + state = state.with(WEST, this.getAttachPosition(worldIn, pos, Direction.WEST)); + state = state.with(EAST, this.getAttachPosition(worldIn, pos, Direction.EAST)); + state = state.with(NORTH, this.getAttachPosition(worldIn, pos, Direction.NORTH)); + state = state.with(SOUTH, this.getAttachPosition(worldIn, pos, Direction.SOUTH)); return state; } - private AttachPos getAttachPosition(IBlockAccess worldIn, BlockPos pos, Direction direction) { + private AttachPos getAttachPosition(IWorld worldIn, BlockPos pos, Direction direction) { BlockPos dirPos = pos.offset(direction); BlockState state = worldIn.getBlockState(pos.offset(direction)); if (!this.canConnectTo(worldIn.getBlockState(dirPos), direction, worldIn, dirPos) - && (state.isNormalCube() || !this.canConnectUpwardsTo(worldIn, dirPos.down()))) { + && (state.isNormalCube(worldIn, pos.offset(direction)) || !this.canConnectUpwardsTo(worldIn, dirPos.down()))) { BlockState iblockstate1 = worldIn.getBlockState(pos.up()); - if (!iblockstate1.isNormalCube()) { - boolean flag = worldIn.getBlockState(dirPos).isSideSolid(worldIn, dirPos, Direction.UP) + if (!iblockstate1.isNormalCube(worldIn, pos.up())) { + *//*boolean flag = worldIn.getBlockState(dirPos).isSideSolid(worldIn, dirPos, Direction.UP) || worldIn.getBlockState(dirPos).getBlock() == Blocks.GLOWSTONE; if (flag && this.canConnectUpwardsTo(worldIn, dirPos.up())) { if (state.isBlockNormalCube()) { return AttachPos.UP; } return AttachPos.SIDE; - } + }*//* + return AttachPos.SIDE; } return AttachPos.NONE; } else { return AttachPos.SIDE; } - } + }*/ @Override public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { @@ -143,28 +122,18 @@ public class BlockGoldPowder extends BlockImpl implements IColorProvidingBlock { return false; } - public boolean canPlaceBlockAt(IWorldReader worldIn, BlockPos pos) { - BlockState downState = worldIn.getBlockState(pos.down()); - return downState.isSolid() - || downState.getBlockFaceShape(worldIn, pos.down(), Direction.UP) == BlockFaceShape.SOLID - || worldIn.getBlockState(pos.down()).getBlock() == Blocks.GLOWSTONE; - } - @Override - public void onNeighborChange(BlockState state, IWorldReader world, BlockPos pos, BlockPos neighbor) { - if (!world.isRemote()) { - if (!this.canPlaceBlockAt(world, pos)) { - this.dropBlockAsItem(world, pos, state, 0); - world.setBlockToAir(pos); - } - } + public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { + BlockPos blockpos = pos.down(); + BlockState blockstate = worldIn.getBlockState(blockpos); + return blockstate.func_224755_d(worldIn, blockpos, Direction.UP) || blockstate.getBlock() == Blocks.HOPPER; } - private boolean canConnectUpwardsTo(IBlockAccess worldIn, BlockPos pos) { + private boolean canConnectUpwardsTo(IWorld worldIn, BlockPos pos) { return this.canConnectTo(worldIn.getBlockState(pos), null, worldIn, pos); } - private boolean canConnectTo(BlockState blockState, @Nullable Direction side, IBlockAccess world, BlockPos pos) { + private boolean canConnectTo(BlockState blockState, @Nullable Direction side, IWorld world, BlockPos pos) { Block block = blockState.getBlock(); return block == this; } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java index 6f100884..18cb12a2 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java @@ -1,6 +1,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.blocks.tiles.TileEntityGratedChute; +import net.minecraft.block.Block; import net.minecraft.block.BlockRenderType; import net.minecraft.block.BlockState; import net.minecraft.block.HopperBlock; @@ -99,7 +100,7 @@ public class BlockGratedChute extends BlockContainerImpl { } @Override - protected void fillStateContainer(StateContainer.Builder builder) { + protected void fillStateContainer(StateContainer.Builder builder) { builder.add(FACING); } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockImpl.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockImpl.java index 12020031..e5b8c33d 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockImpl.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockImpl.java @@ -6,7 +6,7 @@ import de.ellpeck.naturesaura.reg.IModelProvider; import de.ellpeck.naturesaura.reg.ModRegistry; import net.minecraft.block.Block; -public class BlockImpl extends Block implements IModItem, ICreativeItem, IModelProvider { +public class BlockImpl extends Block implements IModItem, IModelProvider { private final String baseName; diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockNatureAltar.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockNatureAltar.java index def31ca3..af1c772e 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockNatureAltar.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockNatureAltar.java @@ -4,18 +4,14 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.blocks.tiles.TileEntityNatureAltar; import de.ellpeck.naturesaura.blocks.tiles.render.RenderNatureAltar; import de.ellpeck.naturesaura.reg.ITESRProvider; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.BlockState; +import net.minecraft.block.material.Material; import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.Tuple; -import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockAccess; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -23,23 +19,17 @@ import net.minecraftforge.common.ToolType; public class BlockNatureAltar extends BlockContainerImpl implements ITESRProvider { - private static final AxisAlignedBB BOUND_BOX = new AxisAlignedBB(0F, 0F, 0F, 1F, 12 / 16F, 1F); - + // TODO bounds public BlockNatureAltar() { super("nature_altar", TileEntityNatureAltar.class, "nature_altar", ModBlocks.prop(Material.ROCK).hardnessAndResistance(4F).harvestLevel(1).harvestTool(ToolType.PICKAXE)); } @Override - public boolean onBlockActivated(World worldIn, BlockPos pos, BlockState state, PlayerEntity playerIn, Hand hand, Direction facing, float hitX, float hitY, float hitZ) { - return Helper.putStackOnTile(playerIn, hand, pos, 0, true); + public boolean onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { + return Helper.putStackOnTile(player, handIn, pos, 0, true); } - @Override - public AxisAlignedBB getBoundingBox(BlockState state, IBlockAccess source, BlockPos pos) { - return BOUND_BOX; - } - - @Override +/* @Override public boolean isFullCube(BlockState state) { return false; } @@ -60,9 +50,9 @@ public class BlockNatureAltar extends BlockContainerImpl implements ITESRProvide } @Override - public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, BlockState state, BlockPos pos, Direction face) { + public BlockFaceShape getBlockFaceShape(IWorld worldIn, BlockState state, BlockPos pos, Direction face) { return BlockFaceShape.UNDEFINED; - } + }*/ @Override @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java index c689a28a..d20a3200 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java @@ -10,12 +10,13 @@ import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.terraingen.SaplingGrowTreeEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.SaplingGrowTreeEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; import java.util.Random; @@ -24,14 +25,14 @@ public class BlockOakGenerator extends BlockContainerImpl implements IVisualizab public BlockOakGenerator() { super("oak_generator", TileEntityOakGenerator.class, "oak_generator", ModBlocks.prop(Material.WOOD).hardnessAndResistance(2F).sound(SoundType.WOOD)); - MinecraftForge.TERRAIN_GEN_BUS.register(this); + MinecraftForge.EVENT_BUS.register(this); } @SubscribeEvent public void onTreeGrow(SaplingGrowTreeEvent event) { - World world = event.getWorld(); + IWorld world = event.getWorld(); BlockPos pos = event.getPos(); - if (!world.isRemote && IAuraType.forWorld(world).isSimilar(NaturesAuraAPI.TYPE_OVERWORLD) + if (!world.isRemote() && IAuraType.forWorld(world).isSimilar(NaturesAuraAPI.TYPE_OVERWORLD) && world.getBlockState(pos).getBlock() instanceof SaplingBlock) { Helper.getTileEntitiesInArea(world, pos, 10, tile -> { if (!(tile instanceof TileEntityOakGenerator)) diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockOfferingTable.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockOfferingTable.java index 2594dffb..c4db910d 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockOfferingTable.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockOfferingTable.java @@ -4,24 +4,23 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.blocks.tiles.TileEntityOfferingTable; import de.ellpeck.naturesaura.blocks.tiles.render.RenderOfferingTable; import de.ellpeck.naturesaura.reg.ITESRProvider; +import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.block.state.BlockFaceShape; -import net.minecraft.block.BlockState; import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.Tuple; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockAccess; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; public class BlockOfferingTable extends BlockContainerImpl implements ITESRProvider { + // TODO bounds private static final AxisAlignedBB BOUND_BOX = new AxisAlignedBB(2 / 16F, 0F, 2 / 16F, 14 / 16F, 1F, 14 / 16F); public BlockOfferingTable() { @@ -29,16 +28,11 @@ public class BlockOfferingTable extends BlockContainerImpl implements ITESRProvi } @Override - public boolean onBlockActivated(World worldIn, BlockPos pos, BlockState state, PlayerEntity playerIn, Hand hand, Direction facing, float hitX, float hitY, float hitZ) { - return Helper.putStackOnTile(playerIn, hand, pos, 0, true); + public boolean onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { + return Helper.putStackOnTile(player, handIn, pos, 0, true); } - @Override - public AxisAlignedBB getBoundingBox(BlockState state, IBlockAccess source, BlockPos pos) { - return BOUND_BOX; - } - - @Override +/* @Override public boolean isFullCube(BlockState state) { return false; } @@ -49,7 +43,7 @@ public class BlockOfferingTable extends BlockContainerImpl implements ITESRProvi } @Override - public boolean isNormalCube(BlockState state, IBlockAccess world, BlockPos pos) { + public boolean isNormalCube(BlockState state, IWorld world, BlockPos pos) { return false; } @@ -61,7 +55,7 @@ public class BlockOfferingTable extends BlockContainerImpl implements ITESRProvi @Override public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, BlockState state, BlockPos pos, Direction face) { return BlockFaceShape.UNDEFINED; - } + }*/ @Override @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java index 85fde164..534c0dfb 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java @@ -4,7 +4,6 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.api.render.IVisualizable; import de.ellpeck.naturesaura.blocks.tiles.TileEntityPickupStopper; import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.entity.item.ItemEntity; @@ -13,11 +12,11 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.EntityItemPickupEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; public class BlockPickupStopper extends BlockContainerImpl implements IVisualizable { public BlockPickupStopper() { @@ -40,14 +39,14 @@ public class BlockPickupStopper extends BlockContainerImpl implements IVisualiza if (radius <= 0F) return false; BlockPos stopperPos = stopper.getPos(); - if (!new AxisAlignedBB(stopperPos).grow(radius).intersects(item.getEntityBoundingBox())) + if (!new AxisAlignedBB(stopperPos).grow(radius).intersects(item.getBoundingBox())) return false; event.setCanceled(true); - if (item.world.getTotalWorldTime() % 3 == 0) + /* if (item.world.getGameTime() % 3 == 0) TODO particles PacketHandler.sendToAllAround(item.world, pos, 32, - new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 14)); + new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 14));*/ return true; }); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPowderPlacer.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPowderPlacer.java index 021ef1a1..2bda5e1e 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPowderPlacer.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPowderPlacer.java @@ -3,20 +3,16 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.blocks.tiles.TileEntityPowderPlacer; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.block.state.BlockFaceShape; -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockAccess; public class BlockPowderPlacer extends BlockContainerImpl { + // TODO bound box private static final AxisAlignedBB BOUND_BOX = new AxisAlignedBB(0F, 0F, 0F, 1F, 4 / 16F, 1F); public BlockPowderPlacer() { - super("powder_placer", TileEntityPowderPlacer.class, "powder_placer", ModBlocks.prop(Material.ROCK).hardnessAndResistance(2,5F).sound(SoundType.STONE)); + super("powder_placer", TileEntityPowderPlacer.class, "powder_placer", ModBlocks.prop(Material.ROCK).hardnessAndResistance(2, 5F).sound(SoundType.STONE)); } - +/* @Override public AxisAlignedBB getBoundingBox(BlockState state, IBlockAccess source, BlockPos pos) { return BOUND_BOX; @@ -45,5 +41,5 @@ public class BlockPowderPlacer extends BlockContainerImpl { @Override public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, BlockState state, BlockPos pos, Direction face) { return BlockFaceShape.UNDEFINED; - } + }*/ } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockProjectileGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockProjectileGenerator.java index ef720b7d..5f7760dc 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockProjectileGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockProjectileGenerator.java @@ -3,30 +3,21 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.blocks.tiles.TileEntityProjectileGenerator; -import de.ellpeck.naturesaura.blocks.tiles.render.RenderProjectileGenerator; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; -import de.ellpeck.naturesaura.reg.ITESRProvider; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityList; -import net.minecraft.util.SoundEvents; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundCategory; -import net.minecraft.util.Tuple; +import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.ProjectileImpactEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.registries.ForgeRegistries; -public class BlockProjectileGenerator extends BlockContainerImpl implements ITESRProvider { +public class BlockProjectileGenerator extends BlockContainerImpl/* implements ITESRProvider*/ { public BlockProjectileGenerator() { super("projectile_generator", TileEntityProjectileGenerator.class, "projectile_generator", ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE)); @@ -38,17 +29,17 @@ public class BlockProjectileGenerator extends BlockContainerImpl implements ITES Entity entity = event.getEntity(); if (entity.world.isRemote) return; - RayTraceResult ray = event.getRayTraceResult(); - BlockPos pos = ray.getBlockPos(); + BlockRayTraceResult ray = (BlockRayTraceResult) event.getRayTraceResult(); + BlockPos pos = ray.getPos(); if (pos == null) return; TileEntity tile = entity.world.getTileEntity(pos); if (!(tile instanceof TileEntityProjectileGenerator)) return; TileEntityProjectileGenerator generator = (TileEntityProjectileGenerator) tile; - if (generator.nextSide != ray.sideHit) + if (generator.nextSide != ray.getFace()) return; - ResourceLocation name = EntityList.getKey(entity); + ResourceLocation name = ForgeRegistries.ENTITIES.getKey(entity.getType()); Integer amount = NaturesAuraAPI.PROJECTILE_GENERATIONS.get(name); if (amount == null || amount <= 0) return; @@ -56,30 +47,21 @@ public class BlockProjectileGenerator extends BlockContainerImpl implements ITES BlockPos spot = IAuraChunk.getLowestSpot(entity.world, pos, 35, pos); IAuraChunk.getAuraChunk(entity.world, spot).storeAura(spot, amount); - PacketHandler.sendToAllAround(entity.world, pos, 32, - new PacketParticles((float) entity.posX, (float) entity.posY, (float) entity.posZ, 26, pos.getX(), pos.getY(), pos.getZ())); - entity.world.playSound(null, pos.getX(), pos.getY(), pos.getZ(), SoundEvents.ENTITY_ENDEREYE_LAUNCH, SoundCategory.BLOCKS, 0.8F, 1F); + // TODO particles + /* PacketHandler.sendToAllAround(entity.world, pos, 32, + new PacketParticles((float) entity.posX, (float) entity.posY, (float) entity.posZ, 26, pos.getX(), pos.getY(), pos.getZ()));*/ + entity.world.playSound(null, pos.getX(), pos.getY(), pos.getZ(), SoundEvents.ENTITY_ENDER_EYE_LAUNCH, SoundCategory.BLOCKS, 0.8F, 1F); generator.nextSide = generator.nextSide.rotateY(); generator.sendToClients(); - entity.setDead(); + entity.remove(); event.setCanceled(true); } - @Override - public boolean isFullCube(BlockState state) { - return false; - } - - @Override - public boolean isOpaqueCube(BlockState state) { - return false; - } - - @Override +/* @Override @OnlyIn(Dist.CLIENT) public Tuple getTESR() { return new Tuple<>(TileEntityProjectileGenerator.class, new RenderProjectileGenerator()); - } + }*/ } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockSpawnLamp.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockSpawnLamp.java index 14130286..e533fe51 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockSpawnLamp.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockSpawnLamp.java @@ -4,35 +4,30 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.api.render.IVisualizable; import de.ellpeck.naturesaura.blocks.tiles.TileEntitySpawnLamp; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.block.state.BlockFaceShape; -import net.minecraft.block.BlockState; import net.minecraft.entity.MobEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockRenderLayer; -import net.minecraft.util.Direction; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; -import net.minecraft.world.IBlockAccess; import net.minecraft.world.IWorld; import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingSpawnEvent; import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; public class BlockSpawnLamp extends BlockContainerImpl implements IVisualizable { + // TODO bounding box private static final AxisAlignedBB AABB = new AxisAlignedBB(4 / 16F, 0F, 4 / 16F, 12 / 16F, 13 / 16F, 12 / 16F); public BlockSpawnLamp() { - super("spawn_lamp", TileEntitySpawnLamp.class, "spawn_lamp", ModBlocks.prop(Material.IRON).hardnessAndResistance(3F).lightValue(1F).sound(SoundType.METAL)); + super("spawn_lamp", TileEntitySpawnLamp.class, "spawn_lamp", ModBlocks.prop(Material.IRON).hardnessAndResistance(3F).lightValue(15).sound(SoundType.METAL)); MinecraftForge.EVENT_BUS.register(this); } @@ -55,12 +50,13 @@ public class BlockSpawnLamp extends BlockContainerImpl implements IVisualizable return false; MobEntity entity = (MobEntity) event.getEntityLiving(); - if (entity.getCanSpawnHere() && entity.isNotColliding()) { + if (entity.canSpawn(world, event.getSpawnReason()) && entity.isNotColliding(world)) { BlockPos spot = IAuraChunk.getHighestSpot(world, lampPos, 32, lampPos); IAuraChunk.getAuraChunk(world, spot).drainAura(spot, 200); - PacketHandler.sendToAllAround(world, lampPos, 32, - new PacketParticles(lampPos.getX(), lampPos.getY(), lampPos.getZ(), 15)); + // TODO particles + /*PacketHandler.sendToAllAround(world, lampPos, 32, + new PacketParticles(lampPos.getX(), lampPos.getY(), lampPos.getZ(), 15));*/ } event.setResult(Event.Result.DENY); @@ -68,10 +64,10 @@ public class BlockSpawnLamp extends BlockContainerImpl implements IVisualizable }); } - @Override - public AxisAlignedBB getBoundingBox(BlockState state, IBlockAccess source, BlockPos pos) { +/* @Override + public AxisAlignedBB getBoundingBox(BlockState state, IWorld source, BlockPos pos) { return AABB; - } + }*/ @Override @OnlyIn(Dist.CLIENT) @@ -79,7 +75,7 @@ public class BlockSpawnLamp extends BlockContainerImpl implements IVisualizable return BlockRenderLayer.CUTOUT; } - @Override +/* @Override public boolean isFullCube(BlockState state) { return false; } @@ -102,7 +98,7 @@ public class BlockSpawnLamp extends BlockContainerImpl implements IVisualizable @Override public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, BlockState state, BlockPos pos, Direction face) { return BlockFaceShape.UNDEFINED; - } + }*/ @Override @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockStairsNA.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockStairsNA.java index 98542b2f..3e656c99 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockStairsNA.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockStairsNA.java @@ -9,7 +9,7 @@ import net.minecraft.block.StairsBlock; import java.util.function.Supplier; -public class BlockStairsNA extends StairsBlock implements IModItem, ICreativeItem, IModelProvider { +public class BlockStairsNA extends StairsBlock implements IModItem, IModelProvider { private final String baseName; diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockWoodStand.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockWoodStand.java index 2046b0c3..c28cb8f4 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockWoodStand.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockWoodStand.java @@ -7,29 +7,27 @@ import de.ellpeck.naturesaura.blocks.multi.Multiblocks; import de.ellpeck.naturesaura.blocks.tiles.TileEntityWoodStand; import de.ellpeck.naturesaura.blocks.tiles.render.RenderWoodStand; import de.ellpeck.naturesaura.reg.ITESRProvider; -import de.ellpeck.naturesaura.reg.ModRegistry; +import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.block.state.BlockFaceShape; -import net.minecraft.block.BlockState; import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.Tuple; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockAccess; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IWorld; import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.ToolType; -import net.minecraftforge.event.terraingen.SaplingGrowTreeEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.ToolType; +import net.minecraftforge.event.world.SaplingGrowTreeEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; import org.apache.commons.lang3.mutable.MutableObject; import java.util.ArrayList; @@ -42,21 +40,20 @@ public class BlockWoodStand extends BlockContainerImpl implements ITESRProvider public BlockWoodStand() { super("wood_stand", TileEntityWoodStand.class, "wood_stand", ModBlocks.prop(Material.WOOD).hardnessAndResistance(1.5F).sound(SoundType.WOOD).harvestLevel(0).harvestTool(ToolType.AXE)); - - MinecraftForge.TERRAIN_GEN_BUS.register(this); + MinecraftForge.EVENT_BUS.register(this); } @SubscribeEvent public void onTreeGrow(SaplingGrowTreeEvent event) { - World world = event.getWorld(); + IWorld world = event.getWorld(); BlockPos pos = event.getPos(); - if (!world.isRemote) { + if (!world.isRemote()) { if (Multiblocks.TREE_RITUAL.isComplete(world, pos)) { BlockState sapling = world.getBlockState(pos); ItemStack saplingStack = sapling.getBlock().getItem(world, pos, sapling); if (!saplingStack.isEmpty()) { for (TreeRitualRecipe recipe : NaturesAuraAPI.TREE_RITUAL_RECIPES.values()) { - if (recipe.saplingType.apply(saplingStack)) { + if (recipe.saplingType.test(saplingStack)) { List required = new ArrayList<>(Arrays.asList(recipe.ingredients)); MutableObject toPick = new MutableObject<>(); @@ -68,7 +65,7 @@ public class BlockWoodStand extends BlockContainerImpl implements ITESRProvider if (!stack.isEmpty()) { for (int i = required.size() - 1; i >= 0; i--) { Ingredient req = required.get(i); - if (req.apply(stack)) { + if (req.test(stack)) { required.remove(i); if (toPick.getValue() == null) { @@ -95,10 +92,12 @@ public class BlockWoodStand extends BlockContainerImpl implements ITESRProvider } @Override - public boolean onBlockActivated(World worldIn, BlockPos pos, BlockState state, PlayerEntity playerIn, Hand hand, Direction facing, float hitX, float hitY, float hitZ) { - return Helper.putStackOnTile(playerIn, hand, pos, 0, true); + public boolean onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { + return Helper.putStackOnTile(player, handIn, pos, 0, true); } + /* + @Override public AxisAlignedBB getBoundingBox(BlockState state, IBlockAccess source, BlockPos pos) { return BOUND_BOX; @@ -127,7 +126,7 @@ public class BlockWoodStand extends BlockContainerImpl implements ITESRProvider @Override public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, BlockState state, BlockPos pos, Direction face) { return BlockFaceShape.UNDEFINED; - } + }*/ @Override @OnlyIn(Dist.CLIENT) 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 4fed03d3..5afbaa2c 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/multi/Multiblocks.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/multi/Multiblocks.java @@ -6,11 +6,9 @@ import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.multiblock.IMultiblock; import de.ellpeck.naturesaura.api.multiblock.Matcher; import de.ellpeck.naturesaura.blocks.ModBlocks; +import net.minecraft.block.Blocks; import net.minecraft.block.LogBlock; import net.minecraft.block.SaplingBlock; -import net.minecraft.block.BlockStoneBrick; -import net.minecraft.block.BlockStoneBrick.EnumType; -import net.minecraft.block.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -23,9 +21,9 @@ public final class Multiblocks { {" B ", " ", " ", " ", "B B", " ", " ", " ", " B "}, {" B ", " ", " M M ", " ", "B 0 B", " ", " M M ", " ", " B "}, {" ", " WBW ", " WBW ", " WWCWCWW ", " BBW WBB ", " WWCWCWW ", " WBW ", " WBW ", " "}}, - 'C', Blocks.STONEBRICK.getDefaultState().withProperty(BlockStoneBrick.VARIANT, EnumType.CHISELED), - 'B', Blocks.STONEBRICK.getDefaultState(), - 'W', Matcher.oreDict(Blocks.PLANKS, "plankWood"), + 'C', Blocks.CHISELED_STONE_BRICKS, + 'B', Blocks.STONE_BRICKS, + 'W', Blocks.OAK_PLANKS, // TODO create a matcher that matches by tag for planks 'M', ModBlocks.GOLD_BRICK, '0', ModBlocks.NATURE_ALTAR, ' ', Matcher.wildcard()); @@ -36,14 +34,14 @@ public final class Multiblocks { 'W', new Matcher(ModBlocks.WOOD_STAND.getDefaultState(), (world, start, offset, pos, state, c) -> world != null || state.getBlock() == ModBlocks.WOOD_STAND), 'G', ModBlocks.GOLD_POWDER, - '0', new Matcher(Blocks.SAPLING.getDefaultState(), + '0', new Matcher(Blocks.OAK_SAPLING.getDefaultState(), (world, start, offset, pos, state, c) -> { if (state.getBlock() instanceof SaplingBlock || state.getBlock() instanceof LogBlock) return true; // try-catch to prevent blocks that need to have been placed crashing here try { ItemStack stack = state.getBlock().getItem(world, pos, state); - return !stack.isEmpty() && NaturesAuraAPI.TREE_RITUAL_RECIPES.values().stream().anyMatch(recipe -> recipe.saplingType.apply(stack)); + return !stack.isEmpty() && NaturesAuraAPI.TREE_RITUAL_RECIPES.values().stream().anyMatch(recipe -> recipe.saplingType.test(stack)); } catch (Exception e) { return false; } @@ -57,15 +55,15 @@ public final class Multiblocks { {"N N", " ", " ", " ", " ", " ", "N N"}, {"N N", " ", " ", " 0 ", " ", " ", "N N"}, {" N N ", "NNN NNN", " NRRRN ", " R R ", " NRRRN ", "NNN NNN", " N N "}}, - 'N', Blocks.NETHER_BRICK, - 'R', Blocks.RED_NETHER_BRICK, + 'N', Blocks.NETHER_BRICKS, + 'R', Blocks.RED_NETHER_BRICKS, '0', ModBlocks.POTION_GENERATOR, ' ', Matcher.wildcard()); public static final IMultiblock OFFERING_TABLE = NaturesAuraAPI.instance().createMultiblock( 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.RED_FLOWER.getDefaultState(), + 'R', new Matcher(Blocks.POPPY.getDefaultState(), (world, start, offset, pos, state, c) -> NaturesAuraAPI.FLOWERS.contains(state)), '0', ModBlocks.OFFERING_TABLE, ' ', Matcher.wildcard()); diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalGenerator.java index a80ef603..fc9760df 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalGenerator.java @@ -1,20 +1,23 @@ 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.util.ITickable; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.math.BlockPos; -public class TileEntityAnimalGenerator extends TileEntityImpl implements ITickable { +public class TileEntityAnimalGenerator extends TileEntityImpl implements ITickableTileEntity { private int timeRemaining; private int amountToRelease; + public TileEntityAnimalGenerator(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { + public void tick() { if (!this.world.isRemote) { - if (this.world.getTotalWorldTime() % 10 != 0) + if (this.world.getGameTime() % 10 != 0) return; if (this.timeRemaining <= 0) return; @@ -26,8 +29,8 @@ public class TileEntityAnimalGenerator extends TileEntityImpl implements ITickab remain -= IAuraChunk.getAuraChunk(this.world, spot).storeAura(spot, remain); } - PacketHandler.sendToAllAround(this.world, this.pos, 32, - new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 16)); + /*PacketHandler.sendToAllAround(this.world, this.pos, 32, TODO particles + new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 16));*/ } this.timeRemaining -= 10; diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalSpawner.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalSpawner.java index f6ddfd1f..26f286e9 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalSpawner.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAnimalSpawner.java @@ -6,14 +6,13 @@ import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.api.aura.type.IAuraType; import de.ellpeck.naturesaura.api.recipes.AnimalSpawnerRecipe; import de.ellpeck.naturesaura.blocks.multi.Multiblocks; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; 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.nbt.CompoundNBT; -import net.minecraft.util.ITickable; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; @@ -23,7 +22,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -public class TileEntityAnimalSpawner extends TileEntityImpl implements ITickable { +public class TileEntityAnimalSpawner extends TileEntityImpl implements ITickableTileEntity { private AnimalSpawnerRecipe currentRecipe; private double spawnX; @@ -31,10 +30,14 @@ public class TileEntityAnimalSpawner extends TileEntityImpl implements ITickable private int time; private Entity entityClient; + public TileEntityAnimalSpawner(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { + public void tick() { if (!this.world.isRemote) { - if (this.world.getTotalWorldTime() % 10 != 0) + if (this.world.getGameTime() % 10 != 0) return; if (!Multiblocks.ANIMAL_SPAWNER.isComplete(this.world, this.pos)) { if (this.currentRecipe != null) { @@ -53,7 +56,7 @@ public class TileEntityAnimalSpawner extends TileEntityImpl implements ITickable this.time += 10; if (this.time >= this.currentRecipe.time) { Entity entity = this.currentRecipe.makeEntity(this.world, this.spawnX, this.pos.getY() + 1, this.spawnZ); - this.world.spawnEntity(entity); + this.world.addEntity(entity); this.currentRecipe = null; this.time = 0; @@ -68,13 +71,13 @@ public class TileEntityAnimalSpawner extends TileEntityImpl implements ITickable continue; List required = new ArrayList<>(Arrays.asList(recipe.ingredients)); for (ItemEntity item : items) { - if (item.isDead || item.cannotPickup()) + if (!item.isAlive() || item.cannotPickup()) break; ItemStack stack = item.getItem(); if (stack.isEmpty()) break; for (Ingredient ingredient : required) { - if (ingredient.apply(stack) && Helper.getIngredientAmount(ingredient) == stack.getCount()) { + if (ingredient.test(stack) && Helper.getIngredientAmount(ingredient) == stack.getCount()) { required.remove(ingredient); break; } @@ -84,9 +87,10 @@ public class TileEntityAnimalSpawner extends TileEntityImpl implements ITickable continue; for (ItemEntity item : items) { - item.setDead(); - PacketHandler.sendToAllAround(this.world, this.pos, 32, - new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 19)); + item.remove(); + // TODO particles + /*PacketHandler.sendToAllAround(this.world, this.pos, 32, + new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 19));*/ } this.currentRecipe = recipe; @@ -97,7 +101,7 @@ public class TileEntityAnimalSpawner extends TileEntityImpl implements ITickable } } } else { - if (this.world.getTotalWorldTime() % 5 != 0) + if (this.world.getGameTime() % 5 != 0) return; if (this.currentRecipe == null) { this.entityClient = null; @@ -118,7 +122,7 @@ public class TileEntityAnimalSpawner extends TileEntityImpl implements ITickable if (this.entityClient == null) { this.entityClient = this.currentRecipe.makeEntity(this.world, this.spawnX, this.pos.getY() + 1, this.spawnZ); } - AxisAlignedBB bounds = this.entityClient.getEntityBoundingBox(); + AxisAlignedBB bounds = this.entityClient.getBoundingBox(); for (int i = this.world.rand.nextInt(5) + 5; i >= 0; i--) NaturesAuraAPI.instance().spawnMagicParticle( bounds.minX + this.world.rand.nextFloat() * (bounds.maxX - bounds.minX), @@ -133,10 +137,10 @@ public class TileEntityAnimalSpawner extends TileEntityImpl implements ITickable super.writeNBT(compound, type); if (type != SaveType.BLOCK) { if (this.currentRecipe != null) { - compound.setString("recipe", this.currentRecipe.name.toString()); - compound.setDouble("spawn_x", this.spawnX); - compound.setDouble("spawn_z", this.spawnZ); - compound.setInteger("time", this.time); + compound.putString("recipe", this.currentRecipe.name.toString()); + compound.putDouble("spawn_x", this.spawnX); + compound.putDouble("spawn_z", this.spawnZ); + compound.putInt("time", this.time); } } } @@ -145,12 +149,12 @@ public class TileEntityAnimalSpawner extends TileEntityImpl implements ITickable public void readNBT(CompoundNBT compound, SaveType type) { super.readNBT(compound, type); if (type != SaveType.BLOCK) { - if (compound.hasKey("recipe")) { + if (compound.contains("recipe")) { ResourceLocation name = new ResourceLocation(compound.getString("recipe")); this.currentRecipe = NaturesAuraAPI.ANIMAL_SPAWNER_RECIPES.get(name); this.spawnX = compound.getDouble("spawn_x"); this.spawnZ = compound.getDouble("spawn_z"); - this.time = compound.getInteger("time"); + this.time = compound.getInt("time"); } else { this.currentRecipe = null; this.time = 0; 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 21182a83..9b3bee12 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAuraDetector.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAuraDetector.java @@ -1,21 +1,26 @@ package de.ellpeck.naturesaura.blocks.tiles; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; -import net.minecraft.util.ITickable; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.math.MathHelper; -public class TileEntityAuraDetector extends TileEntityImpl implements ITickable { +public class TileEntityAuraDetector extends TileEntityImpl implements ITickableTileEntity { public int redstonePower; + public TileEntityAuraDetector(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { - if (!this.world.isRemote && this.world.getTotalWorldTime() % 20 == 0) { + public void tick() { + if (!this.world.isRemote && this.world.getGameTime() % 20 == 0) { int totalAmount = IAuraChunk.triangulateAuraInArea(this.world, this.pos, 25); int power = MathHelper.clamp(MathHelper.ceil(totalAmount / (IAuraChunk.DEFAULT_AURA * 2F) * 15F), 0, 15); if (this.redstonePower != power) { this.redstonePower = power; - this.world.updateComparatorOutputLevel(this.pos, this.getBlockType()); + this.world.updateComparatorOutputLevel(this.pos, this.getBlockState().getBlock()); } } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAutoCrafter.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAutoCrafter.java index 6de4355c..2bc725ee 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAutoCrafter.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAutoCrafter.java @@ -2,45 +2,46 @@ package de.ellpeck.naturesaura.blocks.tiles; import de.ellpeck.naturesaura.blocks.BlockAutoCrafter; import de.ellpeck.naturesaura.blocks.multi.Multiblocks; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.block.BlockState; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.container.Container; import net.minecraft.inventory.CraftingInventory; +import net.minecraft.inventory.container.Container; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.EntityPredicates; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; -import net.minecraft.util.ITickable; +import net.minecraft.util.EntityPredicates; import net.minecraft.util.NonNullList; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import java.util.List; -public class TileEntityAutoCrafter extends TileEntityImpl implements ITickable { - public final CraftingInventory crafting = new CraftingInventory(new Container() { +public class TileEntityAutoCrafter extends TileEntityImpl implements ITickableTileEntity { + public final CraftingInventory crafting = new CraftingInventory(new Container(null, 0) { @Override public boolean canInteractWith(PlayerEntity playerIn) { return false; } }, 3, 3); + public TileEntityAutoCrafter(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } @Override - public void update() { + public void tick() { if (!this.world.isRemote) { - if (this.world.getTotalWorldTime() % 60 != 0) + if (this.world.getGameTime() % 60 != 0) return; if (!Multiblocks.AUTO_CRAFTER.isComplete(this.world, this.pos)) return; this.crafting.clear(); BlockState state = this.world.getBlockState(this.pos); - Direction facing = state.getValue(BlockAutoCrafter.FACING); + Direction facing = state.get(BlockAutoCrafter.FACING); BlockPos middlePos = this.pos.up(); BlockPos topPos = middlePos.offset(facing, 2); BlockPos bottomPos = middlePos.offset(facing.getOpposite(), 2); @@ -74,7 +75,8 @@ public class TileEntityAutoCrafter extends TileEntityImpl implements ITickable { this.crafting.setInventorySlotContents(i, stack.copy()); } - IRecipe recipe = CraftingManager.findMatchingRecipe(this.crafting, this.world); + // TODO get recipes from the recipe registry?? + IRecipe recipe = /*CraftingManager.findMatchingRecipe(this.crafting, this.world);*/null; if (recipe == null) return; @@ -83,8 +85,8 @@ public class TileEntityAutoCrafter extends TileEntityImpl implements ITickable { return; ItemEntity resultItem = new ItemEntity(this.world, this.pos.getX() + 0.5F, this.pos.getY() - 0.35F, this.pos.getZ() + 0.5F, result.copy()); - resultItem.motionX = resultItem.motionY = resultItem.motionZ = 0; - this.world.spawnEntity(resultItem); + resultItem.setMotion(0, 0, 0); + this.world.addEntity(resultItem); NonNullList remainingItems = recipe.getRemainingItems(this.crafting); for (int i = 0; i < items.length; i++) { @@ -93,7 +95,7 @@ public class TileEntityAutoCrafter extends TileEntityImpl implements ITickable { continue; ItemStack stack = item.getItem(); if (stack.getCount() <= 1) - item.setDead(); + item.remove(); else { stack.shrink(1); item.setItem(stack); @@ -102,12 +104,13 @@ public class TileEntityAutoCrafter extends TileEntityImpl implements ITickable { ItemStack remain = remainingItems.get(i); if (!remain.isEmpty()) { ItemEntity remItem = new ItemEntity(this.world, item.posX, item.posY, item.posZ, remain.copy()); - remItem.motionX = remItem.motionY = remItem.motionZ = 0; - this.world.spawnEntity(remItem); + remItem.setMotion(0, 0, 0); + this.world.addEntity(remItem); } - PacketHandler.sendToAllAround(this.world, this.pos, 32, - new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 19)); + // TODO particles + /* PacketHandler.sendToAllAround(this.world, this.pos, 32, + new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 19));*/ } } } 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 721764e5..4519bcbb 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityChunkLoader.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityChunkLoader.java @@ -1,23 +1,19 @@ package de.ellpeck.naturesaura.blocks.tiles; -import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.ITickable; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.ChunkPos; import net.minecraft.util.math.MathHelper; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.common.ForgeChunkManager.Type; -import java.util.HashSet; -import java.util.Set; - -public class TileEntityChunkLoader extends TileEntityImpl implements ITickable { - - private Ticket ticket; +// TODO chunk loader +public class TileEntityChunkLoader extends TileEntityImpl implements ITickableTileEntity { + public TileEntityChunkLoader(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + //private Ticket ticket; +/* @Override public void validate() { super.validate(); @@ -42,13 +38,13 @@ public class TileEntityChunkLoader extends TileEntityImpl implements ITickable { this.loadChunks(); this.sendToClients(); } - } + }*/ public int range() { return this.redstonePower * 2; } - public void updateTicket(Ticket ticket) { + /*public void updateTicket(Ticket ticket) { if (this.ticket != null) ForgeChunkManager.releaseTicket(this.ticket); this.ticket = ticket; @@ -72,12 +68,12 @@ public class TileEntityChunkLoader extends TileEntityImpl implements ITickable { } for (ChunkPos pos : before) ForgeChunkManager.unforceChunk(this.ticket, pos); - } + }*/ @Override - public void update() { + public void tick() { if (!this.world.isRemote) { - if (this.world.getTotalWorldTime() % 20 != 0) + if (this.world.getGameTime() % 20 != 0) return; int toUse = MathHelper.ceil(this.range() / 2F); if (toUse > 0) { diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityEndFlower.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityEndFlower.java index 7e5d600a..9ebebb9c 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityEndFlower.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityEndFlower.java @@ -4,22 +4,21 @@ import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.api.aura.container.BasicAuraContainer; import de.ellpeck.naturesaura.api.aura.container.IAuraContainer; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; -import net.minecraft.entity.item.ItemEntity; import net.minecraft.block.Blocks; -import net.minecraft.item.Items; +import net.minecraft.entity.item.ItemEntity; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.EntityPredicates; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; -import net.minecraft.util.ITickable; +import net.minecraft.util.EntityPredicates; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import java.util.List; -public class TileEntityEndFlower extends TileEntityImpl implements ITickable { +public class TileEntityEndFlower extends TileEntityImpl implements ITickableTileEntity { private final BasicAuraContainer container = new BasicAuraContainer(null, 500000) { { @@ -47,10 +46,14 @@ public class TileEntityEndFlower extends TileEntityImpl implements ITickable { public boolean isDrainMode; + public TileEntityEndFlower(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { + public void tick() { if (!this.world.isRemote) { - if (this.world.getTotalWorldTime() % 10 != 0) + if (this.world.getGameTime() % 10 != 0) return; if (!this.isDrainMode) { @@ -66,10 +69,11 @@ public class TileEntityEndFlower extends TileEntityImpl implements ITickable { continue; this.isDrainMode = true; - item.setDead(); + item.remove(); - PacketHandler.sendToAllAround(this.world, this.pos, 32, - new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 21, this.container.getAuraColor())); + // TODO particles + /* PacketHandler.sendToAllAround(this.world, this.pos, 32, + new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 21, this.container.getAuraColor()));*/ break; } } else { @@ -82,13 +86,13 @@ public class TileEntityEndFlower extends TileEntityImpl implements ITickable { } if (this.container.getStoredAura() <= 0) { - this.world.setBlockState(this.pos, Blocks.DEADBUSH.getDefaultState()); - PacketHandler.sendToAllAround(this.world, this.pos, 32, - new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 18, this.container.getAuraColor())); + this.world.setBlockState(this.pos, Blocks.DEAD_BUSH.getDefaultState()); + /* PacketHandler.sendToAllAround(this.world, this.pos, 32, + new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 18, this.container.getAuraColor()));*/ } } } else { - if (this.isDrainMode && this.world.getTotalWorldTime() % 5 == 0) + if (this.isDrainMode && this.world.getGameTime() % 5 == 0) NaturesAuraAPI.instance().spawnMagicParticle( this.pos.getX() + 0.25F + this.world.rand.nextFloat() * 0.5F, this.pos.getY() + 0.25F + this.world.rand.nextFloat() * 0.5F, @@ -110,7 +114,7 @@ public class TileEntityEndFlower extends TileEntityImpl implements ITickable { super.writeNBT(compound, type); if (type != SaveType.BLOCK) { this.container.writeNBT(compound); - compound.setBoolean("drain_mode", this.isDrainMode); + compound.putBoolean("drain_mode", this.isDrainMode); } } 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 eaeec1d2..f217e3b5 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFieldCreator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFieldCreator.java @@ -3,43 +3,45 @@ package de.ellpeck.naturesaura.blocks.tiles; import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.ModConfig; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; -import de.ellpeck.naturesaura.api.aura.type.IAuraType; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticleStream; import net.minecraft.block.Block; -import net.minecraft.block.BlockLiquid; import net.minecraft.block.BlockState; import net.minecraft.entity.item.ItemFrameEntity; -import net.minecraft.item.ShearsItem; import net.minecraft.item.ItemStack; +import net.minecraft.item.ShearsItem; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ITickable; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -import net.minecraft.world.ServerWorld; +import net.minecraft.world.server.ServerWorld; +import net.minecraft.world.storage.loot.LootContext; +import net.minecraft.world.storage.loot.LootParameters; import net.minecraftforge.common.IShearable; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.FakePlayerFactory; import net.minecraftforge.event.ForgeEventFactory; import net.minecraftforge.event.world.BlockEvent; -import net.minecraftforge.fluids.IFluidBlock; import java.util.List; -public class TileEntityFieldCreator extends TileEntityImpl implements ITickable { +public class TileEntityFieldCreator extends TileEntityImpl implements ITickableTileEntity { public BlockPos connectionOffset; public boolean isMain; public boolean isCharged; private int chargeTimer; + public TileEntityFieldCreator(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { - if (this.world.isRemote || this.world.getTotalWorldTime() % 10 != 0) + public void tick() { + if (this.world.isRemote || this.world.getGameTime() % 10 != 0) return; BlockPos connectedPos = this.getConnectedPos(); @@ -90,7 +92,7 @@ public class TileEntityFieldCreator extends TileEntityImpl implements ITickable chunk.drainAura(spot, 300); this.sendParticles(); } else { - if (this.world.getTotalWorldTime() % 40 == 0) + if (this.world.getGameTime() % 40 == 0) chunk.drainAura(spot, 100); boolean shears = this.shears() || creator.shears(); @@ -113,10 +115,7 @@ public class TileEntityFieldCreator extends TileEntityImpl implements ITickable BlockState state = this.world.getBlockState(pos); Block block = state.getBlock(); - if (!block.isAir(state, this.world, pos) - && !(block instanceof BlockLiquid) && !(block instanceof IFluidBlock) - && state.getBlockHardness(this.world, pos) >= 0F) { - + if (!block.isAir(state, this.world, pos) && state.getBlockHardness(this.world, pos) >= 0F) { FakePlayer fake = FakePlayerFactory.getMinecraft((ServerWorld) this.world); if (!MinecraftForge.EVENT_BUS.post(new BlockEvent.BreakEvent(this.world, pos, state, fake))) { boolean shearBlock = shears && block instanceof IShearable; @@ -124,10 +123,11 @@ public class TileEntityFieldCreator extends TileEntityImpl implements ITickable if (shearBlock && ((IShearable) block).isShearable(ItemStack.EMPTY, this.world, pos)) drops = ((IShearable) block).onSheared(ItemStack.EMPTY, this.world, pos, 0); else { - drops = NonNullList.create(); - block.getDrops((NonNullList) drops, this.world, pos, state, 0); + drops = state.getDrops(new LootContext.Builder((ServerWorld) this.world) + .withParameter(LootParameters.POSITION, pos) + .withParameter(LootParameters.BLOCK_STATE, state)); } - float chance = ForgeEventFactory.fireBlockHarvesting(drops, this.world, pos, state, 0, 1, false, fake); + float chance = ForgeEventFactory.fireBlockHarvesting((NonNullList) drops, this.world, pos, state, 0, 1, false, fake); if (chance > 0 && this.world.rand.nextFloat() <= chance) { this.world.destroyBlock(pos, false); for (ItemStack stack : drops) @@ -155,7 +155,8 @@ public class TileEntityFieldCreator extends TileEntityImpl implements ITickable private void sendParticles() { for (int j = 0; j < 2; j++) { BlockPos p = j == 0 ? this.pos : this.getConnectedPos(); - PacketHandler.sendToAllAround(this.world, p, 32, new PacketParticleStream( + // TODO particles + /* PacketHandler.sendToAllAround(this.world, p, 32, new PacketParticleStream( p.getX() + (float) this.world.rand.nextGaussian() * 3F, p.getY() + 1 + this.world.rand.nextFloat() * 3F, p.getZ() + (float) this.world.rand.nextGaussian() * 3F, @@ -163,7 +164,7 @@ public class TileEntityFieldCreator extends TileEntityImpl implements ITickable p.getY() + 0.5F, p.getZ() + 0.5F, this.world.rand.nextFloat() * 0.07F + 0.07F, IAuraType.forWorld(this.world).getColor(), this.world.rand.nextFloat() + 0.5F - )); + ));*/ } } @@ -183,12 +184,12 @@ public class TileEntityFieldCreator extends TileEntityImpl implements ITickable super.writeNBT(compound, type); if (type != SaveType.BLOCK) { if (this.connectionOffset != null) - compound.setLong("connection", this.connectionOffset.toLong()); - compound.setBoolean("main", this.isMain); - compound.setBoolean("charged", this.isCharged); + compound.putLong("connection", this.connectionOffset.toLong()); + compound.putBoolean("main", this.isMain); + compound.putBoolean("charged", this.isCharged); if (type == SaveType.TILE) - compound.setInteger("timer", this.chargeTimer); + compound.putInt("timer", this.chargeTimer); } } @@ -196,7 +197,7 @@ public class TileEntityFieldCreator extends TileEntityImpl implements ITickable public void readNBT(CompoundNBT compound, SaveType type) { super.readNBT(compound, type); if (type != SaveType.BLOCK) { - if (compound.hasKey("connection")) + if (compound.contains("connection")) this.connectionOffset = BlockPos.fromLong(compound.getLong("connection")); else this.connectionOffset = null; @@ -204,7 +205,7 @@ public class TileEntityFieldCreator extends TileEntityImpl implements ITickable this.isCharged = compound.getBoolean("charged"); if (type == SaveType.TILE) - this.chargeTimer = compound.getInteger("timer"); + this.chargeTimer = compound.getInt("timer"); } } } 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 f50cb604..9699a2dd 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFireworkGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFireworkGenerator.java @@ -1,18 +1,16 @@ package de.ellpeck.naturesaura.blocks.tiles; -import com.google.common.primitives.Ints; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.entity.item.FireworkRocketEntity; import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.Items; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTBase; +import net.minecraft.item.Items; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.INBT; import net.minecraft.nbt.ListNBT; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.EntityPredicates; -import net.minecraft.util.ITickable; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; @@ -22,53 +20,57 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -public class TileEntityFireworkGenerator extends TileEntityImpl implements ITickable { +public class TileEntityFireworkGenerator extends TileEntityImpl implements ITickableTileEntity { private FireworkRocketEntity trackedEntity; private ItemStack trackedItem; private int toRelease; private int releaseTimer; + public TileEntityFireworkGenerator(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { + public void tick() { if (!this.world.isRemote) { - if (this.world.getTotalWorldTime() % 10 == 0) { + if (this.world.getGameTime() % 10 == 0) { List items = this.world.getEntitiesWithinAABB(ItemEntity.class, new AxisAlignedBB(this.pos).grow(4), EntityPredicates.IS_ALIVE); for (ItemEntity item : items) { if (item.cannotPickup()) continue; ItemStack stack = item.getItem(); - if (stack.isEmpty() || stack.getItem() != Items.FIREWORKS) + if (stack.isEmpty() || stack.getItem() != Items.FIREWORK_ROCKET) continue; if (this.trackedEntity == null && this.releaseTimer <= 0) { FireworkRocketEntity entity = new FireworkRocketEntity(this.world, item.posX, item.posY, item.posZ, stack); this.trackedEntity = entity; this.trackedItem = stack.copy(); - this.world.spawnEntity(entity); + this.world.addEntity(entity); } stack.shrink(1); if (stack.isEmpty()) - item.setDead(); + item.remove(); else item.setItem(stack); } } - if (this.trackedEntity != null && this.trackedEntity.isDead) { - if (this.trackedItem.hasTagCompound()) { + if (this.trackedEntity != null && !this.trackedEntity.isAlive()) { + if (this.trackedItem.hasTag()) { float generateFactor = 0; Set usedColors = new HashSet<>(); - CompoundNBT compound = this.trackedItem.getTagCompound(); - CompoundNBT fireworks = compound.getCompoundTag("Fireworks"); + CompoundNBT compound = this.trackedItem.getTag(); + CompoundNBT fireworks = compound.getCompound("Fireworks"); - int flightTime = fireworks.getInteger("Flight"); - ListNBT explosions = fireworks.getTagList("Explosions", 10); + int flightTime = fireworks.getInt("Flight"); + ListNBT explosions = fireworks.getList("Explosions", 10); if (!explosions.isEmpty()) { generateFactor += flightTime; - for (NBTBase base : explosions) { + for (INBT base : explosions) { CompoundNBT explosion = (CompoundNBT) base; generateFactor += 1.5F; @@ -104,9 +106,10 @@ public class TileEntityFireworkGenerator extends TileEntityImpl implements ITick data.add(this.pos.getY()); data.add(this.pos.getZ()); data.addAll(usedColors); - PacketHandler.sendToAllLoaded(this.world, this.pos, new PacketParticles( + // TODO particles + /* PacketHandler.sendToAllLoaded(this.world, this.pos, new PacketParticles( (float) this.trackedEntity.posX, (float) this.trackedEntity.posY, (float) this.trackedEntity.posZ, - 24, Ints.toArray(data))); + 24, Ints.toArray(data)));*/ } } @@ -122,8 +125,8 @@ public class TileEntityFireworkGenerator extends TileEntityImpl implements ITick this.toRelease -= IAuraChunk.getAuraChunk(this.world, spot).storeAura(spot, this.toRelease); } - PacketHandler.sendToAllLoaded(this.world, this.pos, - new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 8)); + /* PacketHandler.sendToAllLoaded(this.world, this.pos, + new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 8));*/ } } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFlowerGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFlowerGenerator.java index 577839b2..17de10ec 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFlowerGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFlowerGenerator.java @@ -4,18 +4,16 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.api.aura.type.IAuraType; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticleStream; -import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.INBT; import net.minecraft.nbt.ListNBT; -import net.minecraft.util.ITickable; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.registry.ForgeRegistries; +import net.minecraftforge.registries.ForgeRegistries; import org.apache.commons.lang3.mutable.MutableInt; import java.util.ArrayList; @@ -23,13 +21,17 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class TileEntityFlowerGenerator extends TileEntityImpl implements ITickable { +public class TileEntityFlowerGenerator extends TileEntityImpl implements ITickableTileEntity { private final Map consumedRecently = new HashMap<>(); + public TileEntityFlowerGenerator(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { - if (!this.world.isRemote && this.world.getTotalWorldTime() % 10 == 0) { + public void tick() { + if (!this.world.isRemote && this.world.getGameTime() % 10 == 0) { List possible = new ArrayList<>(); int range = 3; for (int x = -range; x <= range; x++) { @@ -73,11 +75,12 @@ public class TileEntityFlowerGenerator extends TileEntityImpl implements ITickab } curr.add(5); - this.world.setBlockToAir(pos); + this.world.removeBlock(pos, false); + // TODO particles int color = Helper.blendColors(0x5ccc30, 0xe53c16, toAdd / (float) addAmount); if (toAdd > 0) { - for (int i = this.world.rand.nextInt(5) + 5; i >= 0; i--) + /*for (int i = this.world.rand.nextInt(5) + 5; i >= 0; i--) PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticleStream( pos.getX() + 0.25F + this.world.rand.nextFloat() * 0.5F, pos.getY() + 0.25F + this.world.rand.nextFloat() * 0.5F, @@ -87,9 +90,9 @@ public class TileEntityFlowerGenerator extends TileEntityImpl implements ITickab this.pos.getZ() + 0.25F + this.world.rand.nextFloat() * 0.5F, this.world.rand.nextFloat() * 0.02F + 0.1F, color, 1F )); - PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 8)); + PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 8));*/ } - PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles(pos.getX(), pos.getY(), pos.getZ(), 7, color)); + //PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles(pos.getX(), pos.getY(), pos.getZ(), 7, color)); } } @@ -109,31 +112,25 @@ public class TileEntityFlowerGenerator extends TileEntityImpl implements ITickab Block block = state.getBlock(); CompoundNBT tag = new CompoundNBT(); - tag.setString("block", block.getRegistryName().toString()); - tag.setInteger("meta", block.getMetaFromState(state)); - tag.setInteger("amount", entry.getValue().intValue()); - list.appendTag(tag); + tag.putString("block", block.getRegistryName().toString()); + tag.putInt("amount", entry.getValue().intValue()); + list.add(tag); } - compound.setTag("consumed_recently", list); + compound.put("consumed_recently", list); } } @Override public void readNBT(CompoundNBT compound, SaveType type) { super.readNBT(compound, type); - if (type != SaveType.SYNC) { this.consumedRecently.clear(); - - ListNBT list = compound.getTagList("consumed_recently", 10); - for (NBTBase base : list) { + ListNBT list = compound.getList("consumed_recently", 10); + for (INBT base : list) { CompoundNBT tag = (CompoundNBT) base; - Block block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(tag.getString("block"))); - if (block != null) { - BlockState state = block.getStateFromMeta(tag.getInteger("meta")); - this.consumedRecently.put(state, new MutableInt(tag.getInteger("amount"))); - } + if (block != null) + this.consumedRecently.put(block.getDefaultState(), new MutableInt(tag.getInt("amount"))); } } 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 6f355edd..639b31ea 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFurnaceHeater.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityFurnaceHeater.java @@ -1,51 +1,51 @@ package de.ellpeck.naturesaura.blocks.tiles; -import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; -import de.ellpeck.naturesaura.api.aura.type.IAuraType; import de.ellpeck.naturesaura.blocks.BlockFurnaceHeater; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticleStream; -import net.minecraft.block.FurnaceBlock; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.FurnaceTileEntity; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; -import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -public class TileEntityFurnaceHeater extends TileEntityImpl implements ITickable { +public class TileEntityFurnaceHeater extends TileEntityImpl implements ITickableTileEntity { public boolean isActive; + public TileEntityFurnaceHeater(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { - if (!this.world.isRemote && this.world.getTotalWorldTime() % 5 == 0) { + public void tick() { + if (!this.world.isRemote && this.world.getGameTime() % 5 == 0) { boolean did = false; - Direction facing = this.world.getBlockState(this.pos).getValue(BlockFurnaceHeater.FACING); + Direction facing = this.world.getBlockState(this.pos).get(BlockFurnaceHeater.FACING); BlockPos tilePos = this.pos.offset(facing.getOpposite()); TileEntity tile = this.world.getTileEntity(tilePos); if (tile instanceof FurnaceTileEntity) { FurnaceTileEntity furnace = (FurnaceTileEntity) tile; if (isReady(furnace)) { - int time = furnace.getField(0); + // TODO furnace heater + /* int time = furnace.getField(0); if (time <= 0) FurnaceBlock.setState(true, this.world, furnace.getPos()); furnace.setField(0, 200); //if set higher than 199, it'll never finish because the furnace does ++ and then == - furnace.setField(2, Math.min(199, furnace.getField(2) + 5)); + furnace.setField(2, Math.min(199, furnace.getField(2) + 5));*/ BlockPos spot = IAuraChunk.getHighestSpot(this.world, this.pos, 20, this.pos); IAuraChunk chunk = IAuraChunk.getAuraChunk(this.world, spot); - chunk.drainAura(spot, MathHelper.ceil((200 - time) * 16.6F)); + //chunk.drainAura(spot, MathHelper.ceil((200 - time) * 16.6F)); did = true; - if (this.world.getTotalWorldTime() % 15 == 0) { - PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticleStream( + if (this.world.getGameTime() % 15 == 0) { + // TODO particles + /*PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticleStream( this.pos.getX() + (float) this.world.rand.nextGaussian() * 5F, this.pos.getY() + 1 + this.world.rand.nextFloat() * 5F, this.pos.getZ() + (float) this.world.rand.nextGaussian() * 5F, @@ -53,7 +53,7 @@ public class TileEntityFurnaceHeater extends TileEntityImpl implements ITickable tilePos.getY() + this.world.rand.nextFloat(), tilePos.getZ() + this.world.rand.nextFloat(), this.world.rand.nextFloat() * 0.07F + 0.07F, IAuraType.forWorld(this.world).getColor(), this.world.rand.nextFloat() + 0.5F - )); + ));*/ } } } @@ -71,13 +71,13 @@ public class TileEntityFurnaceHeater extends TileEntityImpl implements ITickable ItemStack input = furnace.getStackInSlot(0); if (!input.isEmpty()) { - ItemStack output = FurnaceRecipes.instance().getSmeltingResult(input); - if (output.isEmpty()) - return false; + /*ItemStack output = FurnaceRecipes.instance().getSmeltingResult(input); + if (output.isEmpty())*/ + return false; - ItemStack currOutput = furnace.getStackInSlot(2); + /*ItemStack currOutput = furnace.getStackInSlot(2); return currOutput.isEmpty() || - Helper.areItemsEqual(currOutput, output, true) && currOutput.getCount() + output.getCount() <= output.getMaxStackSize(); + Helper.areItemsEqual(currOutput, output, true) && currOutput.getCount() + output.getCount() <= output.getMaxStackSize();*/ } else return false; } @@ -87,7 +87,7 @@ public class TileEntityFurnaceHeater extends TileEntityImpl implements ITickable super.writeNBT(compound, type); if (type == SaveType.SYNC) - compound.setBoolean("active", this.isActive); + compound.putBoolean("active", this.isActive); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityGratedChute.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityGratedChute.java index 2062f618..96657f85 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityGratedChute.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityGratedChute.java @@ -7,9 +7,10 @@ import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.item.ItemFrameEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; -import net.minecraft.util.ITickable; import net.minecraft.util.math.AxisAlignedBB; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; @@ -17,7 +18,7 @@ import net.minecraftforge.items.IItemHandlerModifiable; import java.util.List; -public class TileEntityGratedChute extends TileEntityImpl implements ITickable { +public class TileEntityGratedChute extends TileEntityImpl implements ITickableTileEntity { private final ItemStackHandlerNA items = new ItemStackHandlerNA(1, this, true) { @Override @@ -33,8 +34,12 @@ public class TileEntityGratedChute extends TileEntityImpl implements ITickable { public boolean isBlacklist; private int cooldown; + public TileEntityGratedChute(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { + public void tick() { if (!this.world.isRemote) { if (this.cooldown <= 0) { this.cooldown = 6; @@ -45,13 +50,12 @@ public class TileEntityGratedChute extends TileEntityImpl implements ITickable { push: if (!curr.isEmpty()) { BlockState state = this.world.getBlockState(this.pos); - Direction facing = state.getValue(BlockGratedChute.FACING); + Direction facing = state.get(BlockGratedChute.FACING); TileEntity tile = this.world.getTileEntity(this.pos.offset(facing)); - if (tile == null || !tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, - facing.getOpposite())) + if (tile == null) break push; IItemHandler handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, - facing.getOpposite()); + facing.getOpposite()).orElse(null); if (handler == null) break push; for (int i = 0; i < handler.getSlots(); i++) { @@ -71,7 +75,7 @@ public class TileEntityGratedChute extends TileEntityImpl implements ITickable { this.pos.getX(), this.pos.getY() + 0.5, this.pos.getZ(), this.pos.getX() + 1, this.pos.getY() + 2, this.pos.getZ() + 1)); for (ItemEntity item : items) { - if (item.isDead) + if (!item.isAlive()) continue; ItemStack stack = item.getItem(); if (stack.isEmpty()) @@ -79,7 +83,7 @@ public class TileEntityGratedChute extends TileEntityImpl implements ITickable { ItemStack left = this.items.insertItem(0, stack, false); if (!ItemStack.areItemStacksEqual(stack, left)) { if (left.isEmpty()) - item.setDead(); + item.remove(); else item.setItem(left); break pull; @@ -87,9 +91,9 @@ public class TileEntityGratedChute extends TileEntityImpl implements ITickable { } TileEntity tileUp = this.world.getTileEntity(this.pos.up()); - if (tileUp == null || !tileUp.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, Direction.DOWN)) + if (tileUp == null) break pull; - IItemHandler handlerUp = tileUp.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, Direction.DOWN); + IItemHandler handlerUp = tileUp.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, Direction.DOWN).orElse(null); if (handlerUp == null) break pull; for (int i = 0; i < handlerUp.getSlots(); i++) { @@ -125,9 +129,9 @@ public class TileEntityGratedChute extends TileEntityImpl implements ITickable { public void writeNBT(CompoundNBT compound, SaveType type) { super.writeNBT(compound, type); if (type != SaveType.BLOCK) { - compound.setInteger("cooldown", this.cooldown); - compound.setTag("items", this.items.serializeNBT()); - compound.setBoolean("blacklist", this.isBlacklist); + compound.putInt("cooldown", this.cooldown); + compound.put("items", this.items.serializeNBT()); + compound.putBoolean("blacklist", this.isBlacklist); } } @@ -135,8 +139,8 @@ public class TileEntityGratedChute extends TileEntityImpl implements ITickable { public void readNBT(CompoundNBT compound, SaveType type) { super.readNBT(compound, type); if (type != SaveType.BLOCK) { - this.cooldown = compound.getInteger("cooldown"); - this.items.deserializeNBT(compound.getCompoundTag("items")); + this.cooldown = compound.getInt("cooldown"); + this.items.deserializeNBT(compound.getCompound("items")); this.isBlacklist = compound.getBoolean("blacklist"); } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityHopperUpgrade.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityHopperUpgrade.java index 73f041e0..ad98d667 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityHopperUpgrade.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityHopperUpgrade.java @@ -1,15 +1,14 @@ 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.block.HopperBlock; import net.minecraft.entity.item.ItemEntity; import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.HopperTileEntity; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; -import net.minecraft.util.ITickable; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraftforge.items.CapabilityItemHandler; @@ -17,18 +16,20 @@ import net.minecraftforge.items.IItemHandler; import java.util.List; -public class TileEntityHopperUpgrade extends TileEntityImpl implements ITickable { +public class TileEntityHopperUpgrade extends TileEntityImpl implements ITickableTileEntity { + public TileEntityHopperUpgrade(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { - if (!this.world.isRemote && this.world.getTotalWorldTime() % 10 == 0) { + public void tick() { + if (!this.world.isRemote && this.world.getGameTime() % 10 == 0) { if (IAuraChunk.getAuraInArea(this.world, this.pos, 25) < 100000) return; TileEntity tile = this.world.getTileEntity(this.pos.down()); if (!isValidHopper(tile)) return; - if (!tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, Direction.UP)) - return; - IItemHandler handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, Direction.UP); + IItemHandler handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, Direction.UP).orElse(null); if (handler == null) return; @@ -38,7 +39,7 @@ public class TileEntityHopperUpgrade extends TileEntityImpl implements ITickable return; for (ItemEntity item : items) { - if (item.isDead || item.cannotPickup()) + if (!item.isAlive() || item.cannotPickup()) continue; ItemStack stack = item.getItem(); if (stack.isEmpty()) @@ -55,13 +56,14 @@ public class TileEntityHopperUpgrade extends TileEntityImpl implements ITickable if (!ItemStack.areItemStacksEqual(stack, copy)) { item.setItem(copy); if (copy.isEmpty()) - item.setDead(); + item.remove(); BlockPos spot = IAuraChunk.getHighestSpot(this.world, this.pos, 25, this.pos); IAuraChunk.getAuraChunk(this.world, spot).drainAura(spot, 500); - PacketHandler.sendToAllAround(this.world, this.pos, 32, - new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 10)); + // TODO particles + /* PacketHandler.sendToAllAround(this.world, this.pos, 32, + new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 10));*/ } } } @@ -69,7 +71,7 @@ public class TileEntityHopperUpgrade extends TileEntityImpl implements ITickable private static boolean isValidHopper(TileEntity tile) { if (tile instanceof HopperTileEntity) - return HopperBlock.isEnabled(tile.getBlockMetadata()); + return tile.getWorld().getBlockState(tile.getPos()).get(HopperBlock.ENABLED); if (tile instanceof TileEntityGratedChute) return ((TileEntityGratedChute) tile).redstonePower <= 0; return false; diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityImpl.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityImpl.java index 3928103a..4218dcc9 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityImpl.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityImpl.java @@ -4,20 +4,19 @@ import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.api.aura.container.IAuraContainer; import de.ellpeck.naturesaura.blocks.ModBlocks; -import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.entity.item.ItemEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.network.NetworkManager; import net.minecraft.network.play.server.SUpdateTileEntityPacket; -import net.minecraft.server.management.PlayerChunkMapEntry; import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import net.minecraft.world.ServerWorld; import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; @@ -28,33 +27,38 @@ public class TileEntityImpl extends TileEntity { public int redstonePower; - @Override - public boolean shouldRefresh(World world, BlockPos pos, BlockState oldState, BlockState newState) { - return oldState.getBlock() != newState.getBlock(); + public TileEntityImpl(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); } + // TODO figure out if this was still needed +/* @Override + public boolean shouldRefresh(World world, BlockPos pos, BlockState oldState, BlockState newState) { + return oldState.getBlock() != newState.getBlock(); + }*/ + @Override - public CompoundNBT writeToNBT(CompoundNBT compound) { + public CompoundNBT write(CompoundNBT compound) { this.writeNBT(compound, SaveType.TILE); return compound; } @Override - public void readFromNBT(CompoundNBT compound) { + public void read(CompoundNBT compound) { this.readNBT(compound, SaveType.TILE); } public void writeNBT(CompoundNBT compound, SaveType type) { if (type != SaveType.BLOCK) { - super.writeToNBT(compound); - compound.setInteger("redstone", this.redstonePower); + super.write(compound); + compound.putInt("redstone", this.redstonePower); } } public void readNBT(CompoundNBT compound, SaveType type) { if (type != SaveType.BLOCK) { - super.readFromNBT(compound); - this.redstonePower = compound.getInteger("redstone"); + super.read(compound); + this.redstonePower = compound.getInt("redstone"); } } @@ -88,11 +92,11 @@ public class TileEntityImpl extends TileEntity { } public void sendToClients() { - ServerWorld world = (ServerWorld) this.getWorld(); - PlayerChunkMapEntry entry = world.getPlayerChunkMap().getEntry(this.getPos().getX() >> 4, this.getPos().getZ() >> 4); - if (entry != null) { - entry.sendPacket(this.getUpdatePacket()); - } + // TODO send this shit to the client somehow + /* ServerWorld world = (ServerWorld) this.getWorld(); + Stream entities = world.getChunkProvider().chunkManager.getTrackingPlayers(new ChunkPos(this.getPos().getX() >> 4, this.getPos().getZ() >> 4), false); + SUpdateTileEntityPacket packet = this.getUpdatePacket(); + entities.forEach(()-> packet.packet);*/ } public IItemHandlerModifiable getItemHandler(Direction facing) { @@ -103,24 +107,15 @@ public class TileEntityImpl extends TileEntity { return null; } - @Override - public boolean hasCapability(Capability capability, @Nullable Direction facing) { - if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - return this.getItemHandler(facing) != null; - } else if (capability == NaturesAuraAPI.capAuraContainer) { - return this.getAuraContainer(facing) != null; - } else { - return super.hasCapability(capability, facing); - } - } - @Nullable @Override - public T getCapability(Capability capability, @Nullable Direction facing) { + public LazyOptional getCapability(Capability capability, @Nullable Direction facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - return (T) this.getItemHandler(facing); + IItemHandler handler = this.getItemHandler(facing); + return handler == null ? LazyOptional.empty() : LazyOptional.of(() -> (T) handler); } else if (capability == NaturesAuraAPI.capAuraContainer) { - return (T) this.getAuraContainer(facing); + IAuraContainer container = this.getAuraContainer(facing); + return container == null ? LazyOptional.empty() : LazyOptional.of(() -> (T) container); } else { return super.getCapability(capability, facing); } @@ -135,14 +130,15 @@ public class TileEntityImpl extends TileEntity { ItemEntity item = new ItemEntity(this.world, this.pos.getX() + 0.5, this.pos.getY() + 0.5, this.pos.getZ() + 0.5, stack); - this.world.spawnEntity(item); + this.world.addEntity(item); } } } } public ItemStack getDrop(BlockState state, int fortune) { - Block block = state.getBlock(); + // TODO weird drop stuff + /*Block block = state.getBlock(); ItemStack stack = new ItemStack( block.getItemDropped(state, this.world.rand, fortune), block.quantityDropped(state, fortune, this.world.rand), @@ -156,12 +152,13 @@ public class TileEntityImpl extends TileEntity { stack.getTagCompound().setTag("data", compound); } - return stack; + return stack;*/ + return null; } public void loadDataOnPlace(ItemStack stack) { - if (stack.hasTagCompound()) { - CompoundNBT compound = stack.getTagCompound().getCompoundTag("data"); + if (stack.hasTag()) { + CompoundNBT compound = stack.getTag().getCompound("data"); if (compound != null) this.readNBT(compound, SaveType.BLOCK); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityMossGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityMossGenerator.java index 5f3e3cfc..f58e1926 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityMossGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityMossGenerator.java @@ -2,22 +2,25 @@ package de.ellpeck.naturesaura.blocks.tiles; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.util.ITickable; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.math.BlockPos; import java.util.ArrayList; import java.util.List; -public class TileEntityMossGenerator extends TileEntityImpl implements ITickable { +public class TileEntityMossGenerator extends TileEntityImpl implements ITickableTileEntity { + + public TileEntityMossGenerator(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } @Override - public void update() { + public void tick() { if (!this.world.isRemote) { - if (this.world.getTotalWorldTime() % 20 != 0) + if (this.world.getGameTime() % 20 != 0) return; List possibleOffsets = new ArrayList<>(); @@ -44,8 +47,9 @@ public class TileEntityMossGenerator extends TileEntityImpl implements ITickable toAdd -= IAuraChunk.getAuraChunk(this.world, spot).storeAura(spot, toAdd); } - PacketHandler.sendToAllAround(this.world, this.pos, 32, - new PacketParticles(offset.getX(), offset.getY(), offset.getZ(), 23)); + // TODO particles + /*PacketHandler.sendToAllAround(this.world, this.pos, 32, + new PacketParticles(offset.getX(), offset.getY(), offset.getZ(), 23));*/ } this.world.playEvent(2001, offset, Block.getStateId(state)); 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 cfc2fe80..69abedda 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityNatureAltar.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityNatureAltar.java @@ -7,18 +7,16 @@ import de.ellpeck.naturesaura.api.aura.container.IAuraContainer; import de.ellpeck.naturesaura.api.aura.type.IAuraType; import de.ellpeck.naturesaura.api.recipes.AltarRecipe; import de.ellpeck.naturesaura.blocks.multi.Multiblocks; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticleStream; -import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.block.BlockState; -import net.minecraft.util.SoundEvents; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; -import net.minecraft.util.ITickable; 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.minecraftforge.api.distmarker.Dist; @@ -28,7 +26,7 @@ import net.minecraftforge.items.ItemStackHandler; import java.util.Random; -public class TileEntityNatureAltar extends TileEntityImpl implements ITickable { +public class TileEntityNatureAltar extends TileEntityImpl implements ITickableTileEntity { public final ItemStackHandler items = new ItemStackHandlerNA(1, this, true) { @Override @@ -38,13 +36,14 @@ public class TileEntityNatureAltar extends TileEntityImpl implements ITickable { @Override protected boolean canInsert(ItemStack stack, int slot) { - return TileEntityNatureAltar.this.getRecipeForInput(stack) != null || stack.hasCapability(NaturesAuraAPI.capAuraContainer, null); + return TileEntityNatureAltar.this.getRecipeForInput(stack) != null || stack.getCapability(NaturesAuraAPI.capAuraContainer, null).isPresent(); } @Override protected boolean canExtract(ItemStack stack, int slot, int amount) { - if (stack.hasCapability(NaturesAuraAPI.capAuraContainer, null)) - return stack.getCapability(NaturesAuraAPI.capAuraContainer, null).storeAura(1, true) <= 0; + IAuraContainer cap = stack.getCapability(NaturesAuraAPI.capAuraContainer, null).orElse(null); + if (cap != null) + return cap.storeAura(1, true) <= 0; else return TileEntityNatureAltar.this.getRecipeForInput(stack) == null; } @@ -62,11 +61,15 @@ public class TileEntityNatureAltar extends TileEntityImpl implements ITickable { private int lastAura; + public TileEntityNatureAltar(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { + public void tick() { Random rand = this.world.rand; - if (this.world.getTotalWorldTime() % 40 == 0) { + if (this.world.getGameTime() % 40 == 0) { int index = 0; for (int x = -2; x <= 2; x += 4) { for (int z = -2; z <= 2; z += 4) { @@ -79,7 +82,7 @@ public class TileEntityNatureAltar extends TileEntityImpl implements ITickable { } if (!this.world.isRemote) { - if (this.world.getTotalWorldTime() % 40 == 0) { + if (this.world.getGameTime() % 40 == 0) { boolean fine = Multiblocks.ALTAR.isComplete(this.world, this.pos); if (fine != this.structureFine) { this.structureFine = fine; @@ -98,29 +101,31 @@ public class TileEntityNatureAltar extends TileEntityImpl implements ITickable { chunk.drainAura(spot, toStore); this.container.storeAura(toStore, false); - if (this.world.getTotalWorldTime() % 3 == 0) + // TODO particles + /*if (this.world.getGameTime() % 3 == 0) PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticleStream( this.pos.getX() + (float) rand.nextGaussian() * 10F, this.pos.getY() + rand.nextFloat() * 10F, this.pos.getZ() + (float) rand.nextGaussian() * 10F, this.pos.getX() + 0.5F, this.pos.getY() + 0.5F, this.pos.getZ() + 0.5F, rand.nextFloat() * 0.1F + 0.1F, 0x89cc37, rand.nextFloat() * 1F + 1F - )); + ));*/ } } ItemStack stack = this.items.getStackInSlot(0); - if (!stack.isEmpty() && stack.hasCapability(NaturesAuraAPI.capAuraContainer, null)) { - IAuraContainer container = stack.getCapability(NaturesAuraAPI.capAuraContainer, null); + IAuraContainer container = stack.getCapability(NaturesAuraAPI.capAuraContainer, null).orElse(null); + if (!stack.isEmpty() && container != null) { int theoreticalDrain = this.container.drainAura(1000, true); if (theoreticalDrain > 0) { int stored = container.storeAura(theoreticalDrain, false); if (stored > 0) { this.container.drainAura(stored, false); - if (this.world.getTotalWorldTime() % 4 == 0) { + // TODO particles + /*if (this.world.getGameTime() % 4 == 0) PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 4)); - } + */ } } } else { @@ -129,7 +134,7 @@ public class TileEntityNatureAltar extends TileEntityImpl implements ITickable { this.currentRecipe = this.getRecipeForInput(stack); } } else { - if (stack.isEmpty() || !this.currentRecipe.input.apply(stack)) { + if (stack.isEmpty() || !this.currentRecipe.input.test(stack)) { this.currentRecipe = null; this.timer = 0; } else { @@ -137,9 +142,10 @@ public class TileEntityNatureAltar extends TileEntityImpl implements ITickable { if (this.container.getStoredAura() >= req) { this.container.drainAura(req, false); - if (this.timer % 4 == 0) { + // TODO particles + /*if (this.timer % 4 == 0) PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 4)); - } + */ this.timer++; if (this.timer >= this.currentRecipe.time) { @@ -156,7 +162,7 @@ public class TileEntityNatureAltar extends TileEntityImpl implements ITickable { } } - if (this.world.getTotalWorldTime() % 10 == 0 && this.lastAura != this.container.getStoredAura()) { + if (this.world.getGameTime() % 10 == 0 && this.lastAura != this.container.getStoredAura()) { this.lastAura = this.container.getStoredAura(); this.sendToClients(); } @@ -194,11 +200,11 @@ public class TileEntityNatureAltar extends TileEntityImpl implements ITickable { private AltarRecipe getRecipeForInput(ItemStack input) { for (AltarRecipe recipe : NaturesAuraAPI.ALTAR_RECIPES.values()) { - if (recipe.input.apply(input)) { + if (recipe.input.test(input)) { if (recipe.catalyst == Ingredient.EMPTY) return recipe; for (ItemStack stack : this.catalysts) - if (recipe.catalyst.apply(stack)) + if (recipe.catalyst.test(stack)) return recipe; } } @@ -209,14 +215,14 @@ public class TileEntityNatureAltar extends TileEntityImpl implements ITickable { public void writeNBT(CompoundNBT compound, SaveType type) { super.writeNBT(compound, type); if (type != SaveType.BLOCK) { - compound.setTag("items", this.items.serializeNBT()); - compound.setBoolean("fine", this.structureFine); + compound.put("items", this.items.serializeNBT()); + compound.putBoolean("fine", this.structureFine); this.container.writeNBT(compound); } if (type == SaveType.TILE) { if (this.currentRecipe != null) { - compound.setString("recipe", this.currentRecipe.name.toString()); - compound.setInteger("timer", this.timer); + compound.putString("recipe", this.currentRecipe.name.toString()); + compound.putInt("timer", this.timer); } } } @@ -225,14 +231,14 @@ public class TileEntityNatureAltar extends TileEntityImpl implements ITickable { public void readNBT(CompoundNBT compound, SaveType type) { super.readNBT(compound, type); if (type != SaveType.BLOCK) { - this.items.deserializeNBT(compound.getCompoundTag("items")); + this.items.deserializeNBT(compound.getCompound("items")); this.structureFine = compound.getBoolean("fine"); this.container.readNBT(compound); } if (type == SaveType.TILE) { - if (compound.hasKey("recipe")) { + if (compound.contains("recipe")) { this.currentRecipe = NaturesAuraAPI.ALTAR_RECIPES.get(new ResourceLocation(compound.getString("recipe"))); - this.timer = compound.getInteger("timer"); + this.timer = compound.getInt("timer"); } } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityOakGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityOakGenerator.java index ee02eb7c..8ed7553c 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityOakGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityOakGenerator.java @@ -1,21 +1,24 @@ 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.block.LogBlock; -import net.minecraft.util.ITickable; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.math.BlockPos; import java.util.ArrayDeque; import java.util.Queue; -public class TileEntityOakGenerator extends TileEntityImpl implements ITickable { +public class TileEntityOakGenerator extends TileEntityImpl implements ITickableTileEntity { public Queue scheduledBigTrees = new ArrayDeque<>(); + public TileEntityOakGenerator(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { + public void tick() { if (!this.world.isRemote) while (!this.scheduledBigTrees.isEmpty()) { BlockPos pos = this.scheduledBigTrees.remove(); @@ -28,9 +31,10 @@ public class TileEntityOakGenerator extends TileEntityImpl implements ITickable toAdd -= IAuraChunk.getAuraChunk(this.world, spot).storeAura(spot, toAdd); } - PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles( + // TODO particles + /* PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles( this.pos.getX(), this.pos.getY(), this.pos.getZ(), 12, - pos.getX(), pos.getY(), pos.getZ(), canGen ? 1 : 0)); + pos.getX(), pos.getY(), pos.getZ(), canGen ? 1 : 0));*/ } } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityOfferingTable.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityOfferingTable.java index 6421bb6d..e500f22b 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityOfferingTable.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityOfferingTable.java @@ -4,16 +4,14 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.recipes.OfferingRecipe; import de.ellpeck.naturesaura.blocks.multi.Multiblocks; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; -import net.minecraft.entity.effect.LightningBoltEntity; import net.minecraft.entity.item.ItemEntity; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.INBT; import net.minecraft.nbt.ListNBT; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; -import net.minecraft.util.ITickable; import net.minecraft.util.math.AxisAlignedBB; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemStackHandler; @@ -22,7 +20,7 @@ import java.util.ArrayDeque; import java.util.List; import java.util.Queue; -public class TileEntityOfferingTable extends TileEntityImpl implements ITickable { +public class TileEntityOfferingTable extends TileEntityImpl implements ITickableTileEntity { public final ItemStackHandler items = new ItemStackHandlerNA(1, this, true) { @Override public int getSlotLimit(int slot) { @@ -31,10 +29,14 @@ public class TileEntityOfferingTable extends TileEntityImpl implements ITickable }; private final Queue itemsToSpawn = new ArrayDeque<>(); + public TileEntityOfferingTable(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { + public void tick() { if (!this.world.isRemote) { - if (this.world.getTotalWorldTime() % 20 == 0) { + if (this.world.getGameTime() % 20 == 0) { if (!Multiblocks.OFFERING_TABLE.isComplete(this.world, this.pos)) return; @@ -51,35 +53,37 @@ public class TileEntityOfferingTable extends TileEntityImpl implements ITickable return; for (ItemEntity item : items) { - if (item.isDead || item.cannotPickup()) + if (!item.isAlive() || item.cannotPickup()) continue; ItemStack itemStack = item.getItem(); if (itemStack.isEmpty() || itemStack.getCount() != 1) continue; - if (!recipe.startItem.apply(itemStack)) + if (!recipe.startItem.test(itemStack)) continue; int amount = Helper.getIngredientAmount(recipe.input); int recipeCount = stack.getCount() / amount; stack.shrink(recipeCount * amount); - item.setDead(); + item.remove(); this.sendToClients(); for (int i = 0; i < recipeCount; i++) this.itemsToSpawn.add(recipe.output.copy()); - this.world.addWeatherEffect(new LightningBoltEntity(this.world, this.pos.getX(), this.pos.getY(), this.pos.getZ(), true)); - PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles( + // TODO weather effects + //this.world.addWeatherEffect(new LightningBoltEntity(this.world, this.pos.getX(), this.pos.getY(), this.pos.getZ(), true)); + // TODO particles + /* PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles( (float) item.posX, (float) item.posY, (float) item.posZ, 13, - this.pos.getX(), this.pos.getY(), this.pos.getZ())); + this.pos.getX(), this.pos.getY(), this.pos.getZ()));*/ break; } - } else if (this.world.getTotalWorldTime() % 3 == 0) { + } else if (this.world.getGameTime() % 3 == 0) { if (!this.itemsToSpawn.isEmpty()) - this.world.spawnEntity(new ItemEntity( + this.world.addEntity(new ItemEntity( this.world, this.pos.getX() + 0.5F, 256, this.pos.getZ() + 0.5F, this.itemsToSpawn.remove())); @@ -89,7 +93,7 @@ public class TileEntityOfferingTable extends TileEntityImpl implements ITickable private static OfferingRecipe getRecipe(ItemStack input) { for (OfferingRecipe recipe : NaturesAuraAPI.OFFERING_RECIPES.values()) - if (recipe.input.apply(input)) + if (recipe.input.test(input)) return recipe; return null; } @@ -98,14 +102,14 @@ public class TileEntityOfferingTable extends TileEntityImpl implements ITickable public void writeNBT(CompoundNBT compound, SaveType type) { super.writeNBT(compound, type); if (type != SaveType.BLOCK) { - compound.setTag("items", this.items.serializeNBT()); + compound.put("items", this.items.serializeNBT()); if (type != SaveType.SYNC) { ListNBT list = new ListNBT(); for (ItemStack stack : this.itemsToSpawn) { - list.appendTag(stack.serializeNBT()); + list.add(stack.serializeNBT()); } - compound.setTag("items_to_spawn", list); + compound.put("items_to_spawn", list); } } } @@ -114,13 +118,13 @@ public class TileEntityOfferingTable extends TileEntityImpl implements ITickable public void readNBT(CompoundNBT compound, SaveType type) { super.readNBT(compound, type); if (type != SaveType.BLOCK) { - this.items.deserializeNBT(compound.getCompoundTag("items")); + this.items.deserializeNBT(compound.getCompound("items")); if (type != SaveType.SYNC) { this.itemsToSpawn.clear(); - ListNBT list = compound.getTagList("items_to_spawn", 10); - for (NBTBase base : list) { - this.itemsToSpawn.add(new ItemStack((CompoundNBT) base)); + ListNBT list = compound.getList("items_to_spawn", 10); + for (INBT base : list) { + this.itemsToSpawn.add(ItemStack.read((CompoundNBT) base)); } } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPlacer.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPlacer.java index 7e81f7a5..47e20758 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPlacer.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPlacer.java @@ -4,20 +4,19 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.blocks.ModBlocks; import de.ellpeck.naturesaura.items.ModItems; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.block.BlockState; -import net.minecraft.entity.item.ItemFrameEntity; import net.minecraft.block.Blocks; -import net.minecraft.item.Items; +import net.minecraft.entity.item.ItemFrameEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; import net.minecraft.util.Hand; -import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ServerWorld; +import net.minecraft.world.server.ServerWorld; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.FakePlayerFactory; @@ -27,17 +26,21 @@ import net.minecraftforge.items.IItemHandler; import java.util.ArrayList; import java.util.List; -public class TileEntityPlacer extends TileEntityImpl implements ITickable { +public class TileEntityPlacer extends TileEntityImpl implements ITickableTileEntity { + + public TileEntityPlacer(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } @Override - public void update() { - if (!this.world.isRemote && this.world.getTotalWorldTime() % 15 == 0) { + public void tick() { + if (!this.world.isRemote && this.world.getGameTime() % 15 == 0) { if (this.redstonePower > 0) return; TileEntity tileUp = this.world.getTileEntity(this.pos.up()); - if (tileUp == null || !tileUp.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, Direction.DOWN)) + if (tileUp == null) return; - IItemHandler handler = tileUp.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, Direction.DOWN); + IItemHandler handler = tileUp.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, Direction.DOWN).orElse(null); if (handler == null) return; List frames = Helper.getAttachedItemFrames(this.world, this.pos); @@ -55,7 +58,8 @@ public class TileEntityPlacer extends TileEntityImpl implements ITickable { BlockPos up = pos.up(); BlockState state = this.world.getBlockState(up); - if (state.getBlock().isReplaceable(this.world, up)) + // TODO maybe allow the placer to place on more than air? + if (state.isAir(this.world, up)) validPositions.add(up); } if (validPositions.isEmpty()) @@ -75,7 +79,8 @@ public class TileEntityPlacer extends TileEntityImpl implements ITickable { BlockPos spot = IAuraChunk.getHighestSpot(this.world, this.pos, 10, this.pos); IAuraChunk.getAuraChunk(this.world, spot).drainAura(spot, 1000); - PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles(pos.getX(), pos.getY(), pos.getZ(), 9)); + // TODO particles + // PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles(pos.getX(), pos.getY(), pos.getZ(), 9)); return; } @@ -109,13 +114,13 @@ public class TileEntityPlacer extends TileEntityImpl implements ITickable { FakePlayer fake = FakePlayerFactory.getMinecraft((ServerWorld) this.world); fake.inventory.mainInventory.set(fake.inventory.currentItem, stack); - fake.interactionManager.processRightClickBlock(fake, this.world, fake.getHeldItemMainhand(), Hand.MAIN_HAND, - pos, Direction.DOWN, 0.5F, 0.5F, 0.5F); + fake.interactionManager.processRightClick(fake, this.world, fake.getHeldItemMainhand(), Hand.MAIN_HAND); return fake.getHeldItemMainhand().copy(); } private boolean handleSpecialCases(ItemStack stack, BlockPos pos) { - if (stack.getItem() == Items.REDSTONE) + // TODO placer special cases + /* if (stack.getItem() == Items.REDSTONE) if (Blocks.REDSTONE_WIRE.canPlaceBlockAt(this.world, pos)) this.world.setBlockState(pos, Blocks.REDSTONE_WIRE.getDefaultState()); else @@ -134,10 +139,10 @@ public class TileEntityPlacer extends TileEntityImpl implements ITickable { if (!state.getBlock().isAir(state, this.world, pos)) return false; this.world.setBlockState(pos, plant); - } else + } else*/ return false; - stack.shrink(1); - return true; + /*stack.shrink(1); + return true;*/ } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPotionGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPotionGenerator.java index 98b6272c..8980aa70 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPotionGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPotionGenerator.java @@ -2,41 +2,43 @@ package de.ellpeck.naturesaura.blocks.tiles; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.blocks.multi.Multiblocks; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.entity.AreaEffectCloudEntity; import net.minecraft.potion.Effect; import net.minecraft.potion.EffectInstance; import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionUtils; -import net.minecraft.util.ITickable; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.relauncher.ReflectionHelper; +import net.minecraftforge.fml.common.ObfuscationReflectionHelper; import java.util.List; -public class TileEntityPotionGenerator extends TileEntityImpl implements ITickable { +public class TileEntityPotionGenerator extends TileEntityImpl implements ITickableTileEntity { + + public TileEntityPotionGenerator(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } @Override - public void update() { - if (!this.world.isRemote && this.world.getTotalWorldTime() % 10 == 0) { + public void tick() { + if (!this.world.isRemote && this.world.getGameTime() % 10 == 0) { if (Multiblocks.POTION_GENERATOR.isComplete(this.world, this.pos)) { boolean addedOne = false; List clouds = this.world.getEntitiesWithinAABB(AreaEffectCloudEntity.class, new AxisAlignedBB(this.pos).grow(2)); for (AreaEffectCloudEntity cloud : clouds) { - if (cloud.isDead) + if (!cloud.isAlive()) continue; if (!addedOne) { - Potion type = ReflectionHelper.getPrivateValue(AreaEffectCloudEntity.class, cloud, "field_184502_e", "potion"); + Potion type = ObfuscationReflectionHelper.getPrivateValue(AreaEffectCloudEntity.class, cloud, "field_184502_e"); if (type == null) continue; for (EffectInstance effect : type.getEffects()) { Effect potion = effect.getPotion(); - if (potion.isBadEffect() || potion.isInstant()) { + if (!potion.isBeneficial() || potion.isInstant()) { continue; } @@ -48,9 +50,10 @@ public class TileEntityPotionGenerator extends TileEntityImpl implements ITickab toAdd -= IAuraChunk.getAuraChunk(this.world, spot).storeAura(spot, toAdd); } - PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles( + // TODO particles + /* PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles( this.pos.getX(), this.pos.getY(), this.pos.getZ(), 5, - PotionUtils.getPotionColor(type), canGen ? 1 : 0)); + PotionUtils.getPotionColor(type), canGen ? 1 : 0));*/ addedOne = true; break; @@ -59,7 +62,7 @@ public class TileEntityPotionGenerator extends TileEntityImpl implements ITickab float newRadius = cloud.getRadius() - 0.25F; if (newRadius < 0.5F) - cloud.setDead(); + cloud.remove(); else cloud.setRadius(newRadius); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityProjectileGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityProjectileGenerator.java index 1eb6e253..0ff06dbf 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityProjectileGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityProjectileGenerator.java @@ -1,18 +1,22 @@ package de.ellpeck.naturesaura.blocks.tiles; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; -import net.minecraft.util.ITickable; public class TileEntityProjectileGenerator extends TileEntityImpl { public Direction nextSide = Direction.NORTH; + public TileEntityProjectileGenerator(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override public void writeNBT(CompoundNBT compound, SaveType type) { super.writeNBT(compound, type); if (type != SaveType.BLOCK) { - compound.setInteger("next_side", this.nextSide.getHorizontalIndex()); + compound.putInt("next_side", this.nextSide.getHorizontalIndex()); } } @@ -20,7 +24,7 @@ public class TileEntityProjectileGenerator extends TileEntityImpl { public void readNBT(CompoundNBT compound, SaveType type) { super.readNBT(compound, type); if (type != SaveType.BLOCK) { - this.nextSide = Direction.byHorizontalIndex(compound.getInteger("next_side")); + this.nextSide = Direction.byHorizontalIndex(compound.getInt("next_side")); } } } 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 fee14ec2..d65d9c4c 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityRFConverter.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityRFConverter.java @@ -3,51 +3,55 @@ package de.ellpeck.naturesaura.blocks.tiles; import de.ellpeck.naturesaura.ModConfig; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.blocks.multi.Multiblocks; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; -import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.EnergyStorage; import net.minecraftforge.energy.IEnergyStorage; import javax.annotation.Nullable; -public class TileEntityRFConverter extends TileEntityImpl implements ITickable { +public class TileEntityRFConverter extends TileEntityImpl implements ITickableTileEntity { public final RFStorage storage = new RFStorage(); private int lastEnergy; + public TileEntityRFConverter(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override public void writeNBT(CompoundNBT compound, SaveType type) { super.writeNBT(compound, type); - compound.setInteger("energy", this.storage.getEnergyStored()); + compound.putInt("energy", this.storage.getEnergyStored()); } @Override public void readNBT(CompoundNBT compound, SaveType type) { super.readNBT(compound, type); - this.storage.setEnergy(compound.getInteger("energy")); + this.storage.setEnergy(compound.getInt("energy")); } @Override - public void update() { + public void tick() { if (!this.world.isRemote) { - if (this.lastEnergy != this.storage.getEnergyStored() && this.world.getTotalWorldTime() % 10 == 0) { + if (this.lastEnergy != this.storage.getEnergyStored() && this.world.getGameTime() % 10 == 0) { this.sendToClients(); this.lastEnergy = this.storage.getEnergyStored(); } - for (Direction facing : Direction.VALUES) { + for (Direction facing : Direction.values()) { TileEntity tile = this.world.getTileEntity(this.pos.offset(facing)); - if (tile == null || !tile.hasCapability(CapabilityEnergy.ENERGY, facing.getOpposite())) + if (tile == null) continue; - IEnergyStorage storage = tile.getCapability(CapabilityEnergy.ENERGY, facing.getOpposite()); + IEnergyStorage storage = tile.getCapability(CapabilityEnergy.ENERGY, facing.getOpposite()).orElse(null); if (storage == null) continue; int canStore = storage.receiveEnergy(Integer.MAX_VALUE, true); @@ -63,7 +67,7 @@ public class TileEntityRFConverter extends TileEntityImpl implements ITickable { int emptyPart = this.storage.getMaxEnergyStored() - this.storage.getEnergyStored(); if (emptyPart <= 0) return; - if (this.world.getTotalWorldTime() % 20 != 0) + if (this.world.getGameTime() % 20 != 0) return; if (!Multiblocks.RF_CONVERTER.isComplete(this.world, this.pos)) return; @@ -78,21 +82,17 @@ public class TileEntityRFConverter extends TileEntityImpl implements ITickable { BlockPos pos = IAuraChunk.getHighestSpot(this.world, this.pos, 45, this.pos); IAuraChunk.getAuraChunk(this.world, pos).drainAura(pos, amountToUse); - PacketHandler.sendToAllAround(this.world, this.pos, 32, - new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 20)); + // TODO particles + /*PacketHandler.sendToAllAround(this.world, this.pos, 32, + new PacketParticles(this.pos.getX(), this.pos.getY(), this.pos.getZ(), 20));*/ } } - @Override - public boolean hasCapability(Capability capability, @Nullable Direction facing) { - return capability == CapabilityEnergy.ENERGY || super.hasCapability(capability, facing); - } - @Nullable @Override - public T getCapability(Capability capability, @Nullable Direction facing) { + public LazyOptional getCapability(Capability capability, @Nullable Direction facing) { if (capability == CapabilityEnergy.ENERGY) - return (T) this.storage; + return LazyOptional.of(() -> (T) this.storage); else return super.getCapability(capability, facing); } 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 8fd08a04..47a8666f 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityTimeChanger.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityTimeChanger.java @@ -7,26 +7,32 @@ import de.ellpeck.naturesaura.api.aura.type.IAuraType; import de.ellpeck.naturesaura.items.ModItems; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.item.ItemFrameEntity; -import net.minecraft.item.Items; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; import net.minecraft.nbt.CompoundNBT; import net.minecraft.network.play.server.SUpdateTimePacket; import net.minecraft.server.management.PlayerList; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.EntityPredicates; -import net.minecraft.util.ITickable; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; -import net.minecraft.world.ServerWorld; +import net.minecraft.world.GameRules; +import net.minecraft.world.server.ServerWorld; import java.util.List; -public class TileEntityTimeChanger extends TileEntityImpl implements ITickable { +public class TileEntityTimeChanger extends TileEntityImpl implements ITickableTileEntity { private long goalTime; + public TileEntityTimeChanger(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override - public void update() { + public void tick() { if (!this.world.isRemote) { List frames = Helper.getAttachedItemFrames(this.world, this.pos); for (ItemFrameEntity frame : frames) { @@ -35,28 +41,28 @@ public class TileEntityTimeChanger extends TileEntityImpl implements ITickable { continue; if (this.goalTime > 0) { - long current = this.world.getWorldTime(); + long current = this.world.getGameTime(); long toAdd = Math.min(75, this.goalTime - current); if (toAdd <= 0) { this.goalTime = 0; this.sendToClients(); return; } - this.world.setWorldTime(current + toAdd); + this.world.setDayTime(current + toAdd); BlockPos spot = IAuraChunk.getHighestSpot(this.world, this.pos, 35, this.pos); IAuraChunk.getAuraChunk(this.world, spot).drainAura(spot, (int) toAdd * 20); if (this.world instanceof ServerWorld) { - PlayerList list = this.world.getMinecraftServer().getPlayerList(); + PlayerList list = this.world.getServer().getPlayerList(); list.sendPacketToAllPlayersInDimension(new SUpdateTimePacket( - this.world.getTotalWorldTime(), this.world.getWorldTime(), - this.world.getGameRules().getBoolean("doDaylightCycle")), this.world.provider.getDimension()); + this.world.getGameTime(), this.world.getDayTime(), + this.world.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)), this.world.getDimension().getType()); } return; } - if (this.world.getTotalWorldTime() % 20 != 0) + if (this.world.getGameTime() % 20 != 0) return; List items = this.world.getEntitiesWithinAABB(ItemEntity.class, @@ -69,13 +75,13 @@ public class TileEntityTimeChanger extends TileEntityImpl implements ITickable { continue; int dayGoal = MathHelper.floor((frame.getRotation() / 8F) * 24000F) + 18000; - long current = this.world.getWorldTime(); + long current = this.world.getDayTime(); long toMove = (24000 - current % 24000 + dayGoal) % 24000; this.goalTime = current + toMove; this.sendToClients(); if (stack.getCount() <= 1) - item.setDead(); + item.remove(); else { stack.shrink(1); item.setItem(stack); @@ -88,7 +94,7 @@ public class TileEntityTimeChanger extends TileEntityImpl implements ITickable { this.sendToClients(); } } else if (this.goalTime > 0 && this.world.rand.nextFloat() >= 0.25F) { - double angle = Math.toRadians(this.world.getTotalWorldTime() * 5F % 360); + double angle = Math.toRadians(this.world.getGameTime() * 5F % 360); double x = this.pos.getX() + 0.5 + Math.sin(angle) * 3F; double z = this.pos.getZ() + 0.5 + Math.cos(angle) * 3F; int color = this.goalTime % 24000 > 12000 ? 0xe2e2e2 : 0xffe926; @@ -109,7 +115,7 @@ public class TileEntityTimeChanger extends TileEntityImpl implements ITickable { public void writeNBT(CompoundNBT compound, SaveType type) { super.writeNBT(compound, type); if (type != SaveType.BLOCK) - compound.setLong("goal", this.goalTime); + compound.putLong("goal", this.goalTime); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityWoodStand.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityWoodStand.java index 6c98f21b..f742753b 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityWoodStand.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityWoodStand.java @@ -3,22 +3,21 @@ package de.ellpeck.naturesaura.blocks.tiles; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.recipes.TreeRitualRecipe; import de.ellpeck.naturesaura.blocks.multi.Multiblocks; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticleStream; -import de.ellpeck.naturesaura.packet.PacketParticles; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; import net.minecraft.block.LeavesBlock; import net.minecraft.block.LogBlock; -import net.minecraft.block.BlockState; import net.minecraft.entity.item.ItemEntity; -import net.minecraft.util.SoundEvents; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; -import net.minecraft.util.ITickable; import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemStackHandler; @@ -27,7 +26,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -public class TileEntityWoodStand extends TileEntityImpl implements ITickable { +public class TileEntityWoodStand extends TileEntityImpl implements ITickableTileEntity { public final ItemStackHandler items = new ItemStackHandlerNA(1, this, true) { @Override @@ -40,16 +39,20 @@ public class TileEntityWoodStand extends TileEntityImpl implements ITickable { private BlockPos ritualPos; private int timer; + public TileEntityWoodStand(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + public void setRitual(BlockPos pos, TreeRitualRecipe recipe) { this.ritualPos = pos; this.recipe = recipe; } @Override - public void update() { + public void tick() { if (!this.world.isRemote) { if (this.ritualPos != null && this.recipe != null) { - if (this.world.getTotalWorldTime() % 5 == 0) { + if (this.world.getGameTime() % 5 == 0) { if (this.isRitualOkay()) { boolean wasOverHalf = this.timer >= this.recipe.time / 2; this.timer += 5; @@ -59,36 +62,37 @@ public class TileEntityWoodStand extends TileEntityImpl implements ITickable { Multiblocks.TREE_RITUAL.forEach(this.ritualPos, 'W', (pos, matcher) -> { TileEntity tile = this.world.getTileEntity(pos); if (tile instanceof TileEntityWoodStand && !((TileEntityWoodStand) tile).items.getStackInSlot(0).isEmpty()) { - PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticleStream( + // TODO particles + /* PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticleStream( (float) pos.getX() + 0.2F + this.world.rand.nextFloat() * 0.6F, (float) pos.getY() + 0.85F, (float) pos.getZ() + 0.2F + this.world.rand.nextFloat() * 0.6F, this.ritualPos.getX() + 0.5F, this.ritualPos.getY() + this.world.rand.nextFloat() * 3F + 2F, this.ritualPos.getZ() + 0.5F, this.world.rand.nextFloat() * 0.04F + 0.04F, 0x89cc37, this.world.rand.nextFloat() * 1F + 1F - )); + ));*/ } return true; }); - PacketHandler.sendToAllAround(this.world, this.ritualPos, 32, - new PacketParticles(this.ritualPos.getX(), this.ritualPos.getY(), this.ritualPos.getZ(), 0)); + /* PacketHandler.sendToAllAround(this.world, this.ritualPos, 32, + new PacketParticles(this.ritualPos.getX(), this.ritualPos.getY(), this.ritualPos.getZ(), 0));*/ if (this.timer >= this.recipe.time) { this.recurseTreeDestruction(this.ritualPos, this.ritualPos); Multiblocks.TREE_RITUAL.forEach(this.ritualPos, 'G', (pos, matcher) -> { - this.world.setBlockToAir(pos); + this.world.setBlockState(pos, Blocks.AIR.getDefaultState()); return true; }); ItemEntity item = new ItemEntity(this.world, this.ritualPos.getX() + 0.5, this.ritualPos.getY() + 4.5, this.ritualPos.getZ() + 0.5, this.recipe.result.copy()); - this.world.spawnEntity(item); + this.world.addEntity(item); - PacketHandler.sendToAllAround(this.world, this.pos, 32, - new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 3)); + /*PacketHandler.sendToAllAround(this.world, this.pos, 32, + new PacketParticles((float) item.posX, (float) item.posY, (float) item.posZ, 3));*/ this.world.playSound(null, this.pos.getX() + 0.5, this.pos.getY() + 0.5, this.pos.getZ() + 0.5, - SoundEvents.ENTITY_ENDERMEN_TELEPORT, SoundCategory.BLOCKS, 0.65F, 1F); + SoundEvents.ENTITY_ENDERMAN_TELEPORT, SoundCategory.BLOCKS, 0.65F, 1F); this.ritualPos = null; this.recipe = null; @@ -99,8 +103,8 @@ public class TileEntityWoodStand extends TileEntityImpl implements ITickable { if (tile instanceof TileEntityWoodStand) { TileEntityWoodStand stand = (TileEntityWoodStand) tile; if (!stand.items.getStackInSlot(0).isEmpty()) { - PacketHandler.sendToAllAround(this.world, this.pos, 32, - new PacketParticles(stand.pos.getX(), stand.pos.getY(), stand.pos.getZ(), 1)); + /* PacketHandler.sendToAllAround(this.world, this.pos, 32, + new PacketParticles(stand.pos.getX(), stand.pos.getY(), stand.pos.getZ(), 1));*/ this.world.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); @@ -135,8 +139,8 @@ public class TileEntityWoodStand extends TileEntityImpl implements ITickable { BlockPos offset = pos.add(x, y, z); BlockState state = this.world.getBlockState(offset); if (state.getBlock() instanceof LogBlock || state.getBlock() instanceof LeavesBlock) { - this.world.setBlockToAir(offset); - PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles(offset.getX(), offset.getY(), offset.getZ(), 2)); + this.world.setBlockState(offset, Blocks.AIR.getDefaultState()); + //PacketHandler.sendToAllAround(this.world, this.pos, 32, new PacketParticles(offset.getX(), offset.getY(), offset.getZ(), 2)); this.recurseTreeDestruction(offset, start); } @@ -151,7 +155,7 @@ public class TileEntityWoodStand extends TileEntityImpl implements ITickable { } for (int i = 0; i < 2; i++) { BlockState state = this.world.getBlockState(this.ritualPos.up(i)); - if(!(state.getBlock() instanceof LogBlock)) + if (!(state.getBlock() instanceof LogBlock)) return false; } if (this.timer < this.recipe.time / 2) { @@ -163,7 +167,7 @@ public class TileEntityWoodStand extends TileEntityImpl implements ITickable { if (!stack.isEmpty()) { for (int i = required.size() - 1; i >= 0; i--) { Ingredient req = required.get(i); - if (req.apply(stack)) { + if (req.test(stack)) { required.remove(i); return true; } @@ -182,13 +186,13 @@ public class TileEntityWoodStand extends TileEntityImpl implements ITickable { public void writeNBT(CompoundNBT compound, SaveType type) { super.writeNBT(compound, type); if (type != SaveType.BLOCK) - compound.setTag("items", this.items.serializeNBT()); + compound.put("items", this.items.serializeNBT()); if (type == SaveType.TILE) { if (this.ritualPos != null && this.recipe != null) { - compound.setLong("ritual_pos", this.ritualPos.toLong()); - compound.setInteger("timer", this.timer); - compound.setString("recipe", this.recipe.name.toString()); + compound.putLong("ritual_pos", this.ritualPos.toLong()); + compound.putInt("timer", this.timer); + compound.putString("recipe", this.recipe.name.toString()); } } } @@ -197,12 +201,12 @@ public class TileEntityWoodStand extends TileEntityImpl implements ITickable { public void readNBT(CompoundNBT compound, SaveType type) { super.readNBT(compound, type); if (type != SaveType.BLOCK) - this.items.deserializeNBT(compound.getCompoundTag("items")); + this.items.deserializeNBT(compound.getCompound("items")); if (type == SaveType.TILE) { - if (compound.hasKey("recipe")) { + if (compound.contains("recipe")) { this.ritualPos = BlockPos.fromLong(compound.getLong("ritual_pos")); - this.timer = compound.getInteger("timer"); + this.timer = compound.getInt("timer"); this.recipe = NaturesAuraAPI.TREE_RITUAL_RECIPES.get(new ResourceLocation(compound.getString("recipe"))); } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderEnderCrate.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderEnderCrate.java index 2933f356..7060233c 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderEnderCrate.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderEnderCrate.java @@ -1,10 +1,11 @@ package de.ellpeck.naturesaura.blocks.tiles.render; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.naturesaura.blocks.tiles.TileEntityEnderCrate; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GLAllocation; -import com.mojang.blaze3d.platform.GlStateManager; +import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; @@ -25,15 +26,16 @@ public class RenderEnderCrate extends TileEntityRenderer { private final FloatBuffer buffer = GLAllocation.createDirectFloatBuffer(16); @Override - public void render(TileEntityEnderCrate te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { + public void render(TileEntityEnderCrate tileEntityIn, double x, double y, double z, float partialTicks, int destroyStage) { GlStateManager.disableLighting(); RANDOM.setSeed(31100L); - GlStateManager.getFloat(2982, MODELVIEW); - GlStateManager.getFloat(2983, PROJECTION); + GlStateManager.getMatrix(2982, MODELVIEW); + GlStateManager.getMatrix(2983, PROJECTION); double d0 = x * x + y * y + z * z; int i = this.getPasses(d0); float f = this.getOffset(); boolean flag = false; + GameRenderer gamerenderer = Minecraft.getInstance().gameRenderer; for (int j = 0; j < i; ++j) { GlStateManager.pushMatrix(); @@ -49,7 +51,7 @@ public class RenderEnderCrate extends TileEntityRenderer { if (j >= 1) { this.bindTexture(END_PORTAL_TEXTURE); flag = true; - Minecraft.getMinecraft().entityRenderer.setupFogColor(true); + gamerenderer.setupFogColor(true); } if (j == 1) { @@ -57,25 +59,25 @@ public class RenderEnderCrate extends TileEntityRenderer { GlStateManager.blendFunc(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE); } - GlStateManager.texGen(GlStateManager.TexGen.S, 9216); - GlStateManager.texGen(GlStateManager.TexGen.T, 9216); - GlStateManager.texGen(GlStateManager.TexGen.R, 9216); - GlStateManager.texGen(GlStateManager.TexGen.S, 9474, this.getBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - GlStateManager.texGen(GlStateManager.TexGen.T, 9474, this.getBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GlStateManager.texGen(GlStateManager.TexGen.R, 9474, this.getBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - GlStateManager.enableTexGenCoord(GlStateManager.TexGen.S); - GlStateManager.enableTexGenCoord(GlStateManager.TexGen.T); - GlStateManager.enableTexGenCoord(GlStateManager.TexGen.R); + GlStateManager.texGenMode(GlStateManager.TexGen.S, 9216); + GlStateManager.texGenMode(GlStateManager.TexGen.T, 9216); + GlStateManager.texGenMode(GlStateManager.TexGen.R, 9216); + GlStateManager.texGenParam(GlStateManager.TexGen.S, 9474, this.getBuffer(1.0F, 0.0F, 0.0F, 0.0F)); + GlStateManager.texGenParam(GlStateManager.TexGen.T, 9474, this.getBuffer(0.0F, 1.0F, 0.0F, 0.0F)); + GlStateManager.texGenParam(GlStateManager.TexGen.R, 9474, this.getBuffer(0.0F, 0.0F, 1.0F, 0.0F)); + GlStateManager.enableTexGen(GlStateManager.TexGen.S); + GlStateManager.enableTexGen(GlStateManager.TexGen.T); + GlStateManager.enableTexGen(GlStateManager.TexGen.R); GlStateManager.popMatrix(); GlStateManager.matrixMode(5890); GlStateManager.pushMatrix(); GlStateManager.loadIdentity(); - GlStateManager.translate(0.5F, 0.5F, 0.0F); - GlStateManager.scale(0.5F, 0.5F, 1.0F); + GlStateManager.translatef(0.5F, 0.5F, 0.0F); + GlStateManager.scalef(0.5F, 0.5F, 1.0F); float f2 = (float) (j + 1); - GlStateManager.translate(17.0F / f2, (2.0F + f2 / 1.5F) * ((float) Minecraft.getSystemTime() % 800000.0F / 800000.0F), 0.0F); - GlStateManager.rotate((f2 * f2 * 4321.0F + f2 * 9.0F) * 2.0F, 0.0F, 0.0F, 1.0F); - GlStateManager.scale(4.5F - f2 / 4.0F, 4.5F - f2 / 4.0F, 1.0F); + GlStateManager.translatef(17.0F / f2, (2.0F + f2 / 1.5F) * ((float) System.currentTimeMillis() % 800000.0F / 800000.0F), 0.0F); + GlStateManager.rotatef((f2 * f2 * 4321.0F + f2 * 9.0F) * 2.0F, 0.0F, 0.0F, 1.0F); + GlStateManager.scalef(4.5F - f2 / 4.0F, 4.5F - f2 / 4.0F, 1.0F); GlStateManager.multMatrix(PROJECTION); GlStateManager.multMatrix(MODELVIEW); Tessellator tessellator = Tessellator.getInstance(); @@ -98,13 +100,12 @@ public class RenderEnderCrate extends TileEntityRenderer { } GlStateManager.disableBlend(); - GlStateManager.disableTexGenCoord(GlStateManager.TexGen.S); - GlStateManager.disableTexGenCoord(GlStateManager.TexGen.T); - GlStateManager.disableTexGenCoord(GlStateManager.TexGen.R); + GlStateManager.disableTexGen(GlStateManager.TexGen.S); + GlStateManager.disableTexGen(GlStateManager.TexGen.T); + GlStateManager.disableTexGen(GlStateManager.TexGen.R); GlStateManager.enableLighting(); - if (flag) { - Minecraft.getMinecraft().entityRenderer.setupFogColor(false); + gamerenderer.setupFogColor(false); } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderGeneratorLimitRemover.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderGeneratorLimitRemover.java index a46e62ea..515125e7 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderGeneratorLimitRemover.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderGeneratorLimitRemover.java @@ -1,14 +1,17 @@ +/* TODO this render thing package de.ellpeck.naturesaura.blocks.tiles.render; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.blocks.tiles.TileEntityGeneratorLimitRemover; import de.ellpeck.naturesaura.blocks.tiles.TileEntityImpl; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; -import com.mojang.blaze3d.platform.GlStateManager; +import net.minecraft.client.renderer.BlockModelRenderer; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.model.Model; import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; @@ -32,7 +35,7 @@ public class RenderGeneratorLimitRemover extends TileEntityRenderer { + @Override - public void render(TileEntityNatureAltar tile, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { - ItemStack stack = tile.items.getStackInSlot(0); + public void render(TileEntityNatureAltar tileEntityIn, double x, double y, double z, float partialTicks, int destroyStage) { + ItemStack stack = tileEntityIn.items.getStackInSlot(0); if (!stack.isEmpty()) { GlStateManager.pushMatrix(); - float time = tile.bobTimer + partialTicks; + float time = tileEntityIn.bobTimer + partialTicks; float bob = (float) Math.sin(time / 10F) * 0.1F; - GlStateManager.translate(x + 0.5F, y + 1.2F + bob, z + 0.5F); - GlStateManager.rotate((time * 3) % 360, 0F, 1F, 0F); + GlStateManager.translated(x + 0.5F, y + 1.2F + bob, z + 0.5F); + GlStateManager.rotatef((time * 3) % 360, 0F, 1F, 0F); float scale = stack.getItem() instanceof BlockItem ? 0.75F : 0.5F; - GlStateManager.scale(scale, scale, scale); + GlStateManager.scalef(scale, scale, scale); Helper.renderItemInWorld(stack); GlStateManager.popMatrix(); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderProjectileGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderProjectileGenerator.java index 773f9fba..4aebf65e 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderProjectileGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderProjectileGenerator.java @@ -1,3 +1,4 @@ +/* TODO render projectile generator package de.ellpeck.naturesaura.blocks.tiles.render; import de.ellpeck.naturesaura.NaturesAura; @@ -53,3 +54,4 @@ public class RenderProjectileGenerator extends TileEntityRenderer> 4; int expZ = pos.getZ() >> 4; - if (expX != this.chunk.x || expZ != this.chunk.z) - throw new IllegalArgumentException("Tried to add drain spot " + pos + " to chunk at " + this.chunk.x + ", " + this.chunk.z + " when it should've been added to chunk at " + expX + ", " + expZ); + if (expX != this.chunk.getPos().x || expZ != this.chunk.getPos().z) + throw new IllegalArgumentException("Tried to add drain spot " + pos + " to chunk at " + this.chunk.getPos().x + ", " + this.chunk.getPos().z + " when it should've been added to chunk at " + expX + ", " + expZ); this.drainSpots.put(pos, spot); } @@ -145,24 +142,24 @@ public class AuraChunk implements IAuraChunk { for (Map.Entry entry : this.drainSpots.entrySet()) { BlockPos pos = entry.getKey(); MutableInt amount = entry.getValue(); - for (IDrainSpotEffect effect : this.effects) { - world.profiler.func_194340_a(() -> effect.getName().toString()); + for (IDrainSpotEffect effect : this.effects) effect.update(world, this.chunk, this, pos, amount.intValue()); - world.profiler.endSection(); - } } if (this.needsSync) { - PacketHandler.sendToAllLoaded(world, + // TODO packets + /*PacketHandler.sendToAllLoaded(world, new BlockPos(this.chunk.x * 16, 0, this.chunk.z * 16), - this.makePacket()); + this.makePacket());*/ this.needsSync = false; } } +/* public IMessage makePacket() { return new PacketAuraChunk(this.chunk.x, this.chunk.z, this.drainSpots); } +*/ public void getSpotsInArea(BlockPos pos, int radius, BiConsumer consumer) { for (Map.Entry entry : this.drainSpots.entrySet()) { @@ -176,7 +173,7 @@ public class AuraChunk implements IAuraChunk { public void getActiveEffectIcons(PlayerEntity player, Map> icons) { for (IDrainSpotEffect effect : this.effects) { Tuple alreadyThere = icons.get(effect.getName()); - if (alreadyThere != null && alreadyThere.getSecond()) + if (alreadyThere != null && alreadyThere.getB()) continue; for (Map.Entry entry : this.drainSpots.entrySet()) { BlockPos pos = entry.getKey(); @@ -197,25 +194,25 @@ public class AuraChunk implements IAuraChunk { ListNBT list = new ListNBT(); for (Map.Entry entry : this.drainSpots.entrySet()) { CompoundNBT tag = new CompoundNBT(); - tag.setLong("pos", entry.getKey().toLong()); - tag.setInteger("amount", entry.getValue().intValue()); - list.appendTag(tag); + tag.putLong("pos", entry.getKey().toLong()); + tag.putInt("amount", entry.getValue().intValue()); + list.add(tag); } CompoundNBT compound = new CompoundNBT(); - compound.setTag("drain_spots", list); + compound.put("drain_spots", list); return compound; } @Override public void deserializeNBT(CompoundNBT compound) { this.drainSpots.clear(); - ListNBT list = compound.getTagList("drain_spots", 10); - for (NBTBase base : list) { + ListNBT list = compound.getList("drain_spots", 10); + for (INBT base : list) { CompoundNBT tag = (CompoundNBT) base; this.addDrainSpot( BlockPos.fromLong(tag.getLong("pos")), - new MutableInt(tag.getInteger("amount"))); + new MutableInt(tag.getInt("amount"))); } } } 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 54a9554d..2e5a4aa0 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/AnimalEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/AnimalEffect.java @@ -6,21 +6,21 @@ import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.api.aura.chunk.IDrainSpotEffect; import de.ellpeck.naturesaura.api.aura.type.IAuraType; +import net.minecraft.entity.EntityType; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.entity.passive.ChickenEntity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Items; import net.minecraft.item.EggItem; import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumParticleTypes; +import net.minecraft.item.Items; +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.world.World; import net.minecraft.world.chunk.Chunk; -import net.minecraftforge.fml.relauncher.ReflectionHelper; import java.util.Comparator; import java.util.List; @@ -72,10 +72,10 @@ public class AnimalEffect implements IDrainSpotEffect { if (animals.size() >= 200) return; - if (world.getTotalWorldTime() % 200 == 0) { + if (world.getGameTime() % 200 == 0) { List items = world.getEntitiesWithinAABB(ItemEntity.class, this.bb); for (ItemEntity item : items) { - if (item.isDead) + if (!item.isAlive()) continue; if (!NaturesAuraAPI.instance().isEffectPowderActive(world, item.getPosition(), NAME)) continue; @@ -84,21 +84,21 @@ public class AnimalEffect implements IDrainSpotEffect { if (!(stack.getItem() instanceof EggItem)) continue; // The getAge() method is private for absolutely no reason but I want it so I don't care - int age = ReflectionHelper.getPrivateValue(ItemEntity.class, item, "field_70292_b", "age"); + int age = item.getAge(); if (age < item.lifespan / 2) continue; if (stack.getCount() <= 1) - item.setDead(); + item.remove(); else { stack.shrink(1); item.setItem(stack); } - ChickenEntity chicken = new ChickenEntity(world); + ChickenEntity chicken = new ChickenEntity(EntityType.CHICKEN, world); chicken.setGrowingAge(-24000); chicken.setPosition(item.posX, item.posY, item.posZ); - world.spawnEntity(chicken); + world.addEntity(chicken); BlockPos closestSpot = IAuraChunk.getHighestSpot(world, item.getPosition(), 35, pos); IAuraChunk.getAuraChunk(world, closestSpot).drainAura(closestSpot, 2000); @@ -134,10 +134,10 @@ public class AnimalEffect implements IDrainSpotEffect { private void setInLove(AnimalEntity animal) { animal.setInLove(null); for (int j = 0; j < 7; j++) - animal.world.spawnParticle(EnumParticleTypes.HEART, - (animal.posX + (double) (animal.world.rand.nextFloat() * animal.width * 2.0F)) - animal.width, - animal.posY + 0.5D + (double) (animal.world.rand.nextFloat() * animal.height), - (animal.posZ + (double) (animal.world.rand.nextFloat() * animal.width * 2.0F)) - animal.width, + animal.world.addParticle(ParticleTypes.HEART, + (animal.posX + (double) (animal.world.rand.nextFloat() * animal.getWidth() * 2.0F)) - animal.getWidth(), + animal.posY + 0.5D + (double) (animal.world.rand.nextFloat() * animal.getHeight()), + (animal.posZ + (double) (animal.world.rand.nextFloat() * animal.getWidth() * 2.0F)) - animal.getWidth(), animal.world.rand.nextGaussian() * 0.02D, animal.world.rand.nextGaussian() * 0.02D, animal.world.rand.nextGaussian() * 0.02D); 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 24f25da9..f5b1a54a 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/OreSpawnEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/OreSpawnEffect.java @@ -9,20 +9,18 @@ import de.ellpeck.naturesaura.api.aura.type.IAuraType; import de.ellpeck.naturesaura.api.recipes.WeightedOre; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.block.Blocks; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.util.*; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Tuple; +import net.minecraft.util.WeightedRandom; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; -import net.minecraft.world.ServerWorld; import net.minecraft.world.chunk.Chunk; -import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.common.util.FakePlayerFactory; -import net.minecraftforge.oredict.OreDictionary; import java.util.HashSet; import java.util.List; @@ -53,7 +51,7 @@ public class OreSpawnEffect implements IDrainSpotEffect { public int isActiveHere(PlayerEntity player, Chunk chunk, IAuraChunk auraChunk, BlockPos pos, Integer spot) { if (!this.calcValues(player.world, pos, spot)) return -1; - if (player.getDistanceSq(pos) > this.dist * this.dist) + if (player.getDistanceSq(pos.getX(), pos.getY(), pos.getZ()) > this.dist * this.dist) return -1; if (!NaturesAuraAPI.instance().isEffectPowderActive(player.world, player.getPosition(), NAME)) return 0; @@ -67,7 +65,7 @@ public class OreSpawnEffect implements IDrainSpotEffect { @Override public void update(World world, Chunk chunk, IAuraChunk auraChunk, BlockPos pos, Integer spot) { - if (world.getTotalWorldTime() % 40 != 0) + if (world.getGameTime() % 40 != 0) return; if (!this.calcValues(world, pos, spot)) return; @@ -89,20 +87,21 @@ public class OreSpawnEffect implements IDrainSpotEffect { return; for (int i = 0; i < this.amount; i++) { Tuple powder = powders.get(i % powders.size()); - Vec3d powderPos = powder.getFirst(); - int range = powder.getSecond(); + Vec3d powderPos = powder.getA(); + int range = powder.getB(); int x = MathHelper.floor(powderPos.x + world.rand.nextGaussian() * range); int y = MathHelper.floor(powderPos.y + world.rand.nextGaussian() * range); int z = MathHelper.floor(powderPos.z + world.rand.nextGaussian() * range); BlockPos orePos = new BlockPos(x, y, z); - if (orePos.distanceSq(powderPos.x, powderPos.y, powderPos.z) <= range * range + if (orePos.distanceSq(powderPos.x, powderPos.y, powderPos.z, true) <= range * range && orePos.distanceSq(pos) <= this.dist * this.dist && world.isBlockLoaded(orePos)) { BlockState state = world.getBlockState(orePos); Block block = state.getBlock(); if (block != requiredBlock) continue; - outer: + // TODO place ores + /*outer: while (true) { WeightedOre ore = WeightedRandom.getRandomItem(world.rand, ores, totalWeight); List stacks = OreDictionary.getOres(ore.name, false); @@ -114,7 +113,7 @@ public class OreSpawnEffect implements IDrainSpotEffect { continue; FakePlayer player = FakePlayerFactory.getMinecraft((ServerWorld) world); - BlockState stateToPlace = toPlace.getStateForPlacement(world, pos, EnumFacing.UP, 0, 0, 0, stack.getMetadata(), player, EnumHand.MAIN_HAND); + BlockState stateToPlace = toPlace.getStateForPlacement(world, pos, Direction.UP, 0, 0, 0, stack.getDamage(), player, EnumHand.MAIN_HAND); if (SPAWN_EXCEPTIONS.contains(stateToPlace)) continue; @@ -126,7 +125,7 @@ public class OreSpawnEffect implements IDrainSpotEffect { IAuraChunk.getAuraChunk(world, highestSpot).drainAura(highestSpot, toDrain); break outer; } - } + }*/ } } } 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 ea5b3f82..9f21da44 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/PlantBoostEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/PlantBoostEffect.java @@ -6,20 +6,16 @@ import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.api.aura.chunk.IDrainSpotEffect; import de.ellpeck.naturesaura.api.aura.type.IAuraType; -import de.ellpeck.naturesaura.packet.PacketHandler; -import de.ellpeck.naturesaura.packet.PacketParticles; -import net.minecraft.block.Block; -import net.minecraft.block.IGrowable; -import net.minecraft.block.BlockState; +import net.minecraft.block.*; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.block.Blocks; -import net.minecraft.item.Items; 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.world.World; import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.gen.Heightmap; public class PlantBoostEffect implements IDrainSpotEffect { @@ -45,7 +41,7 @@ public class PlantBoostEffect implements IDrainSpotEffect { public int isActiveHere(PlayerEntity player, Chunk chunk, IAuraChunk auraChunk, BlockPos pos, Integer spot) { if (!this.calcValues(player.world, pos, spot)) return -1; - if (player.getDistanceSq(pos) > this.dist * this.dist) + if (player.getDistanceSq(pos.getX(), pos.getY(), pos.getZ()) > this.dist * this.dist) return -1; if (NaturesAuraAPI.instance().isEffectPowderActive(player.world, player.getPosition(), NAME)) return 0; @@ -64,15 +60,14 @@ public class PlantBoostEffect implements IDrainSpotEffect { for (int i = this.amount / 2 + world.rand.nextInt(this.amount / 2); i >= 0; i--) { int x = MathHelper.floor(pos.getX() + world.rand.nextGaussian() * this.dist); int z = MathHelper.floor(pos.getZ() + world.rand.nextGaussian() * this.dist); - BlockPos plantPos = new BlockPos(x, world.getHeight(x, z), z); + BlockPos plantPos = new BlockPos(x, world.getHeight(Heightmap.Type.WORLD_SURFACE, x, z), z); if (plantPos.distanceSq(pos) <= this.dist * this.dist && world.isBlockLoaded(plantPos)) { if (NaturesAuraAPI.instance().isEffectPowderActive(world, plantPos, NAME)) continue; BlockState state = world.getBlockState(plantPos); Block block = state.getBlock(); - if (block instanceof IGrowable && - block != Blocks.TALLGRASS && block != Blocks.GRASS && block != Blocks.DOUBLE_PLANT) { + if (block instanceof IGrowable && !(block instanceof DoublePlantBlock) && !(block instanceof TallGrassBlock) && block != Blocks.GRASS) { IGrowable growable = (IGrowable) block; if (growable.canGrow(world, plantPos, state, false)) { growable.grow(world, world.rand, plantPos, state); @@ -80,8 +75,9 @@ public class PlantBoostEffect implements IDrainSpotEffect { BlockPos closestSpot = IAuraChunk.getHighestSpot(world, plantPos, 25, pos); IAuraChunk.getAuraChunk(world, closestSpot).drainAura(closestSpot, 3500); - PacketHandler.sendToAllAround(world, plantPos, 32, - new PacketParticles(plantPos.getX(), plantPos.getY(), plantPos.getZ(), 6)); + // TODO particles + /* PacketHandler.sendToAllAround(world, plantPos, 32, + new PacketParticles(plantPos.getX(), plantPos.getY(), plantPos.getZ(), 6));*/ } } } diff --git a/src/main/java/de/ellpeck/naturesaura/commands/CommandAura.java b/src/main/java/de/ellpeck/naturesaura/commands/CommandAura.java index fd1be78e..ab0342e2 100644 --- a/src/main/java/de/ellpeck/naturesaura/commands/CommandAura.java +++ b/src/main/java/de/ellpeck/naturesaura/commands/CommandAura.java @@ -1,5 +1,7 @@ +/* TODO commands package de.ellpeck.naturesaura.commands; +import com.mojang.brigadier.Command; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import net.minecraft.command.*; @@ -12,19 +14,19 @@ import javax.annotation.Nullable; import java.util.Collections; import java.util.List; -public class CommandAura extends CommandBase { +public class CommandAura extends Command { @Override public String getName() { return "naaura"; } @Override - public String getUsage(ICommandSender sender) { + public String getUsage(ICommandSource sender) { return "command." + NaturesAura.MOD_ID + ".aura.usage"; } @Override - public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException { + public void execute(MinecraftServer server, ICommandSource sender, String[] args) throws CommandException { if (args.length < 2) throw new WrongUsageException(this.getUsage(sender)); World world = sender.getEntityWorld(); @@ -82,3 +84,4 @@ public class CommandAura extends CommandBase { } } } +*/ diff --git a/src/main/java/de/ellpeck/naturesaura/compat/BaublesCompat.java b/src/main/java/de/ellpeck/naturesaura/compat/BaublesCompat.java index 654a02fd..585f8ef0 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/BaublesCompat.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/BaublesCompat.java @@ -1,3 +1,4 @@ +/* TODO baubles package de.ellpeck.naturesaura.compat; import baubles.api.BaubleType; @@ -75,3 +76,4 @@ public class BaublesCompat { } } } +*/ diff --git a/src/main/java/de/ellpeck/naturesaura/compat/Compat.java b/src/main/java/de/ellpeck/naturesaura/compat/Compat.java index 18e32480..387e9f2d 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/Compat.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/Compat.java @@ -3,7 +3,7 @@ package de.ellpeck.naturesaura.compat; import de.ellpeck.naturesaura.compat.crafttweaker.CraftTweakerCompat; import de.ellpeck.naturesaura.compat.patchouli.PatchouliCompat; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.common.Loader; +import net.minecraftforge.fml.ModList; public final class Compat { @@ -13,12 +13,13 @@ public final class Compat { public static boolean mtLib; public static void preInit() { - baubles = Loader.isModLoaded("baubles"); - craftTweaker = Loader.isModLoaded(CRAFT_TWEAKER); - mtLib = Loader.isModLoaded("mtlib"); + ModList mods = ModList.get(); + baubles = mods.isLoaded("baubles"); + craftTweaker = mods.isLoaded(CRAFT_TWEAKER); + mtLib = mods.isLoaded("mtlib"); - if (baubles) - MinecraftForge.EVENT_BUS.register(new BaublesCompat()); + /*if (baubles) + MinecraftForge.EVENT_BUS.register(new BaublesCompat());*/ PatchouliCompat.preInit(); } diff --git a/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/AltarTweaker.java b/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/AltarTweaker.java index 0d25de1e..8ea99358 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/AltarTweaker.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/AltarTweaker.java @@ -1,28 +1,23 @@ +/* TODO crafttweaker or whatever package de.ellpeck.naturesaura.compat.crafttweaker; -import com.blamejared.mtlib.helpers.InputHelper; -import com.blamejared.mtlib.helpers.LogHelper; -import com.blamejared.mtlib.utils.BaseMapAddition; -import com.blamejared.mtlib.utils.BaseMapRemoval; -import crafttweaker.annotations.ZenRegister; -import crafttweaker.api.item.IIngredient; -import crafttweaker.api.item.IItemStack; -import crafttweaker.api.minecraft.CraftTweakerMC; +import com.blamejared.crafttweaker.api.annotations.ZenRegister; +import com.blamejared.crafttweaker.api.item.IIngredient; +import com.blamejared.crafttweaker.api.item.IItemStack; +import com.blamejared.crafttweaker.api.minecraft.CraftTweakerMC; import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.recipes.AltarRecipe; import de.ellpeck.naturesaura.compat.Compat; import net.minecraft.util.ResourceLocation; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; import java.util.Collections; import java.util.HashMap; import java.util.Map; @ZenRegister -@ZenClass("mods." + NaturesAura.MOD_ID + ".Altar") +@Zen("mods." + NaturesAura.MOD_ID + ".Altar") public final class AltarTweaker { @ZenMethod @@ -72,3 +67,4 @@ public final class AltarTweaker { } } } +*/ diff --git a/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/AnimalSpawnerTweaker.java b/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/AnimalSpawnerTweaker.java index 31c3cf1c..c66dcf0a 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/AnimalSpawnerTweaker.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/AnimalSpawnerTweaker.java @@ -1,3 +1,4 @@ +/* TODO crafttweaker package de.ellpeck.naturesaura.compat.crafttweaker; import com.blamejared.mtlib.utils.BaseMapAddition; @@ -64,3 +65,4 @@ public final class AnimalSpawnerTweaker { } } } +*/ diff --git a/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/CraftTweakerCompat.java b/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/CraftTweakerCompat.java index 9f13c253..8c3df484 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/CraftTweakerCompat.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/CraftTweakerCompat.java @@ -1,7 +1,7 @@ package de.ellpeck.naturesaura.compat.crafttweaker; -import crafttweaker.CraftTweakerAPI; -import crafttweaker.IAction; +import com.blamejared.crafttweaker.api.CraftTweakerAPI; +import com.blamejared.crafttweaker.api.actions.IAction; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/OfferingTweaker.java b/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/OfferingTweaker.java index a835e7f4..afae3d09 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/OfferingTweaker.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/OfferingTweaker.java @@ -1,3 +1,4 @@ +/* TODO crafttweaker package de.ellpeck.naturesaura.compat.crafttweaker; import com.blamejared.mtlib.helpers.InputHelper; @@ -72,3 +73,4 @@ public final class OfferingTweaker { } } } +*/ diff --git a/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/TreeRitualTweaker.java b/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/TreeRitualTweaker.java index 83198033..62a650f0 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/TreeRitualTweaker.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/crafttweaker/TreeRitualTweaker.java @@ -1,3 +1,4 @@ +/* package de.ellpeck.naturesaura.compat.crafttweaker; import com.blamejared.mtlib.helpers.InputHelper; @@ -75,3 +76,4 @@ public final class TreeRitualTweaker { } } } +*/ diff --git a/src/main/java/de/ellpeck/naturesaura/compat/jei/altar/AltarCategory.java b/src/main/java/de/ellpeck/naturesaura/compat/jei/AltarCategory.java similarity index 65% rename from src/main/java/de/ellpeck/naturesaura/compat/jei/altar/AltarCategory.java rename to src/main/java/de/ellpeck/naturesaura/compat/jei/AltarCategory.java index 2d039cd6..24d6f91b 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/jei/altar/AltarCategory.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/jei/AltarCategory.java @@ -1,15 +1,14 @@ -package de.ellpeck.naturesaura.compat.jei.altar; +package de.ellpeck.naturesaura.compat.jei; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.recipes.AltarRecipe; import de.ellpeck.naturesaura.blocks.ModBlocks; -import de.ellpeck.naturesaura.compat.jei.JEINaturesAuraPlugin; -import mezz.jei.api.IGuiHelper; -import mezz.jei.api.gui.IDrawable; -import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.recipe.IRecipeCategory; +import mezz.jei.api.recipe.category.IRecipeCategory; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; @@ -18,7 +17,7 @@ import net.minecraft.util.ResourceLocation; import java.util.Arrays; import java.util.Collections; -public class AltarCategory implements IRecipeCategory { +public class AltarCategory implements IRecipeCategory { private final IDrawable background; private final ItemStack altar = new ItemStack(ModBlocks.NATURE_ALTAR); @@ -28,29 +27,38 @@ public class AltarCategory implements IRecipeCategory { } @Override - public String getUid() { + public ResourceLocation getUid() { return JEINaturesAuraPlugin.ALTAR; } + @Override + public Class getRecipeClass() { + return AltarRecipe.class; + } + @Override public String getTitle() { return I18n.format("container." + JEINaturesAuraPlugin.ALTAR + ".name"); } - @Override - public String getModName() { - return NaturesAura.MOD_NAME; - } - @Override public IDrawable getBackground() { return this.background; } @Override - public void setRecipe(IRecipeLayout recipeLayout, AltarWrapper recipeWrapper, IIngredients ingredients) { - IGuiItemStackGroup group = recipeLayout.getItemStacks(); - AltarRecipe recipe = recipeWrapper.recipe; + public IDrawable getIcon() { + return null; + } + + @Override + public void setIngredients(AltarRecipe altarRecipe, IIngredients iIngredients) { + + } + + @Override + public void setRecipe(IRecipeLayout iRecipeLayout, AltarRecipe recipe, IIngredients iIngredients) { + IGuiItemStackGroup group = iRecipeLayout.getItemStacks(); group.init(0, true, 0, 18); group.set(0, Arrays.asList(recipe.input.getMatchingStacks())); group.init(1, false, 56, 18); diff --git a/src/main/java/de/ellpeck/naturesaura/compat/jei/animal/AnimalSpawnerCategory.java b/src/main/java/de/ellpeck/naturesaura/compat/jei/AnimalSpawnerCategory.java similarity index 59% rename from src/main/java/de/ellpeck/naturesaura/compat/jei/animal/AnimalSpawnerCategory.java rename to src/main/java/de/ellpeck/naturesaura/compat/jei/AnimalSpawnerCategory.java index 3ac15cc3..e26ef42e 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/jei/animal/AnimalSpawnerCategory.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/jei/AnimalSpawnerCategory.java @@ -1,20 +1,19 @@ -package de.ellpeck.naturesaura.compat.jei.animal; +package de.ellpeck.naturesaura.compat.jei; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.recipes.AnimalSpawnerRecipe; -import de.ellpeck.naturesaura.compat.jei.JEINaturesAuraPlugin; -import mezz.jei.api.IGuiHelper; -import mezz.jei.api.gui.IDrawable; -import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.recipe.IRecipeCategory; +import mezz.jei.api.recipe.category.IRecipeCategory; import net.minecraft.client.resources.I18n; import net.minecraft.util.ResourceLocation; import java.util.Arrays; -public class AnimalSpawnerCategory implements IRecipeCategory { +public class AnimalSpawnerCategory implements IRecipeCategory { private final IDrawable background; @@ -23,29 +22,38 @@ public class AnimalSpawnerCategory implements IRecipeCategory getRecipeClass() { + return AnimalSpawnerRecipe.class; + } + @Override public String getTitle() { return I18n.format("container." + JEINaturesAuraPlugin.SPAWNER + ".name"); } - @Override - public String getModName() { - return NaturesAura.MOD_NAME; - } - @Override public IDrawable getBackground() { return this.background; } @Override - public void setRecipe(IRecipeLayout recipeLayout, AnimalSpawnerWrapper recipeWrapper, IIngredients ingredients) { - IGuiItemStackGroup group = recipeLayout.getItemStacks(); - AnimalSpawnerRecipe recipe = recipeWrapper.recipe; + public IDrawable getIcon() { + return null; + } + + @Override + public void setIngredients(AnimalSpawnerRecipe animalSpawnerRecipe, IIngredients iIngredients) { + + } + + @Override + public void setRecipe(IRecipeLayout iRecipeLayout, AnimalSpawnerRecipe recipe, IIngredients iIngredients) { + IGuiItemStackGroup group = iRecipeLayout.getItemStacks(); for (int i = 0; i < recipe.ingredients.length; i++) { group.init(i, true, i * 18, 68); group.set(i, Arrays.asList(recipe.ingredients[i].getMatchingStacks())); diff --git a/src/main/java/de/ellpeck/naturesaura/compat/jei/JEINaturesAuraPlugin.java b/src/main/java/de/ellpeck/naturesaura/compat/jei/JEINaturesAuraPlugin.java index 3f5c9dfa..ecc31dd3 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/jei/JEINaturesAuraPlugin.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/jei/JEINaturesAuraPlugin.java @@ -2,33 +2,28 @@ package de.ellpeck.naturesaura.compat.jei; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.NaturesAuraAPI; -import de.ellpeck.naturesaura.api.recipes.AltarRecipe; -import de.ellpeck.naturesaura.api.recipes.AnimalSpawnerRecipe; -import de.ellpeck.naturesaura.api.recipes.OfferingRecipe; -import de.ellpeck.naturesaura.api.recipes.TreeRitualRecipe; import de.ellpeck.naturesaura.blocks.ModBlocks; -import de.ellpeck.naturesaura.compat.jei.altar.AltarCategory; -import de.ellpeck.naturesaura.compat.jei.altar.AltarWrapper; -import de.ellpeck.naturesaura.compat.jei.animal.AnimalSpawnerCategory; -import de.ellpeck.naturesaura.compat.jei.animal.AnimalSpawnerWrapper; -import de.ellpeck.naturesaura.compat.jei.offering.OfferingCategory; -import de.ellpeck.naturesaura.compat.jei.offering.OfferingWrapper; -import de.ellpeck.naturesaura.compat.jei.treeritual.TreeRitualCategory; -import de.ellpeck.naturesaura.compat.jei.treeritual.TreeRitualWrapper; -import mezz.jei.api.IGuiHelper; import mezz.jei.api.IModPlugin; -import mezz.jei.api.IModRegistry; -import mezz.jei.api.JEIPlugin; -import mezz.jei.api.recipe.IRecipeCategoryRegistration; +import mezz.jei.api.JeiPlugin; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.registration.IRecipeCatalystRegistration; +import mezz.jei.api.registration.IRecipeCategoryRegistration; +import mezz.jei.api.registration.IRecipeRegistration; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; -@JEIPlugin +@JeiPlugin public class JEINaturesAuraPlugin implements IModPlugin { - public static final String TREE_RITUAL = NaturesAura.MOD_ID + ".tree_ritual"; - public static final String ALTAR = NaturesAura.MOD_ID + ".altar"; - public static final String OFFERING = NaturesAura.MOD_ID + ".offering"; - public static final String SPAWNER = NaturesAura.MOD_ID + ".animal_spawner"; + public static final ResourceLocation TREE_RITUAL = new ResourceLocation(NaturesAura.MOD_ID, "tree_ritual"); + public static final ResourceLocation ALTAR = new ResourceLocation(NaturesAura.MOD_ID, "altar"); + public static final ResourceLocation OFFERING = new ResourceLocation(NaturesAura.MOD_ID, "offering"); + public static final ResourceLocation SPAWNER = new ResourceLocation(NaturesAura.MOD_ID, "animal_spawner"); + + @Override + public ResourceLocation getPluginUid() { + return new ResourceLocation(NaturesAura.MOD_ID, "jei_plugin"); + } @Override public void registerCategories(IRecipeCategoryRegistration registry) { @@ -42,22 +37,20 @@ public class JEINaturesAuraPlugin implements IModPlugin { } @Override - public void register(IModRegistry registry) { - registry.handleRecipes(TreeRitualRecipe.class, TreeRitualWrapper::new, TREE_RITUAL); - registry.handleRecipes(AltarRecipe.class, AltarWrapper::new, ALTAR); - registry.handleRecipes(OfferingRecipe.class, OfferingWrapper::new, OFFERING); - registry.handleRecipes(AnimalSpawnerRecipe.class, AnimalSpawnerWrapper::new, SPAWNER); + public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { + registration.addRecipeCatalyst(new ItemStack(ModBlocks.GOLD_POWDER), TREE_RITUAL); + registration.addRecipeCatalyst(new ItemStack(ModBlocks.WOOD_STAND), TREE_RITUAL); + registration.addRecipeCatalyst(new ItemStack(ModBlocks.NATURE_ALTAR), ALTAR); + registration.addRecipeCatalyst(new ItemStack(ModBlocks.CONVERSION_CATALYST), ALTAR); + registration.addRecipeCatalyst(new ItemStack(ModBlocks.OFFERING_TABLE), OFFERING); + registration.addRecipeCatalyst(new ItemStack(ModBlocks.ANIMAL_SPAWNER), SPAWNER); + } - registry.addRecipes(NaturesAuraAPI.TREE_RITUAL_RECIPES.values(), TREE_RITUAL); - registry.addRecipes(NaturesAuraAPI.ALTAR_RECIPES.values(), ALTAR); - registry.addRecipes(NaturesAuraAPI.OFFERING_RECIPES.values(), OFFERING); - registry.addRecipes(NaturesAuraAPI.ANIMAL_SPAWNER_RECIPES.values(), SPAWNER); - - registry.addRecipeCatalyst(new ItemStack(ModBlocks.GOLD_POWDER), TREE_RITUAL); - registry.addRecipeCatalyst(new ItemStack(ModBlocks.WOOD_STAND), TREE_RITUAL); - registry.addRecipeCatalyst(new ItemStack(ModBlocks.NATURE_ALTAR), ALTAR); - registry.addRecipeCatalyst(new ItemStack(ModBlocks.CONVERSION_CATALYST), ALTAR); - registry.addRecipeCatalyst(new ItemStack(ModBlocks.OFFERING_TABLE), OFFERING); - registry.addRecipeCatalyst(new ItemStack(ModBlocks.ANIMAL_SPAWNER), SPAWNER); + @Override + public void registerRecipes(IRecipeRegistration registration) { + registration.addRecipes(NaturesAuraAPI.TREE_RITUAL_RECIPES.values(), TREE_RITUAL); + registration.addRecipes(NaturesAuraAPI.ALTAR_RECIPES.values(), ALTAR); + registration.addRecipes(NaturesAuraAPI.OFFERING_RECIPES.values(), OFFERING); + registration.addRecipes(NaturesAuraAPI.ANIMAL_SPAWNER_RECIPES.values(), SPAWNER); } } diff --git a/src/main/java/de/ellpeck/naturesaura/compat/jei/offering/OfferingCategory.java b/src/main/java/de/ellpeck/naturesaura/compat/jei/OfferingCategory.java similarity index 66% rename from src/main/java/de/ellpeck/naturesaura/compat/jei/offering/OfferingCategory.java rename to src/main/java/de/ellpeck/naturesaura/compat/jei/OfferingCategory.java index 430a1acc..c7611927 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/jei/offering/OfferingCategory.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/jei/OfferingCategory.java @@ -1,20 +1,20 @@ -package de.ellpeck.naturesaura.compat.jei.offering; +package de.ellpeck.naturesaura.compat.jei; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.recipes.OfferingRecipe; import de.ellpeck.naturesaura.compat.jei.JEINaturesAuraPlugin; -import mezz.jei.api.IGuiHelper; -import mezz.jei.api.gui.IDrawable; -import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.recipe.IRecipeCategory; +import mezz.jei.api.recipe.category.IRecipeCategory; import net.minecraft.client.resources.I18n; import net.minecraft.util.ResourceLocation; import java.util.Arrays; -public class OfferingCategory implements IRecipeCategory { +public class OfferingCategory implements IRecipeCategory { private final IDrawable background; @@ -23,29 +23,38 @@ public class OfferingCategory implements IRecipeCategory { } @Override - public String getUid() { + public ResourceLocation getUid() { return JEINaturesAuraPlugin.OFFERING; } + @Override + public Class getRecipeClass() { + return OfferingRecipe.class; + } + @Override public String getTitle() { return I18n.format("container." + JEINaturesAuraPlugin.OFFERING + ".name"); } - @Override - public String getModName() { - return NaturesAura.MOD_NAME; - } - @Override public IDrawable getBackground() { return this.background; } @Override - public void setRecipe(IRecipeLayout recipeLayout, OfferingWrapper recipeWrapper, IIngredients ingredients) { + public IDrawable getIcon() { + return null; + } + + @Override + public void setIngredients(OfferingRecipe offeringRecipe, IIngredients iIngredients) { + + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, OfferingRecipe recipe, IIngredients ingredients) { IGuiItemStackGroup group = recipeLayout.getItemStacks(); - OfferingRecipe recipe = recipeWrapper.recipe; group.init(0, true, 0, 14); group.set(0, Arrays.asList(recipe.input.getMatchingStacks())); group.init(1, false, 65, 14); diff --git a/src/main/java/de/ellpeck/naturesaura/compat/jei/treeritual/TreeRitualCategory.java b/src/main/java/de/ellpeck/naturesaura/compat/jei/TreeRitualCategory.java similarity index 54% rename from src/main/java/de/ellpeck/naturesaura/compat/jei/treeritual/TreeRitualCategory.java rename to src/main/java/de/ellpeck/naturesaura/compat/jei/TreeRitualCategory.java index cefee019..ad82aa1b 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/jei/treeritual/TreeRitualCategory.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/jei/TreeRitualCategory.java @@ -1,20 +1,20 @@ -package de.ellpeck.naturesaura.compat.jei.treeritual; +package de.ellpeck.naturesaura.compat.jei; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.recipes.TreeRitualRecipe; import de.ellpeck.naturesaura.compat.jei.JEINaturesAuraPlugin; -import mezz.jei.api.IGuiHelper; -import mezz.jei.api.gui.IDrawable; -import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.recipe.IRecipeCategory; +import mezz.jei.api.recipe.category.IRecipeCategory; import net.minecraft.client.resources.I18n; import net.minecraft.util.ResourceLocation; import java.util.Arrays; -public class TreeRitualCategory implements IRecipeCategory { +public class TreeRitualCategory implements IRecipeCategory { private final IDrawable background; @@ -23,40 +23,49 @@ public class TreeRitualCategory implements IRecipeCategory { } @Override - public String getUid() { + public ResourceLocation getUid() { return JEINaturesAuraPlugin.TREE_RITUAL; } + @Override + public Class getRecipeClass() { + return TreeRitualRecipe.class; + } + @Override public String getTitle() { return I18n.format("container." + JEINaturesAuraPlugin.TREE_RITUAL + ".name"); } - @Override - public String getModName() { - return NaturesAura.MOD_NAME; - } - @Override public IDrawable getBackground() { return this.background; } @Override - public void setRecipe(IRecipeLayout recipeLayout, TreeRitualWrapper recipeWrapper, IIngredients ingredients) { - IGuiItemStackGroup group = recipeLayout.getItemStacks(); - TreeRitualRecipe recipe = recipeWrapper.recipe; + public IDrawable getIcon() { + return null; + } + + @Override + public void setIngredients(TreeRitualRecipe treeRitualRecipe, IIngredients iIngredients) { + + } + + @Override + public void setRecipe(IRecipeLayout iRecipeLayout, TreeRitualRecipe treeRitualRecipe, IIngredients iIngredients) { + IGuiItemStackGroup group = iRecipeLayout.getItemStacks(); group.init(0, true, 34, 34); - group.set(0, Arrays.asList(recipe.saplingType.getMatchingStacks())); + group.set(0, Arrays.asList(treeRitualRecipe.saplingType.getMatchingStacks())); group.init(1, true, 124, 34); - group.set(1, recipe.result); + group.set(1, treeRitualRecipe.result); int[][] positions = new int[][]{{35, 1}, {35, 69}, {1, 35}, {69, 35}, {12, 12}, {58, 58}, {58, 12}, {12, 58}}; - for (int i = 0; i < recipe.ingredients.length; i++) { + for (int i = 0; i < treeRitualRecipe.ingredients.length; i++) { group.init(i + 2, true, positions[i][0] - 1, positions[i][1] - 1); - group.set(i + 2, Arrays.asList(recipe.ingredients[i].getMatchingStacks())); + group.set(i + 2, Arrays.asList(treeRitualRecipe.ingredients[i].getMatchingStacks())); } } } diff --git a/src/main/java/de/ellpeck/naturesaura/compat/jei/altar/AltarWrapper.java b/src/main/java/de/ellpeck/naturesaura/compat/jei/altar/AltarWrapper.java deleted file mode 100644 index 7d5c81e5..00000000 --- a/src/main/java/de/ellpeck/naturesaura/compat/jei/altar/AltarWrapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.ellpeck.naturesaura.compat.jei.altar; - -import com.google.common.collect.ImmutableList; -import de.ellpeck.naturesaura.api.recipes.AltarRecipe; -import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.ingredients.VanillaTypes; -import mezz.jei.api.recipe.IRecipeWrapper; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; - -public class AltarWrapper implements IRecipeWrapper { - - public final AltarRecipe recipe; - - public AltarWrapper(AltarRecipe recipe) { - this.recipe = recipe; - } - - @Override - public void getIngredients(IIngredients ingredients) { - ImmutableList.Builder builder = ImmutableList.builder(); - builder.add(this.recipe.input.getMatchingStacks()); - if (this.recipe.catalyst != Ingredient.EMPTY) - builder.add(this.recipe.catalyst.getMatchingStacks()); - ingredients.setInputs(VanillaTypes.ITEM, builder.build()); - ingredients.setOutput(VanillaTypes.ITEM, this.recipe.output); - } -} diff --git a/src/main/java/de/ellpeck/naturesaura/compat/jei/animal/AnimalSpawnerWrapper.java b/src/main/java/de/ellpeck/naturesaura/compat/jei/animal/AnimalSpawnerWrapper.java deleted file mode 100644 index 51fb25e7..00000000 --- a/src/main/java/de/ellpeck/naturesaura/compat/jei/animal/AnimalSpawnerWrapper.java +++ /dev/null @@ -1,71 +0,0 @@ -package de.ellpeck.naturesaura.compat.jei.animal; - -import com.google.common.collect.ImmutableList; -import de.ellpeck.naturesaura.api.recipes.AnimalSpawnerRecipe; -import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.ingredients.VanillaTypes; -import mezz.jei.api.recipe.IRecipeWrapper; -import net.minecraft.client.Minecraft; -import com.mojang.blaze3d.platform.GlStateManager; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.entity.Entity; -import net.minecraft.item.Items; -import net.minecraft.item.ItemMonsterPlacer; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; - -public class AnimalSpawnerWrapper implements IRecipeWrapper { - - public final AnimalSpawnerRecipe recipe; - private Entity entity; - - public AnimalSpawnerWrapper(AnimalSpawnerRecipe recipe) { - this.recipe = recipe; - } - - @Override - public void getIngredients(IIngredients ingredients) { - ImmutableList.Builder builder = ImmutableList.builder(); - for (Ingredient ing : this.recipe.ingredients) - builder.add(ing.getMatchingStacks()); - ingredients.setInputs(VanillaTypes.ITEM, builder.build()); - - ItemStack egg = new ItemStack(Items.SPAWN_EGG); - ItemMonsterPlacer.applyEntityIdToItemStack(egg, this.recipe.entity); - ingredients.setOutput(VanillaTypes.ITEM, egg); - } - - @Override - public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { - if (this.entity == null) - this.entity = this.recipe.makeEntity(minecraft.world, 0, 0, 0); - - float size = Math.max(1F, Math.max(this.entity.width, this.entity.height)); - float rot = (minecraft.world.getTotalWorldTime() + minecraft.getRenderPartialTicks()) % 360F; - renderEntity(this.entity, 35, 28, rot, 100F / size * 0.4F, size * 0.5F); - - String name = this.entity.getDisplayName().getFormattedText(); - minecraft.fontRenderer.drawString(name, 36 - minecraft.fontRenderer.getStringWidth(name) / 2F, 55, 0xFFFFFF, true); - } - - private static void renderEntity(Entity entity, float x, float y, float rotation, float renderScale, float offset) { - GlStateManager.enableColorMaterial(); - GlStateManager.pushMatrix(); - GlStateManager.color(1F, 1F, 1F); - GlStateManager.translate(x, y, 50.0F); - GlStateManager.scale(-renderScale, renderScale, renderScale); - GlStateManager.translate(0F, offset, 0F); - GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F); - GlStateManager.rotate(rotation, 0.0F, 1.0F, 0.0F); - RenderHelper.enableStandardItemLighting(); - Minecraft.getMinecraft().getRenderManager().playerViewY = 180.0F; - Minecraft.getMinecraft().getRenderManager().renderEntity(entity, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F, false); - GlStateManager.popMatrix(); - RenderHelper.disableStandardItemLighting(); - GlStateManager.disableRescaleNormal(); - GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit); - GlStateManager.disableTexture2D(); - GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit); - } -} diff --git a/src/main/java/de/ellpeck/naturesaura/compat/jei/offering/OfferingWrapper.java b/src/main/java/de/ellpeck/naturesaura/compat/jei/offering/OfferingWrapper.java deleted file mode 100644 index 9b4d30c6..00000000 --- a/src/main/java/de/ellpeck/naturesaura/compat/jei/offering/OfferingWrapper.java +++ /dev/null @@ -1,25 +0,0 @@ -package de.ellpeck.naturesaura.compat.jei.offering; - -import com.google.common.collect.ImmutableList; -import de.ellpeck.naturesaura.api.recipes.OfferingRecipe; -import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.ingredients.VanillaTypes; -import mezz.jei.api.recipe.IRecipeWrapper; -import net.minecraft.item.ItemStack; - -public class OfferingWrapper implements IRecipeWrapper { - - public final OfferingRecipe recipe; - - public OfferingWrapper(OfferingRecipe recipe) { - this.recipe = recipe; - } - - @Override - public void getIngredients(IIngredients ingredients) { - ingredients.setInputs(VanillaTypes.ITEM, ImmutableList.builder() - .add(this.recipe.input.getMatchingStacks()) - .add(this.recipe.startItem.getMatchingStacks()).build()); - ingredients.setOutput(VanillaTypes.ITEM, this.recipe.output); - } -} diff --git a/src/main/java/de/ellpeck/naturesaura/compat/jei/treeritual/TreeRitualWrapper.java b/src/main/java/de/ellpeck/naturesaura/compat/jei/treeritual/TreeRitualWrapper.java deleted file mode 100644 index e834e3b1..00000000 --- a/src/main/java/de/ellpeck/naturesaura/compat/jei/treeritual/TreeRitualWrapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.ellpeck.naturesaura.compat.jei.treeritual; - -import com.google.common.collect.ImmutableList; -import de.ellpeck.naturesaura.api.recipes.TreeRitualRecipe; -import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.ingredients.VanillaTypes; -import mezz.jei.api.recipe.IRecipeWrapper; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; - -public class TreeRitualWrapper implements IRecipeWrapper { - - public final TreeRitualRecipe recipe; - - public TreeRitualWrapper(TreeRitualRecipe recipe) { - this.recipe = recipe; - } - - @Override - public void getIngredients(IIngredients ingredients) { - ImmutableList.Builder builder = ImmutableList.builder(); - for (Ingredient ing : this.recipe.ingredients) - builder.add(ing.getMatchingStacks()); - builder.add(this.recipe.saplingType.getMatchingStacks()); - ingredients.setInputs(VanillaTypes.ITEM, builder.build()); - ingredients.setOutput(VanillaTypes.ITEM, this.recipe.result); - } -} diff --git a/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorAltar.java b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorAltar.java index 03ff3c1f..0e29877a 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorAltar.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorAltar.java @@ -31,7 +31,7 @@ public class ProcessorAltar implements IComponentProcessor { else return null; case "name": - return this.recipe.output.getDisplayName(); + return this.recipe.output.getDisplayName().getFormattedText(); default: return null; } diff --git a/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorAnimalSpawner.java b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorAnimalSpawner.java index 10188f25..d1a188a2 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorAnimalSpawner.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorAnimalSpawner.java @@ -3,11 +3,10 @@ package de.ellpeck.naturesaura.compat.patchouli; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.recipes.AnimalSpawnerRecipe; import net.minecraft.client.resources.I18n; -import net.minecraft.item.Items; -import net.minecraft.item.ItemMonsterPlacer; +import net.minecraft.entity.EntityType; import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.registry.EntityEntry; -import net.minecraftforge.fml.common.registry.ForgeRegistries; +import net.minecraft.item.SpawnEggItem; +import net.minecraftforge.registries.ForgeRegistries; import vazkii.patchouli.api.IComponentProcessor; import vazkii.patchouli.api.IVariableProvider; import vazkii.patchouli.api.PatchouliAPI; @@ -32,15 +31,14 @@ public class ProcessorAnimalSpawner implements IComponentProcessor { else return null; } else { + EntityType entry = ForgeRegistries.ENTITIES.getValue(this.recipe.entity); switch (key) { case "name": - EntityEntry entry = ForgeRegistries.ENTITIES.getValue(this.recipe.entity); return I18n.format("entity." + entry.getName() + ".name"); case "entity": return this.recipe.entity.toString(); case "egg": - ItemStack egg = new ItemStack(Items.SPAWN_EGG); - ItemMonsterPlacer.applyEntityIdToItemStack(egg, this.recipe.entity); + ItemStack egg = new ItemStack(SpawnEggItem.getEgg(entry)); return PatchouliAPI.instance.serializeItemStack(egg); default: return null; diff --git a/src/main/java/de/ellpeck/naturesaura/entities/render/RenderMoverMinecart.java b/src/main/java/de/ellpeck/naturesaura/entities/render/RenderMoverMinecart.java index 7c2f2df0..cdc18ff8 100644 --- a/src/main/java/de/ellpeck/naturesaura/entities/render/RenderMoverMinecart.java +++ b/src/main/java/de/ellpeck/naturesaura/entities/render/RenderMoverMinecart.java @@ -1,11 +1,12 @@ +/* TODO minecart model package de.ellpeck.naturesaura.entities.render; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.entities.EntityMoverMinecart; import net.minecraft.block.BlockState; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; -import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.client.renderer.entity.MinecartRenderer; import net.minecraft.util.ResourceLocation; @@ -44,3 +45,4 @@ public class RenderMoverMinecart extends MinecartRenderer { } } } +*/ diff --git a/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java b/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java index ba9d45ed..52ff3d72 100644 --- a/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java +++ b/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java @@ -1,6 +1,6 @@ package de.ellpeck.naturesaura.events; -import baubles.api.BaublesApi; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.ModConfig; import de.ellpeck.naturesaura.NaturesAura; @@ -14,42 +14,42 @@ import de.ellpeck.naturesaura.blocks.tiles.TileEntityNatureAltar; import de.ellpeck.naturesaura.blocks.tiles.TileEntityRFConverter; import de.ellpeck.naturesaura.compat.Compat; import de.ellpeck.naturesaura.items.AuraCache; -import de.ellpeck.naturesaura.items.RangeVisualizer; import de.ellpeck.naturesaura.items.ModItems; +import de.ellpeck.naturesaura.items.RangeVisualizer; import de.ellpeck.naturesaura.particles.ParticleHandler; import net.minecraft.block.Block; -import net.minecraft.block.IGrowable; import net.minecraft.block.BlockState; +import net.minecraft.block.IGrowable; +import net.minecraft.block.LeavesBlock; +import net.minecraft.client.MainWindow; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.AbstractGui; import net.minecraft.client.gui.screen.ChatScreen; -import net.minecraft.client.gui.ScaledResolution; -import com.mojang.blaze3d.platform.GlStateManager; -import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.resources.I18n; import net.minecraft.entity.Entity; -import net.minecraft.item.Items; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; 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.text.TextFormatting; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeColors; +import net.minecraft.world.dimension.DimensionType; +import net.minecraft.world.gen.Heightmap; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.common.IPlantable; import net.minecraftforge.energy.EnergyStorage; +import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent; -import net.minecraftforge.fml.common.gameevent.TickEvent.Phase; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.items.IItemHandler; import org.apache.commons.lang3.mutable.MutableInt; import org.lwjgl.opengl.GL11; @@ -71,8 +71,7 @@ public class ClientEvents { @SubscribeEvent public void onDebugRender(RenderGameOverlayEvent.Text event) { - Minecraft mc = Minecraft.getMinecraft(); - mc.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":onDebugRender"); + Minecraft mc = Minecraft.getInstance(); if (mc.gameSettings.showDebugInfo && ModConfig.client.debugText) { String prefix = TextFormatting.GREEN + "[" + NaturesAura.MOD_NAME + "]" + TextFormatting.RESET + " "; List left = event.getLeft(); @@ -82,7 +81,7 @@ public class ClientEvents { int noDepth = ParticleHandler.getParticleAmount(false); left.add(prefix + "P: " + (depth + noDepth) + " (D: " + depth + " nD: " + noDepth + ")"); - if (mc.player.capabilities.isCreativeMode) { + if (mc.player.isCreative()) { MutableInt amount = new MutableInt(IAuraChunk.DEFAULT_AURA); MutableInt spots = new MutableInt(); IAuraChunk.getSpotsInArea(mc.world, mc.player.getPosition(), 35, (blockPos, drainSpot) -> { @@ -94,39 +93,35 @@ public class ClientEvents { left.add(prefix + "AT: " + IAuraType.forWorld(mc.world).getName()); } } - mc.profiler.endSection(); } @SubscribeEvent public void onRenderLast(RenderWorldLastEvent event) { - Minecraft mc = Minecraft.getMinecraft(); - mc.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":renderParticles"); + Minecraft mc = Minecraft.getInstance(); ParticleHandler.renderParticles(event.getPartialTicks()); - mc.profiler.endSection(); } @SubscribeEvent - public void onClientTick(ClientTickEvent event) { - if (event.phase == Phase.END) { + public void onClientTick(TickEvent.ClientTickEvent event) { + if (event.phase == TickEvent.Phase.END) { heldCache = ItemStack.EMPTY; heldEye = ItemStack.EMPTY; heldOcular = ItemStack.EMPTY; - Minecraft mc = Minecraft.getMinecraft(); + Minecraft mc = Minecraft.getInstance(); if (mc.world == null) { ParticleHandler.clearParticles(); RangeVisualizer.clear(); } else if (!mc.isGamePaused()) { - if (mc.world.getTotalWorldTime() % 20 == 0) { - mc.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":spawnExcessParticles"); + if (mc.world.getGameTime() % 20 == 0) { int amount = MathHelper.floor(190 * ModConfig.client.excessParticleAmount); for (int i = 0; i < amount; i++) { int x = MathHelper.floor(mc.player.posX) + mc.world.rand.nextInt(64) - 32; int z = MathHelper.floor(mc.player.posZ) + mc.world.rand.nextInt(64) - 32; - BlockPos pos = new BlockPos(x, mc.world.getHeight(x, z) - 1, z); + BlockPos pos = new BlockPos(x, mc.world.getHeight(Heightmap.Type.WORLD_SURFACE, x, z) - 1, z); BlockState state = mc.world.getBlockState(pos); Block block = state.getBlock(); - if (block instanceof IGrowable || block instanceof IPlantable || block.isLeaves(state, mc.world, pos)) { + if (block instanceof IGrowable || block instanceof IPlantable || block instanceof LeavesBlock) { int excess = IAuraChunk.triangulateAuraInArea(mc.world, pos, 45) - IAuraChunk.DEFAULT_AURA; if (excess > 0) { int chance = Math.max(10, 50 - excess / 25000); @@ -138,21 +133,20 @@ public class ClientEvents { mc.world.rand.nextGaussian() * 0.01F, mc.world.rand.nextFloat() * 0.025F, mc.world.rand.nextGaussian() * 0.01F, - BiomeColors.getFoliageColorAtPos(mc.world, pos), + BiomeColors.getFoliageColor(mc.world, pos), Math.min(2F, 1F + mc.world.rand.nextFloat() * (excess / 30000F)), Math.min(300, 100 + mc.world.rand.nextInt(excess / 3000 + 1)), 0F, false, true); } } } - mc.profiler.endSection(); } - if (Helper.isHoldingItem(mc.player, ModItems.RANGE_VISUALIZER) && mc.world.getTotalWorldTime() % 5 == 0) { + if (Helper.isHoldingItem(mc.player, ModItems.RANGE_VISUALIZER) && mc.world.getGameTime() % 5 == 0) { NaturesAuraAPI.IInternalHooks inst = NaturesAuraAPI.instance(); inst.setParticleSpawnRange(512); inst.setParticleDepth(false); - for (BlockPos pos : RangeVisualizer.VISUALIZED_RAILS.get(mc.world.provider.getDimension())) { + for (BlockPos pos : RangeVisualizer.VISUALIZED_RAILS.get(mc.world.getDimension().getType())) { NaturesAuraAPI.instance().spawnMagicParticle( pos.getX() + mc.world.rand.nextFloat(), pos.getY() + mc.world.rand.nextFloat(), @@ -163,12 +157,11 @@ public class ClientEvents { inst.setParticleSpawnRange(32); } - mc.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":updateParticles"); ParticleHandler.updateParticles(); - mc.profiler.endSection(); if (Compat.baubles) { - IItemHandler baubles = BaublesApi.getBaublesHandler(mc.player); + // TODO baubles + /*IItemHandler baubles = BaublesApi.getBaublesHandler(mc.player); for (int i = 0; i < baubles.getSlots(); i++) { ItemStack slot = baubles.getStackInSlot(i); if (!slot.isEmpty()) { @@ -179,7 +172,7 @@ public class ClientEvents { else if (slot.getItem() == ModItems.EYE_IMPROVED) heldOcular = slot; } - } + }*/ } for (int i = 0; i < mc.player.inventory.getSizeInventory(); i++) { @@ -194,7 +187,7 @@ public class ClientEvents { } } - if (!heldOcular.isEmpty() && mc.world.getTotalWorldTime() % 20 == 0) { + if (!heldOcular.isEmpty() && mc.world.getGameTime() % 20 == 0) { SHOWING_EFFECTS.clear(); Helper.getAuraChunksInArea(mc.world, mc.player.getPosition(), 100, chunk -> chunk.getActiveEffectIcons(mc.player, SHOWING_EFFECTS)); @@ -205,8 +198,7 @@ public class ClientEvents { @SubscribeEvent public void onWorldRender(RenderWorldLastEvent event) { - Minecraft mc = Minecraft.getMinecraft(); - mc.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":onWorldRender"); + Minecraft mc = Minecraft.getInstance(); GL11.glPushMatrix(); float partial = event.getPartialTicks(); GL11.glTranslated( @@ -214,7 +206,7 @@ public class ClientEvents { -mc.player.prevPosY - (mc.player.posY - mc.player.prevPosY) * partial, -mc.player.prevPosZ - (mc.player.posZ - mc.player.prevPosZ) * partial); - if (mc.gameSettings.showDebugInfo && mc.player.capabilities.isCreativeMode && ModConfig.client.debugWorld) { + if (mc.gameSettings.showDebugInfo && mc.player.isCreative() && ModConfig.client.debugWorld) { Map spots = new HashMap<>(); GL11.glPushMatrix(); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -225,7 +217,7 @@ public class ClientEvents { IAuraChunk.getSpotsInArea(mc.world, mc.player.getPosition(), 64, (pos, spot) -> { spots.put(pos, spot); - GlStateManager.color(spot > 0 ? 0F : 1F, spot > 0 ? 1F : 0F, 0F, 0.35F); + GlStateManager.color4f(spot > 0 ? 0F : 1F, spot > 0 ? 1F : 0F, 0F, 0.35F); Helper.renderWeirdBox(pos.getX(), pos.getY(), pos.getZ(), 1, 1, 1); }); GL11.glEnd(); @@ -233,13 +225,13 @@ public class ClientEvents { float scale = 0.03F; NumberFormat format = NumberFormat.getInstance(); - GlStateManager.scale(scale, scale, scale); + GlStateManager.scalef(scale, scale, scale); for (Map.Entry spot : spots.entrySet()) { BlockPos pos = spot.getKey(); GlStateManager.pushMatrix(); - GlStateManager.translate((pos.getX() + 0.1) / scale, (pos.getY() + 1) / scale, (pos.getZ() + 0.1) / scale); - GlStateManager.rotate(90F, 1F, 0F, 0F); - GlStateManager.scale(0.65F, 0.65F, 0.65F); + GlStateManager.translated((pos.getX() + 0.1) / scale, (pos.getY() + 1) / scale, (pos.getZ() + 0.1) / scale); + GlStateManager.rotatef(90F, 1F, 0F, 0F); + GlStateManager.scalef(0.65F, 0.65F, 0.65F); mc.fontRenderer.drawString(format.format(spot.getValue()), 0, 0, 0); GlStateManager.popMatrix(); } @@ -249,7 +241,7 @@ public class ClientEvents { } if (Helper.isHoldingItem(mc.player, ModItems.RANGE_VISUALIZER)) { - int dim = mc.world.provider.getDimension(); + DimensionType dim = mc.world.getDimension().getType(); GL11.glPushMatrix(); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); @@ -266,7 +258,7 @@ public class ClientEvents { this.renderVisualize((IVisualizable) block, mc.world, pos); } for (Entity entity : RangeVisualizer.VISUALIZED_ENTITIES.get(dim)) { - if (entity.isDead || !(entity instanceof IVisualizable)) + if (!entity.isAlive() || !(entity instanceof IVisualizable)) continue; this.renderVisualize((IVisualizable) entity, mc.world, entity.getPosition()); } @@ -277,7 +269,6 @@ public class ClientEvents { } GL11.glPopMatrix(); - mc.profiler.endSection(); } private void renderVisualize(IVisualizable visualize, World world, BlockPos pos) { @@ -286,19 +277,18 @@ public class ClientEvents { return; box = box.grow(0.05F); int color = visualize.getVisualizationColor(world, pos); - GlStateManager.color(((color >> 16) & 255) / 255F, ((color >> 8) & 255) / 255F, (color & 255) / 255F, 0.5F); + GlStateManager.color4f(((color >> 16) & 255) / 255F, ((color >> 8) & 255) / 255F, (color & 255) / 255F, 0.5F); Helper.renderWeirdBox(box.minX, box.minY, box.minZ, box.maxX - box.minX, box.maxY - box.minY, box.maxZ - box.minZ); } @SubscribeEvent public void onOverlayRender(RenderGameOverlayEvent.Post event) { - Minecraft mc = Minecraft.getMinecraft(); - mc.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":onOverlayRender"); + Minecraft mc = Minecraft.getInstance(); if (event.getType() == ElementType.ALL) { - ScaledResolution res = event.getResolution(); + MainWindow res = event.getWindow(); if (mc.player != null) { if (!heldCache.isEmpty()) { - IAuraContainer container = heldCache.getCapability(NaturesAuraAPI.capAuraContainer, null); + IAuraContainer container = heldCache.getCapability(NaturesAuraAPI.capAuraContainer, null).orElse(null); int width = MathHelper.ceil(container.getStoredAura() / (float) container.getMaxAura() * 80); int x = res.getScaledWidth() / 2 - 173 - (mc.player.getHeldItemOffhand().isEmpty() ? 0 : 29); int y = res.getScaledHeight() - 8; @@ -306,19 +296,19 @@ public class ClientEvents { GlStateManager.pushMatrix(); int color = container.getAuraColor(); - GlStateManager.color((color >> 16 & 255) / 255F, (color >> 8 & 255) / 255F, (color & 255) / 255F); + GlStateManager.color3f((color >> 16 & 255) / 255F, (color >> 8 & 255) / 255F, (color & 255) / 255F); mc.getTextureManager().bindTexture(OVERLAYS); if (width < 80) - AbstractGui.drawModalRectWithCustomSizedTexture(x + width, y, width, 0, 80 - width, 6, 256, 256); + AbstractGui.blit(x + width, y, width, 0, 80 - width, 6, 256, 256); if (width > 0) - AbstractGui.drawModalRectWithCustomSizedTexture(x, y, 0, 6, width, 6, 256, 256); + AbstractGui.blit(x, y, 0, 6, width, 6, 256, 256); float scale = 0.75F; - GlStateManager.scale(scale, scale, scale); - String s = heldCache.getDisplayName(); - mc.fontRenderer.drawString(s, (x + 80) / scale - mc.fontRenderer.getStringWidth(s), (y - 7) / scale, color, true); + GlStateManager.scalef(scale, scale, scale); + String s = heldCache.getDisplayName().getFormattedText(); + mc.fontRenderer.drawString(s, (x + 80) / scale - mc.fontRenderer.getStringWidth(s), (y - 7) / scale, color); - GlStateManager.color(1F, 1F, 1F); + GlStateManager.color3f(1F, 1F, 1F); GlStateManager.popMatrix(); } @@ -328,7 +318,7 @@ public class ClientEvents { int conf = ModConfig.client.auraBarLocation; if (!mc.gameSettings.showDebugInfo && (conf != 2 || !(mc.currentScreen instanceof ChatScreen))) { - GlStateManager.color(83 / 255F, 160 / 255F, 8 / 255F); + GlStateManager.color3f(83 / 255F, 160 / 255F, 8 / 255F); int totalAmount = IAuraChunk.triangulateAuraInArea(mc.world, mc.player.getPosition(), 35); float totalPercentage = totalAmount / (IAuraChunk.DEFAULT_AURA * 2F); @@ -344,54 +334,54 @@ public class ClientEvents { int tHeight = MathHelper.ceil(MathHelper.clamp(totalPercentage, 0F, 1F) * 50); int y = !heldOcular.isEmpty() && totalPercentage > 1F ? startY + 26 : startY; if (tHeight < 50) - AbstractGui.drawModalRectWithCustomSizedTexture(startX, y, 6, 12, 6, 50 - tHeight, 256, 256); + AbstractGui.blit(startX, y, 6, 12, 6, 50 - tHeight, 256, 256); if (tHeight > 0) - AbstractGui.drawModalRectWithCustomSizedTexture(startX, y + 50 - tHeight, 0, 12 + 50 - tHeight, 6, tHeight, 256, 256); + AbstractGui.blit(startX, y + 50 - tHeight, 0, 12 + 50 - tHeight, 6, tHeight, 256, 256); if (!heldOcular.isEmpty()) { - GlStateManager.color(160 / 255F, 83 / 255F, 8 / 255F); + GlStateManager.color3f(160 / 255F, 83 / 255F, 8 / 255F); int topHeight = MathHelper.ceil(MathHelper.clamp((totalPercentage - 1F) * 2F, 0F, 1F) * 25); if (topHeight > 0) { if (topHeight < 25) - AbstractGui.drawModalRectWithCustomSizedTexture(startX, startY, 18, 12, 6, 25 - topHeight, 256, 256); - AbstractGui.drawModalRectWithCustomSizedTexture(startX, startY + 25 - topHeight, 12, 12 + 25 - topHeight, 6, topHeight, 256, 256); + AbstractGui.blit(startX, startY, 18, 12, 6, 25 - topHeight, 256, 256); + AbstractGui.blit(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); if (bottomHeight < 25) { - AbstractGui.drawModalRectWithCustomSizedTexture(startX, startY + 51, 18, 12, 6, 25 - bottomHeight, 256, 256); + AbstractGui.blit(startX, startY + 51, 18, 12, 6, 25 - bottomHeight, 256, 256); if (bottomHeight > 0) - AbstractGui.drawModalRectWithCustomSizedTexture(startX, startY + 51 + 25 - bottomHeight, 12, 12 + 25 - bottomHeight, 6, bottomHeight, 256, 256); + AbstractGui.blit(startX, startY + 51 + 25 - bottomHeight, 12, 12 + 25 - bottomHeight, 6, bottomHeight, 256, 256); } } int color = heldOcular.isEmpty() ? 0x53a008 : 0xa05308; if (totalPercentage > (heldOcular.isEmpty() ? 1F : 1.5F)) - mc.fontRenderer.drawString("+", startX + plusOffX, startY - 0.5F, color, true); + mc.fontRenderer.drawString("+", startX + plusOffX, startY - 0.5F, color); if (totalPercentage < (heldOcular.isEmpty() ? 0F : -0.5F)) - mc.fontRenderer.drawString("-", startX + plusOffX, startY - 0.5F + (heldOcular.isEmpty() ? 44 : 70), color, true); + mc.fontRenderer.drawString("-", startX + plusOffX, startY - 0.5F + (heldOcular.isEmpty() ? 44 : 70), color); GlStateManager.pushMatrix(); - GlStateManager.scale(textScale, textScale, textScale); - mc.fontRenderer.drawString(text, textX / textScale, textY / textScale, 0x53a008, true); + GlStateManager.scalef(textScale, textScale, textScale); + mc.fontRenderer.drawString(text, textX / textScale, textY / textScale, 0x53a008); GlStateManager.popMatrix(); if (!heldOcular.isEmpty()) { float scale = 0.75F; GlStateManager.pushMatrix(); - GlStateManager.scale(scale, scale, scale); + GlStateManager.scalef(scale, scale, scale); int stackX = conf % 2 == 0 ? 10 : res.getScaledWidth() - 22; int stackY = conf < 2 ? 15 : res.getScaledHeight() - 55; for (Tuple effect : SHOWING_EFFECTS.values()) { int theX = (int) (stackX / scale); int theY = (int) (stackY / scale); - ItemStack stack = effect.getFirst(); + ItemStack stack = effect.getA(); Helper.renderItemInGui(stack, theX, theY, 1F); - if (effect.getSecond()) { - GlStateManager.disableDepth(); + if (effect.getB()) { + GlStateManager.disableDepthTest(); mc.getTextureManager().bindTexture(OVERLAYS); - AbstractGui.drawModalRectWithCustomSizedTexture(theX, theY, 240, 0, 16, 16, 256, 256); - GlStateManager.enableDepth(); + AbstractGui.blit(theX, theY, 240, 0, 16, 16, 256, 256); + GlStateManager.enableDepthTest(); } stackY += 8; } @@ -399,24 +389,25 @@ public class ClientEvents { } } - if (mc.objectMouseOver != null) { - BlockPos pos = mc.objectMouseOver.getBlockPos(); + if (mc.objectMouseOver instanceof BlockRayTraceResult) { + BlockPos pos = ((BlockRayTraceResult) mc.objectMouseOver).getPos(); if (pos != null) { TileEntity tile = mc.world.getTileEntity(pos); - if (tile != null && tile.hasCapability(NaturesAuraAPI.capAuraContainer, null)) { - IAuraContainer container = tile.getCapability(NaturesAuraAPI.capAuraContainer, null); - + IAuraContainer container; + if (tile != null && (container = tile.getCapability(NaturesAuraAPI.capAuraContainer, null).orElse(null)) != null) { BlockState state = mc.world.getBlockState(pos); ItemStack blockStack = state.getBlock().getPickBlock(state, mc.objectMouseOver, mc.world, pos, mc.player); this.drawContainerInfo(container.getStoredAura(), container.getMaxAura(), container.getAuraColor(), - mc, res, 35, blockStack.getDisplayName(), null); + mc, res, 35, blockStack.getDisplayName().toString(), null); if (tile instanceof TileEntityNatureAltar) { ItemStack tileStack = ((TileEntityNatureAltar) tile).getItemHandler(null).getStackInSlot(0); - if (!tileStack.isEmpty() && tileStack.hasCapability(NaturesAuraAPI.capAuraContainer, null)) { - IAuraContainer stackCont = tileStack.getCapability(NaturesAuraAPI.capAuraContainer, null); - this.drawContainerInfo(stackCont.getStoredAura(), stackCont.getMaxAura(), stackCont.getAuraColor(), - mc, res, 55, tileStack.getDisplayName(), null); + if (!tileStack.isEmpty()) { + IAuraContainer stackCont = tileStack.getCapability(NaturesAuraAPI.capAuraContainer, null).orElse(null); + if (stackCont != null) { + this.drawContainerInfo(stackCont.getStoredAura(), stackCont.getMaxAura(), stackCont.getAuraColor(), + mc, res, 55, tileStack.getDisplayName().toString(), null); + } } } } else if (tile instanceof TileEntityRFConverter) { @@ -433,31 +424,29 @@ public class ClientEvents { if (stack.isEmpty()) mc.fontRenderer.drawString( TextFormatting.GRAY.toString() + TextFormatting.ITALIC + I18n.format("info.naturesaura.empty"), - x + 5, y - 11, 0xFFFFFF, true); + x + 5, y - 11, 0xFFFFFF); else Helper.renderItemInGui(stack, x + 2, y - 18, 1F); - Helper.renderItemInGui(ITEM_FRAME, x - 24, y - 24, 1F); mc.getTextureManager().bindTexture(OVERLAYS); int u = chute.isBlacklist ? 240 : 224; - GlStateManager.disableDepth(); - AbstractGui.drawModalRectWithCustomSizedTexture(x - 18, y - 18, u, 0, 16, 16, 256, 256); - GlStateManager.enableDepth(); + GlStateManager.disableDepthTest(); + AbstractGui.blit(x - 18, y - 18, u, 0, 16, 16, 256, 256); + GlStateManager.enableDepthTest(); } } } - GlStateManager.color(1F, 1F, 1F); + GlStateManager.color3f(1F, 1F, 1F); GlStateManager.popMatrix(); } } } - mc.profiler.endSection(); } - private void drawContainerInfo(int stored, int max, int color, Minecraft mc, ScaledResolution res, int yOffset, String name, String textBelow) { - GlStateManager.color((color >> 16 & 255) / 255F, (color >> 8 & 255) / 255F, (color & 255) / 255F); + private void drawContainerInfo(int stored, int max, int color, Minecraft mc, MainWindow res, int yOffset, String name, String textBelow) { + GlStateManager.color3f((color >> 16 & 255) / 255F, (color >> 8 & 255) / 255F, (color & 255) / 255F); int x = res.getScaledWidth() / 2 - 40; int y = res.getScaledHeight() / 2 + yOffset; @@ -465,13 +454,13 @@ public class ClientEvents { mc.getTextureManager().bindTexture(OVERLAYS); if (width < 80) - AbstractGui.drawModalRectWithCustomSizedTexture(x + width, y, width, 0, 80 - width, 6, 256, 256); + AbstractGui.blit(x + width, y, width, 0, 80 - width, 6, 256, 256); if (width > 0) - AbstractGui.drawModalRectWithCustomSizedTexture(x, y, 0, 6, width, 6, 256, 256); + AbstractGui.blit(x, y, 0, 6, width, 6, 256, 256); - mc.fontRenderer.drawString(name, x + 40 - mc.fontRenderer.getStringWidth(name) / 2F, y - 9, color, true); + mc.fontRenderer.drawString(name, x + 40 - mc.fontRenderer.getStringWidth(name) / 2F, y - 9, color); if (textBelow != null) - mc.fontRenderer.drawString(textBelow, x + 40 - mc.fontRenderer.getStringWidth(textBelow) / 2F, y + 7, color, true); + mc.fontRenderer.drawString(textBelow, x + 40 - mc.fontRenderer.getStringWidth(textBelow) / 2F, y + 7, color); } } diff --git a/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java b/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java index b87493ca..69324da3 100644 --- a/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java +++ b/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java @@ -1,27 +1,19 @@ package de.ellpeck.naturesaura.events; import de.ellpeck.naturesaura.Helper; -import de.ellpeck.naturesaura.ModConfig; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.chunk.AuraChunk; import de.ellpeck.naturesaura.chunk.AuraChunkProvider; import de.ellpeck.naturesaura.misc.WorldData; -import de.ellpeck.naturesaura.packet.PacketHandler; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -import net.minecraft.world.ServerWorld; import net.minecraft.world.chunk.Chunk; -import net.minecraftforge.common.config.Config; -import net.minecraftforge.common.config.ConfigManager; import net.minecraftforge.event.AttachCapabilitiesEvent; +import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.world.ChunkWatchEvent; -import net.minecraftforge.fml.client.event.ConfigChangedEvent.OnConfigChangedEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.gameevent.TickEvent; - -import java.util.Iterator; public class CommonEvents { @@ -39,17 +31,14 @@ public class CommonEvents { @SubscribeEvent public void onWorldTick(TickEvent.WorldTickEvent event) { if (!event.world.isRemote && event.phase == TickEvent.Phase.END) { - if (event.world.getTotalWorldTime() % 20 == 0) { - event.world.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":onWorldTick"); - Iterator chunks = event.world.getPersistentChunkIterable(((ServerWorld) event.world).getPlayerChunkMap().getChunkIterator()); + if (event.world.getGameTime() % 20 == 0) { + // TODO update loaded aura chunks + /*Iterator chunks = event.world.getPersistentChunkIterable(((ServerWorld) event.world).getPlayerChunkMap().getChunkIterator()); while (chunks.hasNext()) { Chunk chunk = chunks.next(); - if (chunk.hasCapability(NaturesAuraAPI.capAuraChunk, null)) { - AuraChunk auraChunk = (AuraChunk) chunk.getCapability(NaturesAuraAPI.capAuraChunk, null); - auraChunk.update(); - } - } - event.world.profiler.endSection(); + AuraChunk auraChunk = (AuraChunk) chunk.getCapability(NaturesAuraAPI.capAuraChunk, null).orElse(null); + auraChunk.update(); + }*/ } } } @@ -57,7 +46,7 @@ public class CommonEvents { @SubscribeEvent public void onPlayerTick(TickEvent.PlayerTickEvent event) { if (!event.player.world.isRemote && event.phase == TickEvent.Phase.END) { - if (event.player.world.getTotalWorldTime() % 200 != 0) + if (event.player.world.getGameTime() % 200 != 0) return; int aura = IAuraChunk.triangulateAuraInArea(event.player.world, event.player.getPosition(), 25); @@ -70,18 +59,21 @@ public class CommonEvents { @SubscribeEvent public void onChunkWatch(ChunkWatchEvent.Watch event) { - Chunk chunk = event.getChunkInstance(); - if (!chunk.getWorld().isRemote && chunk.hasCapability(NaturesAuraAPI.capAuraChunk, null)) { - AuraChunk auraChunk = (AuraChunk) chunk.getCapability(NaturesAuraAPI.capAuraChunk, null); - PacketHandler.sendTo(event.getPlayer(), auraChunk.makePacket()); + Chunk chunk = event.getWorld().getChunk(event.getPos().x, event.getPos().z); + if (!chunk.getWorld().isRemote) { + AuraChunk auraChunk = (AuraChunk) chunk.getCapability(NaturesAuraAPI.capAuraChunk, null).orElse(null); + // TODO packets + /*if (auraChunk != null) + PacketHandler.sendTo(event.getPlayer(), auraChunk.makePacket());*/ } } - @SubscribeEvent + // TODO config + /* @SubscribeEvent public void onConfigChanged(OnConfigChangedEvent event) { if (NaturesAura.MOD_ID.equals(event.getModID())) { ConfigManager.sync(NaturesAura.MOD_ID, Config.Type.INSTANCE); ModConfig.initOrReload(true); } - } + }*/ } diff --git a/src/main/java/de/ellpeck/naturesaura/items/RangeVisualizer.java b/src/main/java/de/ellpeck/naturesaura/items/RangeVisualizer.java index 3cd88168..cc76c840 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/RangeVisualizer.java +++ b/src/main/java/de/ellpeck/naturesaura/items/RangeVisualizer.java @@ -12,20 +12,20 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUseContext; import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; +import net.minecraft.world.dimension.DimensionType; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; public class RangeVisualizer extends ItemImpl { - public static final ListMultimap VISUALIZED_BLOCKS = ArrayListMultimap.create(); - public static final ListMultimap VISUALIZED_ENTITIES = ArrayListMultimap.create(); - public static final ListMultimap VISUALIZED_RAILS = ArrayListMultimap.create(); + public static final ListMultimap VISUALIZED_BLOCKS = ArrayListMultimap.create(); + public static final ListMultimap VISUALIZED_ENTITIES = ArrayListMultimap.create(); + public static final ListMultimap VISUALIZED_RAILS = ArrayListMultimap.create(); public RangeVisualizer() { super("range_visualizer", new Properties().maxStackSize(1).group(NaturesAura.CREATIVE_TAB)); @@ -51,7 +51,7 @@ public class RangeVisualizer extends ItemImpl { Block block = state.getBlock(); if (block instanceof IVisualizable) { if (world.isRemote) - visualize(context.getPlayer(), VISUALIZED_BLOCKS, world.getDimension().getType().getId(), pos); + visualize(context.getPlayer(), VISUALIZED_BLOCKS, world.getDimension().getType(), pos); return ActionResultType.SUCCESS; } return ActionResultType.PASS; @@ -66,7 +66,7 @@ public class RangeVisualizer extends ItemImpl { VISUALIZED_RAILS.clear(); } - public static void visualize(PlayerEntity player, ListMultimap map, int dim, T value) { + public static void visualize(PlayerEntity player, ListMultimap map, DimensionType dim, T value) { if (map.containsEntry(dim, value)) { map.remove(dim, value); player.sendStatusMessage(new TranslationTextComponent("info." + NaturesAura.MOD_ID + ".range_visualizer.end"), true); @@ -84,7 +84,7 @@ public class RangeVisualizer extends ItemImpl { Entity entity = event.getTarget(); if (entity instanceof IVisualizable) { if (entity.world.isRemote) { - int dim = entity.world.getDimension().getType().getId(); + DimensionType dim = entity.world.getDimension().getType(); visualize(event.getPlayer(), VISUALIZED_ENTITIES, dim, entity); } event.getPlayer().swingArm(event.getHand()); diff --git a/src/main/java/de/ellpeck/naturesaura/packet/PacketAuraChunk.java b/src/main/java/de/ellpeck/naturesaura/packet/PacketAuraChunk.java index 65596646..1eeb4e63 100644 --- a/src/main/java/de/ellpeck/naturesaura/packet/PacketAuraChunk.java +++ b/src/main/java/de/ellpeck/naturesaura/packet/PacketAuraChunk.java @@ -1,3 +1,4 @@ +/* TODO sync aura chunks package de.ellpeck.naturesaura.packet; import de.ellpeck.naturesaura.NaturesAura; @@ -80,4 +81,4 @@ public class PacketAuraChunk implements IMessage { return null; } } -} \ No newline at end of file +}*/ diff --git a/src/main/java/de/ellpeck/naturesaura/packet/PacketClient.java b/src/main/java/de/ellpeck/naturesaura/packet/PacketClient.java index 38fbd5ba..a8a3653d 100644 --- a/src/main/java/de/ellpeck/naturesaura/packet/PacketClient.java +++ b/src/main/java/de/ellpeck/naturesaura/packet/PacketClient.java @@ -1,3 +1,4 @@ +/* TODO packets package de.ellpeck.naturesaura.packet; import de.ellpeck.naturesaura.NaturesAura; @@ -61,4 +62,4 @@ public class PacketClient implements IMessage { return null; } } -} \ No newline at end of file +}*/ diff --git a/src/main/java/de/ellpeck/naturesaura/packet/PacketHandler.java b/src/main/java/de/ellpeck/naturesaura/packet/PacketHandler.java index 9e3f95a3..21b6403a 100644 --- a/src/main/java/de/ellpeck/naturesaura/packet/PacketHandler.java +++ b/src/main/java/de/ellpeck/naturesaura/packet/PacketHandler.java @@ -1,28 +1,19 @@ package de.ellpeck.naturesaura.packet; -import de.ellpeck.naturesaura.NaturesAura; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.common.network.NetworkRegistry; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; -import net.minecraftforge.api.distmarker.Dist; - +// TODO packets public final class PacketHandler { - private static SimpleNetworkWrapper network; + /*private static SimpleNetworkWrapper network;*/ public static void init() { - network = new SimpleNetworkWrapper(NaturesAura.MOD_ID); + /*network = new SimpleNetworkWrapper(NaturesAura.MOD_ID); network.registerMessage(PacketParticleStream.Handler.class, PacketParticleStream.class, 0, Dist.CLIENT); network.registerMessage(PacketParticles.Handler.class, PacketParticles.class, 1, Dist.CLIENT); network.registerMessage(PacketAuraChunk.Handler.class, PacketAuraChunk.class, 2, Dist.CLIENT); - network.registerMessage(PacketClient.Handler.class, PacketClient.class, 3, Dist.CLIENT); + network.registerMessage(PacketClient.Handler.class, PacketClient.class, 3, Dist.CLIENT);*/ } - public static void sendToAllLoaded(World world, BlockPos pos, IMessage message) { + /*public static void sendToAllLoaded(World world, BlockPos pos, IMessage message) { network.sendToAllTracking(message, new NetworkRegistry.TargetPoint(world.provider.getDimension(), pos.getX(), pos.getY(), pos.getZ(), 0)); } @@ -32,5 +23,5 @@ public final class PacketHandler { public static void sendTo(PlayerEntity player, IMessage message) { network.sendTo(message, (ServerPlayerEntity) player); - } + }*/ } diff --git a/src/main/java/de/ellpeck/naturesaura/packet/PacketParticleStream.java b/src/main/java/de/ellpeck/naturesaura/packet/PacketParticleStream.java index 3da1be1f..b7b01ca1 100644 --- a/src/main/java/de/ellpeck/naturesaura/packet/PacketParticleStream.java +++ b/src/main/java/de/ellpeck/naturesaura/packet/PacketParticleStream.java @@ -1,3 +1,4 @@ +/* TODO packets package de.ellpeck.naturesaura.packet; import de.ellpeck.naturesaura.NaturesAura; @@ -78,4 +79,4 @@ public class PacketParticleStream implements IMessage { return null; } } -} \ No newline at end of file +}*/ diff --git a/src/main/java/de/ellpeck/naturesaura/packet/PacketParticles.java b/src/main/java/de/ellpeck/naturesaura/packet/PacketParticles.java index 1412a7ab..c3e1d0ed 100644 --- a/src/main/java/de/ellpeck/naturesaura/packet/PacketParticles.java +++ b/src/main/java/de/ellpeck/naturesaura/packet/PacketParticles.java @@ -1,3 +1,4 @@ +/* package de.ellpeck.naturesaura.packet; import de.ellpeck.naturesaura.NaturesAura; @@ -441,4 +442,4 @@ public class PacketParticles implements IMessage { return null; } } -} \ No newline at end of file +}*/ diff --git a/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipes.java b/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipes.java index a99ad91a..04384d5a 100644 --- a/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipes.java +++ b/src/main/java/de/ellpeck/naturesaura/recipes/ModRecipes.java @@ -2,43 +2,24 @@ package de.ellpeck.naturesaura.recipes; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.NaturesAuraAPI; -import de.ellpeck.naturesaura.api.recipes.*; +import de.ellpeck.naturesaura.api.recipes.AnimalSpawnerRecipe; +import de.ellpeck.naturesaura.api.recipes.WeightedOre; import de.ellpeck.naturesaura.api.recipes.ing.AmountIngredient; import de.ellpeck.naturesaura.api.recipes.ing.NBTIngredient; -import de.ellpeck.naturesaura.blocks.ModBlocks; -import de.ellpeck.naturesaura.chunk.effect.AnimalEffect; -import de.ellpeck.naturesaura.chunk.effect.CacheRechargeEffect; -import de.ellpeck.naturesaura.chunk.effect.OreSpawnEffect; -import de.ellpeck.naturesaura.chunk.effect.PlantBoostEffect; -import de.ellpeck.naturesaura.items.AuraBottle; -import de.ellpeck.naturesaura.items.EffectPowder; import de.ellpeck.naturesaura.items.ModItems; import net.minecraft.block.Block; -import net.minecraft.block.FlowerBlock; -import net.minecraft.block.BlockStoneBrick; -import net.minecraft.block.WallBlock; -import net.minecraft.entity.Entity; -import net.minecraft.entity.passive.SheepEntity; -import net.minecraft.block.Blocks; -import net.minecraft.item.Items; -import net.minecraft.potion.Potions; -import net.minecraft.item.DyeColor; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; -import net.minecraft.potion.PotionHelper; -import net.minecraft.potion.PotionUtils; import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; -import net.minecraftforge.fml.common.registry.ForgeRegistries; -import net.minecraftforge.oredict.OreDictionary; import java.util.Arrays; public final class ModRecipes { public static void init() { - new TreeRitualRecipe(res("eye"), + // TODO recipes +/* new TreeRitualRecipe(res("eye"), ing(new ItemStack(Blocks.SAPLING)), new ItemStack(ModItems.EYE), 250, ing(Items.SPIDER_EYE), ing(Items.GOLD_INGOT), @@ -171,7 +152,7 @@ public final class ModRecipes { new AltarRecipe(res("nether_wart"), ing(Blocks.RED_MUSHROOM), new ItemStack(Items.NETHER_WART), conversion, 30000, 250).register(); new AltarRecipe(res("prismarine"), ing(Items.QUARTZ), new ItemStack(Items.PRISMARINE_SHARD), conversion, 55000, 200).register(); new AltarRecipe(res("water"), ing(Items.GLASS_BOTTLE), PotionUtils.addPotionToItemStack(new ItemStack(Items.POTIONITEM), Potions.WATER), conversion, 25000, 200).register(); - new AltarRecipe(res("coal"),ing(new ItemStack(Items.COAL, 1, 1)), new ItemStack(Items.COAL), conversion, 30000, 250).register(); + new AltarRecipe(res("coal"), ing(new ItemStack(Items.COAL, 1, 1)), new ItemStack(Items.COAL), conversion, 30000, 250).register(); Ingredient crushing = ing(ModBlocks.CRUSHING_CATALYST); new AltarRecipe(res("bone"), ing(Items.BONE), new ItemStack(Items.DYE, 6, 15), crushing, 3000, 40).register(); @@ -263,7 +244,7 @@ public final class ModRecipes { spawner("witch", "minecraft:witch", 150000, 150, ing(Items.GLASS_BOTTLE), ing(Items.GLOWSTONE_DUST)); spawner("wither_skeleton", "minecraft:wither_skeleton", 150000, 150, ing(Items.BONE), ing(Blocks.OBSIDIAN)); spawner("wolf", "minecraft:wolf", 50000, 60, ing(Items.LEATHER), ing(Items.BONE)); - spawner("zombie", "minecraft:zombie", 100000, 100, ing(Items.ROTTEN_FLESH)); + spawner("zombie", "minecraft:zombie", 100000, 100, ing(Items.ROTTEN_FLESH));*/ NaturesAuraAPI.OVERWORLD_ORES.add(new WeightedOre("oreCoal", 5000)); NaturesAuraAPI.NETHER_ORES.add(new WeightedOre("oreNetherCoal", 5000)); diff --git a/src/main/java/de/ellpeck/naturesaura/reg/NAArmorMaterial.java b/src/main/java/de/ellpeck/naturesaura/reg/NAArmorMaterial.java index 17458e07..5fca0131 100644 --- a/src/main/java/de/ellpeck/naturesaura/reg/NAArmorMaterial.java +++ b/src/main/java/de/ellpeck/naturesaura/reg/NAArmorMaterial.java @@ -26,41 +26,48 @@ public enum NAArmorMaterial implements IArmorMaterial { private final float toughness; private final LazyLoadBase repairMaterial; - NAArmorMaterial(String nameIn, int maxDamageFactorIn, int[] damageReductionAmountsIn, int enchantabilityIn, SoundEvent equipSoundIn, float p_i48533_8_, Supplier repairMaterialSupplier) { + NAArmorMaterial(String nameIn, int maxDamageFactorIn, int[] damageReductionAmountsIn, int enchantabilityIn, SoundEvent equipSoundIn, float toughness, Supplier repairMaterialSupplier) { this.name = nameIn; this.maxDamageFactor = maxDamageFactorIn; this.damageReductionAmountArray = damageReductionAmountsIn; this.enchantability = enchantabilityIn; this.soundEvent = equipSoundIn; - this.toughness = p_i48533_8_; + this.toughness = toughness; this.repairMaterial = new LazyLoadBase<>(repairMaterialSupplier); } + @Override public int getDurability(EquipmentSlotType slotIn) { return MAX_DAMAGE_ARRAY[slotIn.getIndex()] * this.maxDamageFactor; } + @Override public int getDamageReductionAmount(EquipmentSlotType slotIn) { return this.damageReductionAmountArray[slotIn.getIndex()]; } + @Override public int getEnchantability() { return this.enchantability; } + @Override public SoundEvent getSoundEvent() { return this.soundEvent; } + @Override public Ingredient getRepairMaterial() { return this.repairMaterial.getValue(); } + @Override @OnlyIn(Dist.CLIENT) public String getName() { return this.name; } + @Override public float getToughness() { return this.toughness; } diff --git a/src/main/java/de/ellpeck/naturesaura/renderers/SupporterFancyHandler.java b/src/main/java/de/ellpeck/naturesaura/renderers/SupporterFancyHandler.java index 64e4b2de..b44ee057 100644 --- a/src/main/java/de/ellpeck/naturesaura/renderers/SupporterFancyHandler.java +++ b/src/main/java/de/ellpeck/naturesaura/renderers/SupporterFancyHandler.java @@ -1,6 +1,8 @@ package de.ellpeck.naturesaura.renderers; -import com.google.gson.*; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import com.google.gson.stream.JsonReader; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.NaturesAuraAPI; @@ -8,18 +10,14 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerModelPart; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; import net.minecraft.world.biome.BiomeColors; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.gameevent.TickEvent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; -import java.io.File; -import java.io.FileInputStream; import java.io.InputStreamReader; -import java.io.StringReader; import java.net.URL; import java.util.HashMap; import java.util.Map; @@ -44,7 +42,7 @@ public class SupporterFancyHandler { return; if (player.isInvisible() || !player.isWearing(PlayerModelPart.CAPE)) return; - Minecraft mc = Minecraft.getMinecraft(); + Minecraft mc = Minecraft.getInstance(); if (player == mc.player && mc.gameSettings.thirdPersonView == 0) return; FancyInfo info = FANCY_INFOS.get(player.getName()); @@ -56,7 +54,7 @@ public class SupporterFancyHandler { int color; if (info.tier == 1) { BlockPos pos = player.getPosition(); - color = BiomeColors.getFoliageColorAtPos(player.world, pos); + color = BiomeColors.getFoliageColor(player.world, pos); } else { color = info.color; }