diff --git a/src/main/java/de/ellpeck/naturesaura/InternalHooks.java b/src/main/java/de/ellpeck/naturesaura/InternalHooks.java index dfc13513..4d78c35c 100644 --- a/src/main/java/de/ellpeck/naturesaura/InternalHooks.java +++ b/src/main/java/de/ellpeck/naturesaura/InternalHooks.java @@ -8,7 +8,6 @@ import de.ellpeck.naturesaura.api.multiblock.IMultiblock; import de.ellpeck.naturesaura.blocks.multi.Multiblock; import de.ellpeck.naturesaura.compat.Compat; import de.ellpeck.naturesaura.misc.WorldData; -import net.minecraft.client.renderer.Vector3f; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -16,6 +15,7 @@ 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.IWorld; import net.minecraft.world.World; import org.apache.commons.lang3.mutable.MutableFloat; import org.apache.commons.lang3.mutable.MutableInt; @@ -108,36 +108,28 @@ public class InternalHooks implements NaturesAuraAPI.IInternalHooks { @Override public List> getActiveEffectPowders(World world, AxisAlignedBB area, ResourceLocation name) { - world.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":getActiveEffectPowders"); List> found = new ArrayList<>(); for (Tuple powder : ((WorldData) IWorldData.getWorldData(world)).effectPowders.get(name)) - if (area.contains(powder.getFirst())) + if (area.contains(powder.getA())) found.add(powder); - world.profiler.endSection(); return found; } @Override public boolean isEffectPowderActive(World world, BlockPos pos, ResourceLocation name) { - world.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":isEffectPowderActive"); Vec3d posVec = new Vec3d(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5); List> powders = this.getActiveEffectPowders(world, new AxisAlignedBB(pos).grow(64), name); for (Tuple powder : powders) { - AxisAlignedBB bounds = Helper.aabb(powder.getFirst()).grow(powder.getSecond()); - if (bounds.contains(posVec)) { - world.profiler.endSection(); + AxisAlignedBB bounds = Helper.aabb(powder.getA()).grow(powder.getB()); + if (bounds.contains(posVec)) return true; - } } - world.profiler.endSection(); return false; } @Override public void getAuraSpotsInArea(World world, BlockPos pos, int radius, BiConsumer consumer) { - world.profiler.func_194340_a(() -> NaturesAura.MOD_ID + ":getSpotsInArea"); Helper.getAuraChunksInArea(world, pos, radius, chunk -> chunk.getSpotsInArea(pos, radius, consumer)); - world.profiler.endSection(); } @Override @@ -158,7 +150,7 @@ public class InternalHooks implements NaturesAuraAPI.IInternalHooks { public int triangulateAuraInArea(World world, BlockPos pos, int radius) { MutableFloat result = new MutableFloat(IAuraChunk.DEFAULT_AURA); IAuraChunk.getSpotsInArea(world, pos, radius, (blockPos, spot) -> { - float percentage = 1F - (float) pos.getDistance(blockPos.getX(), blockPos.getY(), blockPos.getZ()) / radius; + float percentage = 1F - (float) Math.sqrt(pos.distanceSq(blockPos)) / radius; result.add(spot * percentage); }); return result.intValue(); diff --git a/src/main/java/de/ellpeck/naturesaura/NaturesAura.java b/src/main/java/de/ellpeck/naturesaura/NaturesAura.java index 318469cf..e408a561 100644 --- a/src/main/java/de/ellpeck/naturesaura/NaturesAura.java +++ b/src/main/java/de/ellpeck/naturesaura/NaturesAura.java @@ -9,9 +9,7 @@ import de.ellpeck.naturesaura.blocks.ModBlocks; import de.ellpeck.naturesaura.blocks.multi.Multiblocks; import de.ellpeck.naturesaura.chunk.effect.DrainSpotEffects; import de.ellpeck.naturesaura.compat.Compat; -import de.ellpeck.naturesaura.entities.ModEntities; import de.ellpeck.naturesaura.events.CommonEvents; -import de.ellpeck.naturesaura.gui.GuiHandler; import de.ellpeck.naturesaura.items.ModItems; import de.ellpeck.naturesaura.packet.PacketHandler; import de.ellpeck.naturesaura.potion.ModPotions; @@ -87,7 +85,6 @@ public final class NaturesAura { Compat.preInit(); PacketHandler.init(); - ModEntities.init(); new Multiblocks(); MinecraftForge.EVENT_BUS.register(new CommonEvents()); @@ -100,7 +97,6 @@ public final class NaturesAura { ModRecipes.init(); ModRegistry.init(event); DrainSpotEffects.init(); - new GuiHandler(); proxy.init(event); } diff --git a/src/main/java/de/ellpeck/naturesaura/api/NaturesAuraAPI.java b/src/main/java/de/ellpeck/naturesaura/api/NaturesAuraAPI.java index 637067ba..475a341d 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/NaturesAuraAPI.java +++ b/src/main/java/de/ellpeck/naturesaura/api/NaturesAuraAPI.java @@ -344,9 +344,9 @@ public final class NaturesAuraAPI { BlockPos getLowestAuraDrainSpot(World world, BlockPos pos, int radius, BlockPos defaultSpot); /** - * @see IAuraChunk#getHighestSpot(IWorld, BlockPos, int, BlockPos) + * @see IAuraChunk#getHighestSpot(World, BlockPos, int, BlockPos) */ - BlockPos getHighestAuraDrainSpot(IWorld world, BlockPos pos, int radius, BlockPos defaultSpot); + BlockPos getHighestAuraDrainSpot(World 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 2e7e5719..bdb99b82 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 @@ -14,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(IWorld, BlockPos)}. + * #getAuraChunk(World, BlockPos)}. *

* It is not intended for API users to create custom implementation of this * class. @@ -49,28 +49,28 @@ public interface IAuraChunk extends INBTSerializable { * @param consumer A consumer that gets given the position and amount of * aura in each drain spot found */ - static void getSpotsInArea(World world, BlockPos pos, int radius, BiConsumer consumer) { - NaturesAuraAPI.instance().getAuraSpotsInArea(world, pos, radius, consumer); + static void getSpotsInArea(IWorld world, BlockPos pos, int radius, BiConsumer consumer) { + NaturesAuraAPI.instance().getAuraSpotsInArea((World) world, pos, radius, consumer); } /** * Convenience method that adds up the amount of aura spots from {@link - * #getSpotsInArea(World, BlockPos, int, BiConsumer)} and returns it. + * #getSpotsInArea(IWorld, BlockPos, int, BiConsumer)} and returns it. * * @param world The world * @param pos The center position * @param radius The radius around the center to search for spots in * @return The amount of spots found in the area */ - static int getSpotAmountInArea(World world, BlockPos pos, int radius) { - return NaturesAuraAPI.instance().getSpotAmountInArea(world, pos, radius); + static int getSpotAmountInArea(IWorld world, BlockPos pos, int radius) { + return NaturesAuraAPI.instance().getSpotAmountInArea((World) world, pos, radius); } /** * Convenience method that adds up all of the aura from each drain spot from - * {@link #getSpotsInArea(World, BlockPos, int, BiConsumer)} and + * {@link #getSpotsInArea(IWorld, BlockPos, int, BiConsumer)} and * conveniently returns it. For a better visual display with a more gradual - * increase, use {@link #triangulateAuraInArea(World, BlockPos, int)}. + * increase, use {@link #triangulateAuraInArea(IWorld, BlockPos, int)}. * * @param world The world * @param pos The center position @@ -78,18 +78,18 @@ public interface IAuraChunk extends INBTSerializable { * @return The amount of Aura present in that area, based on the drain spots * that are found */ - static int getAuraInArea(World world, BlockPos pos, int radius) { - return NaturesAuraAPI.instance().getAuraInArea(world, pos, radius); + static int getAuraInArea(IWorld world, BlockPos pos, int radius) { + return NaturesAuraAPI.instance().getAuraInArea((World) world, pos, radius); } /** * Convenience method that adds up all of the aura from each drain spot from - * {@link #getSpotsInArea(World, BlockPos, int, BiConsumer)}, but multiplies - * their amount by the percentual distance to the supplied position. This - * will cause for a lot more gradual of an increase and decrease of Aura - * when moving closer to actual spots. This should be used for visual - * purposes as it is more performance intensive than {@link - * #getAuraInArea(World, BlockPos, int)}. + * {@link #getSpotsInArea(IWorld, BlockPos, int, BiConsumer)}, but + * multiplies their amount by the percentual distance to the supplied + * position. This will cause for a lot more gradual of an increase and + * decrease of Aura when moving closer to actual spots. This should be used + * for visual purposes as it is more performance intensive than {@link + * #getAuraInArea(IWorld, BlockPos, int)}. * * @param world The world * @param pos The center position @@ -97,8 +97,8 @@ public interface IAuraChunk extends INBTSerializable { * @return The amount of Aura presetn in that area, based on the drain spots * that are found and their distance to the center */ - static int triangulateAuraInArea(World world, BlockPos pos, int radius) { - return NaturesAuraAPI.instance().triangulateAuraInArea(world, pos, radius); + static int triangulateAuraInArea(IWorld world, BlockPos pos, int radius) { + return NaturesAuraAPI.instance().triangulateAuraInArea((World) world, pos, radius); } /** @@ -115,8 +115,8 @@ public interface IAuraChunk extends INBTSerializable { * spot when none are found * @return The position of the lowest drain spot */ - static BlockPos getLowestSpot(World world, BlockPos pos, int radius, BlockPos defaultSpot) { - return NaturesAuraAPI.instance().getLowestAuraDrainSpot(world, pos, radius, defaultSpot); + static BlockPos getLowestSpot(IWorld world, BlockPos pos, int radius, BlockPos defaultSpot) { + return NaturesAuraAPI.instance().getLowestAuraDrainSpot((World) world, pos, radius, defaultSpot); } /** @@ -134,7 +134,7 @@ public interface IAuraChunk extends INBTSerializable { * @return The position of the highest drain spot */ static BlockPos getHighestSpot(IWorld world, BlockPos pos, int radius, BlockPos defaultSpot) { - return NaturesAuraAPI.instance().getHighestAuraDrainSpot(world, pos, radius, defaultSpot); + return NaturesAuraAPI.instance().getHighestAuraDrainSpot((World) world, pos, radius, defaultSpot); } /** diff --git a/src/main/java/de/ellpeck/naturesaura/api/aura/container/ItemAuraContainer.java b/src/main/java/de/ellpeck/naturesaura/api/aura/container/ItemAuraContainer.java index e71f08aa..b71c870d 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/aura/container/ItemAuraContainer.java +++ b/src/main/java/de/ellpeck/naturesaura/api/aura/container/ItemAuraContainer.java @@ -37,16 +37,16 @@ public class ItemAuraContainer implements IAuraContainer { } private void setAura(int amount) { - if (!this.stack.hasTagCompound()) { - this.stack.setTagCompound(new CompoundNBT()); + if (!this.stack.hasTag()) { + this.stack.setTag(new CompoundNBT()); } - this.stack.getTagCompound().setInteger("aura", amount); + this.stack.getTag().putInt("aura", amount); } @Override public int getStoredAura() { - if (this.stack.hasTagCompound()) { - return this.stack.getTagCompound().getInteger("aura"); + if (this.stack.hasTag()) { + return this.stack.getTag().getInt("aura"); } else { return 0; } diff --git a/src/main/java/de/ellpeck/naturesaura/api/internal/StubHooks.java b/src/main/java/de/ellpeck/naturesaura/api/internal/StubHooks.java index 2e361839..d300a12d 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/internal/StubHooks.java +++ b/src/main/java/de/ellpeck/naturesaura/api/internal/StubHooks.java @@ -83,11 +83,11 @@ public class StubHooks implements NaturesAuraAPI.IInternalHooks { @Override public BlockPos getLowestAuraDrainSpot(World world, BlockPos pos, int radius, BlockPos defaultSpot) { - return BlockPos.ORIGIN; + return BlockPos.ZERO; } @Override public BlockPos getHighestAuraDrainSpot(World world, BlockPos pos, int radius, BlockPos defaultSpot) { - return BlockPos.ORIGIN; + return BlockPos.ZERO; } } diff --git a/src/main/java/de/ellpeck/naturesaura/api/internal/StubMultiblock.java b/src/main/java/de/ellpeck/naturesaura/api/internal/StubMultiblock.java index cc71733d..670985db 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/internal/StubMultiblock.java +++ b/src/main/java/de/ellpeck/naturesaura/api/internal/StubMultiblock.java @@ -5,7 +5,7 @@ import de.ellpeck.naturesaura.api.multiblock.IMultiblock; import de.ellpeck.naturesaura.api.multiblock.Matcher; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; +import net.minecraft.world.IWorld; import java.util.Collections; import java.util.Map; @@ -16,7 +16,7 @@ public class StubMultiblock implements IMultiblock { private static final ResourceLocation NAME = new ResourceLocation(NaturesAuraAPI.MOD_ID, "stub"); @Override - public boolean isComplete(World world, BlockPos center) { + public boolean isComplete(IWorld world, BlockPos center) { return false; } @@ -27,7 +27,7 @@ public class StubMultiblock implements IMultiblock { @Override public BlockPos getStart(BlockPos center) { - return BlockPos.ORIGIN; + return BlockPos.ZERO; } @Override 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 3c2a5bfb..136538db 100644 --- a/src/main/java/de/ellpeck/naturesaura/api/multiblock/Matcher.java +++ b/src/main/java/de/ellpeck/naturesaura/api/multiblock/Matcher.java @@ -4,7 +4,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; +import net.minecraft.world.IWorld; public class Matcher { @@ -56,6 +56,6 @@ public class Matcher { } public interface ICheck { - boolean matches(World world, BlockPos start, BlockPos offset, BlockPos pos, BlockState state, char c); + boolean matches(IWorld world, BlockPos start, BlockPos offset, BlockPos pos, BlockState state, char c); } } diff --git a/src/main/java/de/ellpeck/naturesaura/api/package-info.java b/src/main/java/de/ellpeck/naturesaura/api/package-info.java deleted file mode 100644 index 7b0c9970..00000000 --- a/src/main/java/de/ellpeck/naturesaura/api/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@API(owner = NaturesAuraAPI.MOD_ID, provides = NaturesAuraAPI.API_ID, apiVersion = NaturesAuraAPI.VERSION) -package de.ellpeck.naturesaura.api; - -import net.minecraftforge.fml.common.API; \ No newline at end of file diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientLeaves.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientLeaves.java index c5e97b75..638fc92c 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientLeaves.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientLeaves.java @@ -1,6 +1,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.api.NaturesAuraAPI; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityAncientLeaves; import de.ellpeck.naturesaura.reg.*; import net.minecraft.block.BlockState; @@ -58,7 +59,7 @@ public class BlockAncientLeaves extends LeavesBlock implements @Nullable @Override public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return new TileEntityAncientLeaves(); + return ModTileEntities.ANCIENT_LEAVES.create(); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientSapling.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientSapling.java index 0a02a8c0..339e1939 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientSapling.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAncientSapling.java @@ -1,6 +1,5 @@ package de.ellpeck.naturesaura.blocks; -import de.ellpeck.naturesaura.gen.WorldGenAncientTree; import de.ellpeck.naturesaura.reg.IModItem; import de.ellpeck.naturesaura.reg.IModelProvider; import de.ellpeck.naturesaura.reg.ModRegistry; @@ -65,7 +64,8 @@ public class BlockAncientSapling extends BushBlock implements IGrowable, IModIte 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); + // TODO generate tree + //new WorldGenAncientTree(true).generate(world, rand, pos); } } } \ No newline at end of file diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalGenerator.java index ca83046c..ab91f64f 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalGenerator.java @@ -3,6 +3,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.render.IVisualizable; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityAnimalGenerator; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; @@ -26,7 +27,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; public class BlockAnimalGenerator extends BlockContainerImpl implements IVisualizable { public BlockAnimalGenerator() { - super("animal_generator", TileEntityAnimalGenerator.class, "animal_generator", ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE)); + super("animal_generator", ModTileEntities.ANIMAL_GENERATOR, ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE)); MinecraftForge.EVENT_BUS.register(this); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalSpawner.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalSpawner.java index a5b1d1a8..e2441a65 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalSpawner.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAnimalSpawner.java @@ -1,11 +1,11 @@ package de.ellpeck.naturesaura.blocks; -import de.ellpeck.naturesaura.blocks.tiles.TileEntityAnimalSpawner; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; public class BlockAnimalSpawner extends BlockContainerImpl { public BlockAnimalSpawner() { - super("animal_spawner", TileEntityAnimalSpawner.class, "animal_spawner", ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE)); + super("animal_spawner", ModTileEntities.ANIMAL_SPAWNER, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE)); } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAuraDetector.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAuraDetector.java index 3b9f34b2..d412af9f 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAuraDetector.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAuraDetector.java @@ -1,9 +1,10 @@ package de.ellpeck.naturesaura.blocks; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityAuraDetector; +import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.block.BlockState; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -11,7 +12,7 @@ import net.minecraft.world.World; public class BlockAuraDetector extends BlockContainerImpl { public BlockAuraDetector() { - super("aura_detector", TileEntityAuraDetector.class, "aura_detector", ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE)); + super("aura_detector", ModTileEntities.AURA_DETECTOR, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAutoCrafter.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAutoCrafter.java index 657b06d7..7c385524 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockAutoCrafter.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockAutoCrafter.java @@ -1,6 +1,6 @@ package de.ellpeck.naturesaura.blocks; -import de.ellpeck.naturesaura.blocks.tiles.TileEntityAutoCrafter; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; @@ -14,7 +14,7 @@ public class BlockAutoCrafter extends BlockContainerImpl { public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; public BlockAutoCrafter() { - super("auto_crafter", TileEntityAutoCrafter.class, "auto_crafter", ModBlocks.prop(Material.WOOD).hardnessAndResistance(1.5F).sound(SoundType.WOOD)); + super("auto_crafter", ModTileEntities.AUTO_CRAFTER, ModBlocks.prop(Material.WOOD).hardnessAndResistance(1.5F).sound(SoundType.WOOD)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java index 201af3f0..d3292a89 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockChunkLoader.java @@ -2,6 +2,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.render.IVisualizable; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityChunkLoader; import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; @@ -24,7 +25,7 @@ public class BlockChunkLoader extends BlockContainerImpl implements IVisualizabl private static final VoxelShape SHAPE = makeCuboidShape(4, 4, 4, 12, 12, 12); public BlockChunkLoader() { - super("chunk_loader", TileEntityChunkLoader.class, "chunk_loader", ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE)); + super("chunk_loader", ModTileEntities.CHUNK_LOADER, ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE)); } /* TODO Chunk Loading diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockContainerImpl.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockContainerImpl.java index 32f43aad..bfdda1e2 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockContainerImpl.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockContainerImpl.java @@ -9,6 +9,7 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; @@ -19,39 +20,27 @@ import java.util.Random; public class BlockContainerImpl extends ContainerBlock implements IModItem, IModelProvider { private final String baseName; + public final TileEntityType tileType; - private final Class tileClass; - private final String tileRegName; - - public BlockContainerImpl(String baseName, Class tileClass, String tileReg, Block.Properties properties) { + public BlockContainerImpl(String baseName, TileEntityType tileClass, Block.Properties properties) { super(properties); this.baseName = baseName; - this.tileClass = tileClass; - this.tileRegName = tileReg; + this.tileType = tileClass; ModRegistry.add(this); } @Nullable @Override - public TileEntity createNewTileEntity(IBlockReader world) { - // TODO TYPES BLUTRGHGHGH - try { - return this.tileClass.newInstance(); - } catch (Exception e) { - return null; - } + public TileEntity createNewTileEntity(IBlockReader worldIn) { + return this.tileType.create(); } @Override public String getBaseName() { return this.baseName; } -/* TODO tile entties??? - public void onInit(FMLInitializationEvent event) { - ForgeRegistries.TILE_ENTITIES.register(this.tileClass, new ResourceLocation(NaturesAura.MOD_ID, this.tileRegName)); - }*/ @Override public BlockRenderType getRenderType(BlockState state) { diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockEndFlower.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockEndFlower.java index aaac13c7..29242f12 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockEndFlower.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockEndFlower.java @@ -1,5 +1,6 @@ package de.ellpeck.naturesaura.blocks; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityEndFlower; import de.ellpeck.naturesaura.reg.IModItem; import de.ellpeck.naturesaura.reg.IModelProvider; @@ -78,7 +79,7 @@ public class BlockEndFlower extends BushBlock implements IModItem, IModelProvide @Nullable @Override public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return new TileEntityEndFlower(); + return new TileEntityEndFlower(ModTileEntities.END_FLOWER); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockEnderCrate.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockEnderCrate.java index 8603f176..a19ac345 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockEnderCrate.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockEnderCrate.java @@ -2,6 +2,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.misc.IWorldData; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityEnderCrate; import de.ellpeck.naturesaura.blocks.tiles.render.RenderEnderCrate; import de.ellpeck.naturesaura.items.ModItems; @@ -46,7 +47,7 @@ public class BlockEnderCrate extends BlockContainerImpl implements ITESRProvider private static final ThreadLocal> CACHED_WORLD = new ThreadLocal<>(); public BlockEnderCrate() { - super("ender_crate", TileEntityEnderCrate.class, "ender_crate", ModBlocks.prop(Material.ROCK).hardnessAndResistance(5F).lightValue(7).sound(SoundType.STONE)); + super("ender_crate", ModTileEntities.ENDER_CRATE, ModBlocks.prop(Material.ROCK).hardnessAndResistance(5F).lightValue(7).sound(SoundType.STONE)); MinecraftForge.EVENT_BUS.register(this); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockFieldCreator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockFieldCreator.java index a0f29292..0c17360c 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockFieldCreator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockFieldCreator.java @@ -2,6 +2,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.NaturesAuraAPI; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityFieldCreator; import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; @@ -23,7 +24,7 @@ import java.util.Random; public class BlockFieldCreator extends BlockContainerImpl { public BlockFieldCreator() { - super("field_creator", TileEntityFieldCreator.class, "field_creator", ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE)); + super("field_creator", ModTileEntities.FIELD_CREATOR, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockFireworkGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockFireworkGenerator.java index dcf385be..af65b67e 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockFireworkGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockFireworkGenerator.java @@ -1,7 +1,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.api.render.IVisualizable; -import de.ellpeck.naturesaura.blocks.tiles.TileEntityFireworkGenerator; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.math.AxisAlignedBB; @@ -12,7 +12,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; public class BlockFireworkGenerator extends BlockContainerImpl implements IVisualizable { public BlockFireworkGenerator() { - super("firework_generator", TileEntityFireworkGenerator.class, "firework_generator", ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE)); + super("firework_generator", ModTileEntities.FIREWORK_GENERATOR, ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockFlowerGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockFlowerGenerator.java index 780a909e..3e8e12e3 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockFlowerGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockFlowerGenerator.java @@ -1,7 +1,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.api.render.IVisualizable; -import de.ellpeck.naturesaura.blocks.tiles.TileEntityFlowerGenerator; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.math.AxisAlignedBB; @@ -13,7 +13,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; public class BlockFlowerGenerator extends BlockContainerImpl implements IVisualizable { public BlockFlowerGenerator() { - super("flower_generator", TileEntityFlowerGenerator.class, "flower_generator", ModBlocks.prop(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2F)); + super("flower_generator", ModTileEntities.FLOWER_GENERATOR, ModBlocks.prop(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2F)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockFurnaceHeater.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockFurnaceHeater.java index 63fdf868..921684ff 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockFurnaceHeater.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockFurnaceHeater.java @@ -1,6 +1,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.api.NaturesAuraAPI; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityFurnaceHeater; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -36,7 +37,7 @@ public class BlockFurnaceHeater extends BlockContainerImpl { }; public BlockFurnaceHeater() { - super("furnace_heater", TileEntityFurnaceHeater.class, "furnace_heater", ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).harvestLevel(1).harvestTool(ToolType.PICKAXE)); + super("furnace_heater", ModTileEntities.FURNACE_HEATER, ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).harvestLevel(1).harvestTool(ToolType.PICKAXE)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGeneratorLimitRemover.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGeneratorLimitRemover.java index d9371692..c65126b3 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGeneratorLimitRemover.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGeneratorLimitRemover.java @@ -1,13 +1,13 @@ package de.ellpeck.naturesaura.blocks; -import de.ellpeck.naturesaura.blocks.tiles.TileEntityGeneratorLimitRemover; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; 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)); + super("generator_limit_remover", ModTileEntities.GENERATOR_LIMIT_REMOVER, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE)); } /*@Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java index 18cb12a2..a005593b 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockGratedChute.java @@ -1,11 +1,8 @@ package de.ellpeck.naturesaura.blocks; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; 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; -import net.minecraft.block.SoundType; +import net.minecraft.block.*; import net.minecraft.block.material.Material; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -44,7 +41,7 @@ public class BlockGratedChute extends BlockContainerImpl { private static final VoxelShape BASE_BOTTOM = makeCuboidShape(4, 4, 4, 12, 9, 12); public BlockGratedChute() { - super("grated_chute", TileEntityGratedChute.class, "grated_chute", ModBlocks.prop(Material.IRON).hardnessAndResistance(3.0F, 8.0F).sound(SoundType.METAL)); + super("grated_chute", ModTileEntities.GRATED_CHUTE, ModBlocks.prop(Material.IRON).hardnessAndResistance(3.0F, 8.0F).sound(SoundType.METAL)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockHopperUpgrade.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockHopperUpgrade.java index 74b48f0b..f974fab5 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockHopperUpgrade.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockHopperUpgrade.java @@ -1,7 +1,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.api.render.IVisualizable; -import de.ellpeck.naturesaura.blocks.tiles.TileEntityHopperUpgrade; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.math.AxisAlignedBB; @@ -12,7 +12,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; public class BlockHopperUpgrade extends BlockContainerImpl implements IVisualizable { public BlockHopperUpgrade() { - super("hopper_upgrade", TileEntityHopperUpgrade.class, "hopper_upgrade", ModBlocks.prop(Material.IRON).hardnessAndResistance(2.5F).sound(SoundType.METAL)); + super("hopper_upgrade", ModTileEntities.HOPPER_UPGRADE, ModBlocks.prop(Material.IRON).hardnessAndResistance(2.5F).sound(SoundType.METAL)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockMossGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockMossGenerator.java index 89039de9..c483e7b6 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockMossGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockMossGenerator.java @@ -1,6 +1,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.api.render.IVisualizable; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityMossGenerator; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; @@ -12,7 +13,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; public class BlockMossGenerator extends BlockContainerImpl implements IVisualizable { public BlockMossGenerator() { - super("moss_generator", TileEntityMossGenerator.class, "moss_generator", ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE)); + super("moss_generator", ModTileEntities.MOSS_GENERATOR, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockNatureAltar.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockNatureAltar.java index af1c772e..ed847205 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockNatureAltar.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockNatureAltar.java @@ -1,6 +1,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.Helper; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityNatureAltar; import de.ellpeck.naturesaura.blocks.tiles.render.RenderNatureAltar; import de.ellpeck.naturesaura.reg.ITESRProvider; @@ -21,7 +22,7 @@ public class BlockNatureAltar extends BlockContainerImpl implements ITESRProvide // TODO bounds public BlockNatureAltar() { - super("nature_altar", TileEntityNatureAltar.class, "nature_altar", ModBlocks.prop(Material.ROCK).hardnessAndResistance(4F).harvestLevel(1).harvestTool(ToolType.PICKAXE)); + super("nature_altar", ModTileEntities.NATURE_ALTAR, ModBlocks.prop(Material.ROCK).hardnessAndResistance(4F).harvestLevel(1).harvestTool(ToolType.PICKAXE)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java index d20a3200..bca8cc7b 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockOakGenerator.java @@ -4,6 +4,7 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.type.IAuraType; import de.ellpeck.naturesaura.api.render.IVisualizable; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityOakGenerator; import net.minecraft.block.SaplingBlock; import net.minecraft.block.SoundType; @@ -23,7 +24,7 @@ import java.util.Random; public class BlockOakGenerator extends BlockContainerImpl implements IVisualizable { public BlockOakGenerator() { - super("oak_generator", TileEntityOakGenerator.class, "oak_generator", ModBlocks.prop(Material.WOOD).hardnessAndResistance(2F).sound(SoundType.WOOD)); + super("oak_generator", ModTileEntities.OAK_GENERATOR, ModBlocks.prop(Material.WOOD).hardnessAndResistance(2F).sound(SoundType.WOOD)); MinecraftForge.EVENT_BUS.register(this); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockOfferingTable.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockOfferingTable.java index c4db910d..c70967e1 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockOfferingTable.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockOfferingTable.java @@ -1,6 +1,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.Helper; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityOfferingTable; import de.ellpeck.naturesaura.blocks.tiles.render.RenderOfferingTable; import de.ellpeck.naturesaura.reg.ITESRProvider; @@ -24,7 +25,7 @@ public class BlockOfferingTable extends BlockContainerImpl implements ITESRProvi private static final AxisAlignedBB BOUND_BOX = new AxisAlignedBB(2 / 16F, 0F, 2 / 16F, 14 / 16F, 1F, 14 / 16F); public BlockOfferingTable() { - super("offering_table", TileEntityOfferingTable.class, "offering_table", ModBlocks.prop(Material.WOOD).hardnessAndResistance(2F).sound(SoundType.WOOD)); + super("offering_table", ModTileEntities.OFFERING_TABLE, ModBlocks.prop(Material.WOOD).hardnessAndResistance(2F).sound(SoundType.WOOD)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java index 534c0dfb..12de720e 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPickupStopper.java @@ -2,6 +2,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.api.render.IVisualizable; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityPickupStopper; import de.ellpeck.naturesaura.packet.PacketHandler; import net.minecraft.block.SoundType; @@ -20,7 +21,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; public class BlockPickupStopper extends BlockContainerImpl implements IVisualizable { public BlockPickupStopper() { - super("pickup_stopper", TileEntityPickupStopper.class, "pickup_stopper", ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE)); + super("pickup_stopper", ModTileEntities.PICKUP_STOPPER, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE)); MinecraftForge.EVENT_BUS.register(this); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPlacer.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPlacer.java index e47bb663..327febe0 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPlacer.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPlacer.java @@ -1,7 +1,7 @@ package de.ellpeck.naturesaura.blocks; import de.ellpeck.naturesaura.api.render.IVisualizable; -import de.ellpeck.naturesaura.blocks.tiles.TileEntityPlacer; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.math.AxisAlignedBB; @@ -13,7 +13,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; public class BlockPlacer extends BlockContainerImpl implements IVisualizable { public BlockPlacer() { - super("placer", TileEntityPlacer.class, "placer", ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE)); + super("placer", ModTileEntities.PLACER, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPotionGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPotionGenerator.java index 5f77d1c8..247e89ba 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPotionGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPotionGenerator.java @@ -1,11 +1,11 @@ package de.ellpeck.naturesaura.blocks; -import de.ellpeck.naturesaura.blocks.tiles.TileEntityPotionGenerator; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import net.minecraft.block.material.Material; import net.minecraftforge.common.ToolType; public class BlockPotionGenerator extends BlockContainerImpl { public BlockPotionGenerator() { - super("potion_generator", TileEntityPotionGenerator.class, "potion_generator", ModBlocks.prop(Material.ROCK).hardnessAndResistance(5F).harvestTool(ToolType.PICKAXE).harvestLevel(1)); + super("potion_generator", ModTileEntities.POTION_GENERATOR, ModBlocks.prop(Material.ROCK).hardnessAndResistance(5F).harvestTool(ToolType.PICKAXE).harvestLevel(1)); } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPowderPlacer.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPowderPlacer.java index 2bda5e1e..88d55a0b 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockPowderPlacer.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockPowderPlacer.java @@ -1,6 +1,6 @@ package de.ellpeck.naturesaura.blocks; -import de.ellpeck.naturesaura.blocks.tiles.TileEntityPowderPlacer; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.math.AxisAlignedBB; @@ -10,7 +10,7 @@ public class BlockPowderPlacer extends BlockContainerImpl { 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", ModTileEntities.POWDER_PLACER, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2, 5F).sound(SoundType.STONE)); } /* @Override diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockProjectileGenerator.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockProjectileGenerator.java index 5f7760dc..a3a5c274 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockProjectileGenerator.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockProjectileGenerator.java @@ -2,6 +2,7 @@ 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.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityProjectileGenerator; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; @@ -19,7 +20,7 @@ import net.minecraftforge.registries.ForgeRegistries; 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)); + super("projectile_generator", ModTileEntities.PROJECTILE_GENERATOR, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE)); MinecraftForge.EVENT_BUS.register(this); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockRFConverter.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockRFConverter.java index 8d126d87..3cf5b4ca 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockRFConverter.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockRFConverter.java @@ -1,14 +1,12 @@ package de.ellpeck.naturesaura.blocks; -import de.ellpeck.naturesaura.blocks.tiles.TileEntityRFConverter; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; public class BlockRFConverter extends BlockContainerImpl { public BlockRFConverter() { - super(Material.ROCK, "rf_converter", TileEntityRFConverter.class, "rf_converter"); - this.setSoundType(SoundType.STONE); - this.setHardness(3F); + super("rf_converter", ModTileEntities.RF_CONVERTER, Properties.create(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(3)); } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockSpawnLamp.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockSpawnLamp.java index e533fe51..155fce50 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockSpawnLamp.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockSpawnLamp.java @@ -3,6 +3,7 @@ package de.ellpeck.naturesaura.blocks; 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.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntitySpawnLamp; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; @@ -27,7 +28,7 @@ public class BlockSpawnLamp extends BlockContainerImpl implements IVisualizable 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(15).sound(SoundType.METAL)); + super("spawn_lamp", ModTileEntities.SPAWN_LAMP, ModBlocks.prop(Material.IRON).hardnessAndResistance(3F).lightValue(15).sound(SoundType.METAL)); MinecraftForge.EVENT_BUS.register(this); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockTimeChanger.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockTimeChanger.java index 5b9d47d9..b5dded6a 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockTimeChanger.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockTimeChanger.java @@ -1,11 +1,11 @@ package de.ellpeck.naturesaura.blocks; -import de.ellpeck.naturesaura.blocks.tiles.TileEntityTimeChanger; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; public class BlockTimeChanger extends BlockContainerImpl { public BlockTimeChanger() { - super("time_changer", TileEntityTimeChanger.class, "time_changer", ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE)); + super("time_changer", ModTileEntities.TIME_CHANGER, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE)); } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockWoodStand.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockWoodStand.java index c28cb8f4..aa231923 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockWoodStand.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockWoodStand.java @@ -4,6 +4,7 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.recipes.TreeRitualRecipe; import de.ellpeck.naturesaura.blocks.multi.Multiblocks; +import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities; import de.ellpeck.naturesaura.blocks.tiles.TileEntityWoodStand; import de.ellpeck.naturesaura.blocks.tiles.render.RenderWoodStand; import de.ellpeck.naturesaura.reg.ITESRProvider; @@ -39,7 +40,7 @@ public class BlockWoodStand extends BlockContainerImpl implements ITESRProvider private static final AxisAlignedBB BOUND_BOX = new AxisAlignedBB(3 / 16F, 0F, 3 / 16F, 13 / 16F, 13 / 16F, 13 / 16F); public BlockWoodStand() { - super("wood_stand", TileEntityWoodStand.class, "wood_stand", ModBlocks.prop(Material.WOOD).hardnessAndResistance(1.5F).sound(SoundType.WOOD).harvestLevel(0).harvestTool(ToolType.AXE)); + super("wood_stand", ModTileEntities.WOOD_STAND, ModBlocks.prop(Material.WOOD).hardnessAndResistance(1.5F).sound(SoundType.WOOD).harvestLevel(0).harvestTool(ToolType.AXE)); MinecraftForge.EVENT_BUS.register(this); } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/multi/Multiblock.java b/src/main/java/de/ellpeck/naturesaura/blocks/multi/Multiblock.java index 85cc75e7..f8ae7417 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/multi/Multiblock.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/multi/Multiblock.java @@ -8,7 +8,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; +import net.minecraft.world.IWorld; import java.util.HashMap; import java.util.Map; @@ -107,7 +107,7 @@ public class Multiblock implements IMultiblock { } @Override - public boolean isComplete(World world, BlockPos center) { + public boolean isComplete(IWorld world, BlockPos center) { BlockPos start = this.getStart(center); return this.forEach(center, (char) 0, (pos, matcher) -> { BlockPos offset = pos.subtract(start); diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/ModTileEntities.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/ModTileEntities.java new file mode 100644 index 00000000..b9063c15 --- /dev/null +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/ModTileEntities.java @@ -0,0 +1,38 @@ +package de.ellpeck.naturesaura.blocks.tiles; + +import de.ellpeck.naturesaura.NaturesAura; +import net.minecraft.tileentity.TileEntityType; +import net.minecraftforge.registries.ObjectHolder; + +@SuppressWarnings("FieldNamingConvention") +@ObjectHolder(NaturesAura.MOD_ID) +public final class ModTileEntities { + public static TileEntityType ANCIENT_LEAVES; + public static TileEntityType ANIMAL_GENERATOR; + public static TileEntityType ANIMAL_SPAWNER; + public static TileEntityType AURA_DETECTOR; + public static TileEntityType AUTO_CRAFTER; + public static TileEntityType CHUNK_LOADER; + public static TileEntityType ENDER_CRATE; + public static TileEntityType END_FLOWER; + public static TileEntityType FIELD_CREATOR; + public static TileEntityType FIREWORK_GENERATOR; + public static TileEntityType FLOWER_GENERATOR; + public static TileEntityType FURNACE_HEATER; + public static TileEntityType GENERATOR_LIMIT_REMOVER; + public static TileEntityType GRATED_CHUTE; + public static TileEntityType HOPPER_UPGRADE; + public static TileEntityType MOSS_GENERATOR; + public static TileEntityType NATURE_ALTAR; + public static TileEntityType OAK_GENERATOR; + public static TileEntityType OFFERING_TABLE; + public static TileEntityType PICKUP_STOPPER; + public static TileEntityType PLACER; + public static TileEntityType POTION_GENERATOR; + public static TileEntityType POWDER_PLACER; + public static TileEntityType PROJECTILE_GENERATOR; + public static TileEntityType RF_CONVERTER; + public static TileEntityType SPAWN_LAMP; + public static TileEntityType TIME_CHANGER; + public static TileEntityType WOOD_STAND; +} diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAncientLeaves.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAncientLeaves.java index 66e74de7..95bc5251 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAncientLeaves.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityAncientLeaves.java @@ -4,6 +4,7 @@ import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.container.IAuraContainer; import de.ellpeck.naturesaura.api.aura.container.NaturalAuraContainer; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; public class TileEntityAncientLeaves extends TileEntityImpl { @@ -24,6 +25,10 @@ public class TileEntityAncientLeaves extends TileEntityImpl { } }; + public TileEntityAncientLeaves(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override public IAuraContainer getAuraContainer(Direction facing) { return this.container; diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityEnderCrate.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityEnderCrate.java index 9b6aba81..bf93b5c5 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityEnderCrate.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityEnderCrate.java @@ -7,6 +7,7 @@ import de.ellpeck.naturesaura.blocks.BlockEnderCrate; import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraftforge.items.IItemHandlerModifiable; @@ -55,12 +56,21 @@ public class TileEntityEnderCrate extends TileEntityImpl { return this.getStorage().getSlotLimit(slot); } + @Override + public boolean isItemValid(int slot, @Nonnull ItemStack stack) { + return this.getStorage().isItemValid(slot, stack); + } + private IItemHandlerModifiable getStorage() { return IWorldData.getOverworldData(TileEntityEnderCrate.this.world).getEnderStorage(TileEntityEnderCrate.this.name); } }; public String name; + public TileEntityEnderCrate(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override public IItemHandlerModifiable getItemHandler(Direction facing) { if (this.canOpen()) @@ -80,9 +90,9 @@ public class TileEntityEnderCrate extends TileEntityImpl { public ItemStack getDrop(BlockState state, int fortune) { ItemStack drop = super.getDrop(state, fortune); if (this.name != null) { - if (!drop.hasTagCompound()) - drop.setTagCompound(new CompoundNBT()); - drop.getTagCompound().setString(NaturesAura.MOD_ID + ":ender_name", this.name); + if (!drop.hasTag()) + drop.setTag(new CompoundNBT()); + drop.getTag().putString(NaturesAura.MOD_ID + ":ender_name", this.name); } return drop; } @@ -102,7 +112,7 @@ public class TileEntityEnderCrate extends TileEntityImpl { super.writeNBT(compound, type); if (type != SaveType.BLOCK) { if (this.name != null) - compound.setString("name", this.name); + compound.putString("name", this.name); } } @@ -110,7 +120,7 @@ public class TileEntityEnderCrate extends TileEntityImpl { public void readNBT(CompoundNBT compound, SaveType type) { super.readNBT(compound, type); if (type != SaveType.BLOCK) { - if (compound.hasKey("name")) + if (compound.contains("name")) this.name = compound.getString("name"); } } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityGeneratorLimitRemover.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityGeneratorLimitRemover.java index bea3ef89..2a277965 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityGeneratorLimitRemover.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityGeneratorLimitRemover.java @@ -1,11 +1,16 @@ package de.ellpeck.naturesaura.blocks.tiles; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.math.AxisAlignedBB; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; public class TileEntityGeneratorLimitRemover extends TileEntityImpl { + public TileEntityGeneratorLimitRemover(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override @OnlyIn(Dist.CLIENT) public AxisAlignedBB getRenderBoundingBox() { diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPickupStopper.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPickupStopper.java index aee2f8fa..35114b48 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPickupStopper.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPickupStopper.java @@ -1,7 +1,13 @@ package de.ellpeck.naturesaura.blocks.tiles; +import net.minecraft.tileentity.TileEntityType; + public class TileEntityPickupStopper extends TileEntityImpl { + public TileEntityPickupStopper(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + public float getRadius() { return this.redstonePower / 2F; } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPowderPlacer.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPowderPlacer.java index 59b582cf..95809008 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPowderPlacer.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntityPowderPlacer.java @@ -4,8 +4,9 @@ import de.ellpeck.naturesaura.entities.EntityEffectInhibitor; import de.ellpeck.naturesaura.items.ModItems; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EntityPredicates; +import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; +import net.minecraft.util.EntityPredicates; import net.minecraft.util.math.AxisAlignedBB; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; @@ -14,16 +15,22 @@ import java.util.List; public class TileEntityPowderPlacer extends TileEntityImpl { + public TileEntityPowderPlacer(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + @Override public void onRedstonePowerChange(int newPower) { if (this.redstonePower <= 0 && newPower > 0) { List powders = this.world.getEntitiesWithinAABB(EntityEffectInhibitor.class, new AxisAlignedBB(this.pos, this.pos.add(1, 2, 1)), EntityPredicates.IS_ALIVE); - for (Direction facing : Direction.HORIZONTALS) { - TileEntity tile = this.world.getTileEntity(this.pos.offset(facing)); - if (tile == null || !tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing.getOpposite())) + for (Direction facing : Direction.values()) { + if (!facing.getAxis().isHorizontal()) continue; - IItemHandler handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing.getOpposite()); + TileEntity tile = this.world.getTileEntity(this.pos.offset(facing)); + if (tile == null) + continue; + IItemHandler handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing.getOpposite()).orElse(null); if (handler == null) continue; @@ -33,7 +40,7 @@ public class TileEntityPowderPlacer extends TileEntityImpl { for (int i = 0; i < handler.getSlots(); i++) { ItemStack remain = handler.insertItem(i, drop, false); if (remain.isEmpty()) { - powder.setDead(); + powder.remove(); break; } else if (remain.getCount() != drop.getCount()) { powder.setAmount(remain.getCount()); diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySpawnLamp.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySpawnLamp.java index 68adccde..82de41ef 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySpawnLamp.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/TileEntitySpawnLamp.java @@ -1,7 +1,13 @@ package de.ellpeck.naturesaura.blocks.tiles; +import net.minecraft.tileentity.TileEntityType; + public class TileEntitySpawnLamp extends TileEntityImpl { + public TileEntitySpawnLamp(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + public int getRadius() { return this.redstonePower * 3; } diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderOfferingTable.java b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderOfferingTable.java index 04768324..42521f17 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderOfferingTable.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderOfferingTable.java @@ -1,11 +1,11 @@ package de.ellpeck.naturesaura.blocks.tiles.render; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.blocks.tiles.TileEntityOfferingTable; -import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.renderer.tileentity.TileEntityRenderer; -import net.minecraft.item.Item; import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.math.MathHelper; @@ -17,10 +17,10 @@ public class RenderOfferingTable extends TileEntityRenderer { + @Override - public void render(TileEntityWoodStand tile, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { + public void render(TileEntityWoodStand tile, double x, double y, double z, float partialTicks, int destroyStage) { ItemStack stack = tile.items.getStackInSlot(0); if (!stack.isEmpty()) { GlStateManager.pushMatrix(); Item item = stack.getItem(); if (item instanceof BlockItem && ((BlockItem) item).getBlock().getRenderLayer() == BlockRenderLayer.SOLID) { - GlStateManager.translate(x + 0.5F, y + 0.9735F, z + 0.5F); + GlStateManager.translated(x + 0.5F, y + 0.9735F, z + 0.5F); float scale = 0.65F; - GlStateManager.scale(scale, scale, scale); + GlStateManager.scalef(scale, scale, scale); } else { - GlStateManager.translate(x + 0.5F, y + 0.825F, z + 0.5F); + GlStateManager.translated(x + 0.5F, y + 0.825F, z + 0.5F); float scale = 0.4F; - GlStateManager.scale(scale, scale, scale); - GlStateManager.rotate(90F, 1F, 0F, 0F); + GlStateManager.scalef(scale, scale, scale); + GlStateManager.rotatef(90F, 1F, 0F, 0F); } Helper.renderItemInWorld(stack); GlStateManager.popMatrix(); diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/AuraChunkProvider.java b/src/main/java/de/ellpeck/naturesaura/chunk/AuraChunkProvider.java index cb8bf76b..f83f9430 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/AuraChunkProvider.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/AuraChunkProvider.java @@ -9,6 +9,7 @@ import net.minecraft.world.chunk.Chunk; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.util.INBTSerializable; +import net.minecraftforge.common.util.LazyOptional; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -28,15 +29,10 @@ public class AuraChunkProvider implements ICapabilityProvider, INBTSerializable< return this.auraChunk; } - @Override - public boolean hasCapability(@Nonnull Capability capability, @Nullable Direction facing) { - return capability == NaturesAuraAPI.capAuraChunk; - } - @Nullable @Override - public T getCapability(@Nonnull Capability capability, @Nullable Direction facing) { - return capability == NaturesAuraAPI.capAuraChunk ? (T) this.getAuraChunk() : null; + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction facing) { + return capability == NaturesAuraAPI.capAuraChunk ? LazyOptional.of(() -> (T) this.getAuraChunk()) : LazyOptional.empty(); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/BreathlessEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/BreathlessEffect.java index 6ea565e5..0ae24404 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/BreathlessEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/BreathlessEffect.java @@ -2,14 +2,13 @@ package de.ellpeck.naturesaura.chunk.effect; 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.api.aura.chunk.IDrainSpotEffect; import de.ellpeck.naturesaura.api.aura.type.IAuraType; import de.ellpeck.naturesaura.potion.ModPotions; +import net.minecraft.block.Blocks; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.block.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.potion.EffectInstance; import net.minecraft.util.ResourceLocation; @@ -53,12 +52,12 @@ public class BreathlessEffect implements IDrainSpotEffect { @Override public ItemStack getDisplayIcon() { - return new ItemStack(Blocks.WOOL); + return new ItemStack(Blocks.WHITE_WOOL); } @Override public void update(World world, Chunk chunk, IAuraChunk auraChunk, BlockPos pos, Integer spot) { - if (world.getTotalWorldTime() % 100 != 0) + if (world.getGameTime() % 100 != 0) return; if (!this.calcValues(world, pos, spot)) return; diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/ExplosionEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/ExplosionEffect.java index a4b525c7..c50e72cd 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/ExplosionEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/ExplosionEffect.java @@ -5,14 +5,16 @@ import de.ellpeck.naturesaura.NaturesAura; 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.player.PlayerEntity; import net.minecraft.block.Blocks; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.gen.Heightmap; public class ExplosionEffect implements IDrainSpotEffect { @@ -21,7 +23,7 @@ public class ExplosionEffect implements IDrainSpotEffect { private float strength; private int dist; - private boolean calcValues(World world, BlockPos pos, Integer spot){ + private boolean calcValues(World world, BlockPos pos, Integer spot) { if (spot >= 0) return false; int aura = IAuraChunk.getAuraInArea(world, pos, 85); @@ -41,7 +43,7 @@ public class ExplosionEffect 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; return 1; } @@ -53,18 +55,18 @@ public class ExplosionEffect 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)) + if (!this.calcValues(world, pos, spot)) return; int x = MathHelper.floor(pos.getX() + world.rand.nextGaussian() * this.dist); int z = MathHelper.floor(pos.getZ() + world.rand.nextGaussian() * this.dist); - BlockPos chosenPos = new BlockPos(x, world.getHeight(x, z), z); + BlockPos chosenPos = new BlockPos(x, world.getHeight(Heightmap.Type.WORLD_SURFACE, x, z), z); if (chosenPos.distanceSq(pos) <= this.dist * this.dist && world.isBlockLoaded(chosenPos)) { - world.newExplosion(null, + world.createExplosion(null, chosenPos.getX() + 0.5, chosenPos.getY() + 0.5, chosenPos.getZ() + 0.5, - this.strength, false, true); + this.strength, false, Explosion.Mode.DESTROY); } } diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/GrassDieEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/GrassDieEffect.java index 04d2db2d..c0a30611 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/GrassDieEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/GrassDieEffect.java @@ -8,9 +8,7 @@ import de.ellpeck.naturesaura.api.aura.chunk.IDrainSpotEffect; import de.ellpeck.naturesaura.api.aura.type.IAuraType; import de.ellpeck.naturesaura.blocks.ModBlocks; import net.minecraft.block.*; -import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.block.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; @@ -43,7 +41,7 @@ public class GrassDieEffect 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; return 1; } @@ -68,11 +66,11 @@ public class GrassDieEffect implements IDrainSpotEffect { Block block = state.getBlock(); BlockState newState = null; - if (block instanceof BlockLeaves) { + if (block instanceof LeavesBlock) { newState = ModBlocks.DECAYED_LEAVES.getDefaultState(); - } else if (block instanceof BlockGrass) { - newState = Blocks.DIRT.getDefaultState().withProperty(BlockDirt.VARIANT, BlockDirt.DirtType.COARSE_DIRT); - } else if (block instanceof BlockBush) { + } else if (block instanceof GrassBlock) { + newState = Blocks.COARSE_DIRT.getDefaultState(); + } else if (block instanceof BushBlock) { newState = Blocks.AIR.getDefaultState(); } if (newState != null) diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/ReplenishingEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/ReplenishingEffect.java index 239561d6..20e33c97 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/ReplenishingEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/ReplenishingEffect.java @@ -25,12 +25,9 @@ public class ReplenishingEffect implements IDrainSpotEffect { if (spot < 0) { List tiles = new ArrayList<>(); Helper.getTileEntitiesInArea(world, pos, 25, tile -> { - if (tile.hasCapability(NaturesAuraAPI.capAuraContainer, null)) { - IAuraContainer container = tile.getCapability(NaturesAuraAPI.capAuraContainer, null); - if (container instanceof ISpotDrainable) { - tiles.add((ISpotDrainable) container); - } - } + IAuraContainer container = tile.getCapability(NaturesAuraAPI.capAuraContainer, null).orElse(null); + if (container instanceof ISpotDrainable) + tiles.add((ISpotDrainable) container); return false; }); if (!tiles.isEmpty()) { diff --git a/src/main/java/de/ellpeck/naturesaura/chunk/effect/SpreadEffect.java b/src/main/java/de/ellpeck/naturesaura/chunk/effect/SpreadEffect.java index 591562fc..7a6b028d 100644 --- a/src/main/java/de/ellpeck/naturesaura/chunk/effect/SpreadEffect.java +++ b/src/main/java/de/ellpeck/naturesaura/chunk/effect/SpreadEffect.java @@ -23,7 +23,7 @@ public class SpreadEffect implements IDrainSpotEffect { while (toMove > 0) { BlockPos bestOffset = null; int bestAmount = drain ? Integer.MAX_VALUE : Integer.MIN_VALUE; - for (Direction facing : Direction.VALUES) { + for (Direction facing : Direction.values()) { BlockPos offset = pos.offset(facing, 15); if (world.isBlockLoaded(offset) && offset.getY() >= 0 && offset.getY() <= world.getHeight()) { int amount = IAuraChunk.getAuraInArea(world, offset, 14); @@ -33,7 +33,7 @@ public class SpreadEffect implements IDrainSpotEffect { } } } - if(bestOffset == null) + if (bestOffset == null) break; BlockPos bestPos = drain ? IAuraChunk.getLowestSpot(world, bestOffset, 14, bestOffset) diff --git a/src/main/java/de/ellpeck/naturesaura/compat/patchouli/PatchouliCompat.java b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/PatchouliCompat.java index d236ad24..ebe70d17 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/patchouli/PatchouliCompat.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/PatchouliCompat.java @@ -1,5 +1,6 @@ package de.ellpeck.naturesaura.compat.patchouli; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.naturesaura.ModConfig; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.multiblock.Matcher; @@ -8,15 +9,14 @@ import de.ellpeck.naturesaura.events.ClientEvents; import de.ellpeck.naturesaura.renderers.SupporterFancyHandler; import de.ellpeck.naturesaura.renderers.SupporterFancyHandler.FancyInfo; import net.minecraft.client.gui.AbstractGui; -import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.client.config.GuiUtils; -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.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.client.config.GuiUtils; import vazkii.patchouli.api.BookDrawScreenEvent; import vazkii.patchouli.api.PatchouliAPI; @@ -49,41 +49,41 @@ public final class PatchouliCompat { int y = event.gui.height / 2 - 180 / 2 - 26; RenderHelper.disableStandardItemLighting(); - GlStateManager.color(1, 1, 1, 1); - event.gui.mc.getTextureManager().bindTexture(ClientEvents.BOOK_GUI); - AbstractGui.drawModalRectWithCustomSizedTexture(x, y, 469, 0, 43, 42, 512, 256); + GlStateManager.color4f(1, 1, 1, 1); + event.gui.getMinecraft().getTextureManager().bindTexture(ClientEvents.BOOK_GUI); + AbstractGui.blit(x, y, 469, 0, 43, 42, 512, 256); if (event.mouseX >= x && event.mouseY >= y && event.mouseX < x + 43 && event.mouseY < y + 42) GuiUtils.drawHoveringText( Collections.singletonList(TextFormatting.GOLD + "It's the author Ellpeck's birthday!"), - event.mouseX, event.mouseY, event.gui.width, event.gui.height, 0, event.gui.mc.fontRenderer); + event.mouseX, event.mouseY, event.gui.width, event.gui.height, 0, event.gui.getMinecraft().fontRenderer); } - String name = event.gui.mc.player.getName(); + String name = event.gui.getMinecraft().player.getName().getFormattedText(); FancyInfo info = SupporterFancyHandler.FANCY_INFOS.get(name); if (info != null) { int x = event.gui.width / 2 - 272 / 2 + 20; int y = event.gui.height / 2 + 180 / 2; RenderHelper.disableStandardItemLighting(); - GlStateManager.color(1, 1, 1, 1); - event.gui.mc.getTextureManager().bindTexture(ClientEvents.BOOK_GUI); + GlStateManager.color4f(1, 1, 1, 1); + event.gui.getMinecraft().getTextureManager().bindTexture(ClientEvents.BOOK_GUI); - AbstractGui.drawModalRectWithCustomSizedTexture(x, y, 496, 44, 16, 18, 512, 256); + AbstractGui.blit(x, y, 496, 44, 16, 18, 512, 256); if (info.tier == 1) { - AbstractGui.drawModalRectWithCustomSizedTexture(x, y, 496 - 16, 44, 16, 18, 512, 256); + AbstractGui.blit(x, y, 496 - 16, 44, 16, 18, 512, 256); } else { float r = ((info.color >> 16) & 255) / 255F; float g = ((info.color >> 8) & 255) / 255F; float b = (info.color & 255) / 255F; - GlStateManager.color(r, g, b); - AbstractGui.drawModalRectWithCustomSizedTexture(x, y, 496 - 32, 44, 16, 18, 512, 256); + GlStateManager.color3f(r, g, b); + AbstractGui.blit(x, y, 496 - 32, 44, 16, 18, 512, 256); } if (event.mouseX >= x && event.mouseY >= y && event.mouseX < x + 16 && event.mouseY < y + 18) GuiUtils.drawHoveringText( Collections.singletonList(TextFormatting.YELLOW + "Thanks for your support, " + name + "!"), - event.mouseX, event.mouseY, event.gui.width, event.gui.height, 0, event.gui.mc.fontRenderer); + event.mouseX, event.mouseY, event.gui.width, event.gui.height, 0, event.gui.getMinecraft().fontRenderer); } } diff --git a/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorOffering.java b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorOffering.java index 920cc15b..a7fe4ae6 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorOffering.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorOffering.java @@ -27,7 +27,7 @@ public class ProcessorOffering implements IComponentProcessor { case "start": return PatchouliAPI.instance.serializeIngredient(this.recipe.startItem); 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/ProcessorTreeRitual.java b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorTreeRitual.java index b4be71dc..9276c6d2 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorTreeRitual.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/ProcessorTreeRitual.java @@ -32,7 +32,7 @@ public class ProcessorTreeRitual implements IComponentProcessor { case "sapling": return PatchouliAPI.instance.serializeIngredient(this.recipe.saplingType); case "name": - return this.recipe.result.getDisplayName(); + return this.recipe.result.getDisplayName().getFormattedText(); default: return null; } diff --git a/src/main/java/de/ellpeck/naturesaura/entities/EntityEffectInhibitor.java b/src/main/java/de/ellpeck/naturesaura/entities/EntityEffectInhibitor.java index eef9afdc..8b54f685 100644 --- a/src/main/java/de/ellpeck/naturesaura/entities/EntityEffectInhibitor.java +++ b/src/main/java/de/ellpeck/naturesaura/entities/EntityEffectInhibitor.java @@ -10,8 +10,10 @@ import de.ellpeck.naturesaura.items.EffectPowder; import de.ellpeck.naturesaura.items.ModItems; import de.ellpeck.naturesaura.misc.WorldData; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.network.IPacket; import net.minecraft.network.datasync.DataParameter; import net.minecraft.network.datasync.DataSerializers; import net.minecraft.network.datasync.EntityDataManager; @@ -37,18 +39,18 @@ public class EntityEffectInhibitor extends Entity implements IVisualizable { @OnlyIn(Dist.CLIENT) public int renderTicks; - public EntityEffectInhibitor(World worldIn) { - super(worldIn); + public EntityEffectInhibitor(EntityType entityTypeIn, World worldIn) { + super(entityTypeIn, worldIn); } public static void place(World world, ItemStack stack, double posX, double posY, double posZ) { ResourceLocation effect = EffectPowder.getEffect(stack); - EntityEffectInhibitor entity = new EntityEffectInhibitor(world); + EntityEffectInhibitor entity = new EntityEffectInhibitor(ModEntities.EFFECT_INHIBITOR, world); entity.setInhibitedEffect(effect); entity.setColor(NaturesAuraAPI.EFFECT_POWDERS.get(effect)); entity.setAmount(stack.getCount()); entity.setPosition(posX, posY, posZ); - world.spawnEntity(entity); + world.addEntity(entity); } @Override @@ -63,6 +65,13 @@ public class EntityEffectInhibitor extends Entity implements IVisualizable { super.onRemovedFromWorld(); } + @Override + protected void registerData() { + this.dataManager.register(INHIBITED_EFFECT, null); + this.dataManager.register(COLOR, 0); + this.dataManager.register(AMOUNT, 0); + } + @Override public void setPosition(double x, double y, double z) { boolean should = x != this.posX || y != this.posY || z != this.posZ; @@ -86,7 +95,7 @@ public class EntityEffectInhibitor extends Entity implements IVisualizable { List> powders = this.getPowderList(); Vec3d pos = this.getPositionVector(); for (int i = 0; i < powders.size(); i++) - if (pos.equals(powders.get(i).getFirst())) { + if (pos.equals(powders.get(i).getA())) { powders.remove(i); break; } @@ -98,31 +107,10 @@ public class EntityEffectInhibitor extends Entity implements IVisualizable { } @Override - protected void entityInit() { - this.setSize(0.25F, 0.25F); - this.dataManager.register(INHIBITED_EFFECT, null); - this.dataManager.register(COLOR, 0); - this.dataManager.register(AMOUNT, 0); - } - - @Override - protected void readEntityFromNBT(CompoundNBT compound) { - this.setInhibitedEffect(new ResourceLocation(compound.getString("effect"))); - this.setColor(compound.getInteger("color")); - this.setAmount(compound.hasKey("amount") ? compound.getInteger("amount") : 24); - } - - @Override - protected void writeEntityToNBT(CompoundNBT compound) { - compound.setString("effect", this.getInhibitedEffect().toString()); - compound.setInteger("color", this.getColor()); - compound.setInteger("amount", this.getAmount()); - } - - @Override - public void onEntityUpdate() { + public void tick() { + super.tick(); if (this.world.isRemote) { - if (this.world.getTotalWorldTime() % 5 == 0) { + if (this.world.getGameTime() % 5 == 0) { NaturesAura.proxy.spawnMagicParticle( this.posX + this.world.rand.nextGaussian() * 0.1F, this.posY, @@ -141,10 +129,29 @@ public class EntityEffectInhibitor extends Entity implements IVisualizable { return true; } + @Override + protected void readAdditional(CompoundNBT compound) { + this.setInhibitedEffect(new ResourceLocation(compound.getString("effect"))); + this.setColor(compound.getInt("color")); + this.setAmount(compound.contains("amount") ? compound.getInt("amount") : 24); + } + + @Override + protected void writeAdditional(CompoundNBT compound) { + compound.putString("effect", this.getInhibitedEffect().toString()); + compound.putInt("color", this.getColor()); + compound.putInt("amount", this.getAmount()); + } + + @Override + public IPacket createSpawnPacket() { + return null; + } + @Override public boolean attackEntityFrom(DamageSource source, float amount) { if (source instanceof EntityDamageSource && !this.world.isRemote) { - this.setDead(); + this.remove(); this.entityDropItem(this.getDrop(), 0F); return true; } else diff --git a/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java b/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java index e92d882e..6283e9fe 100644 --- a/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java +++ b/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java @@ -2,24 +2,25 @@ package de.ellpeck.naturesaura.entities; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; 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.Entity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; import net.minecraft.block.Blocks; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.item.minecart.AbstractMinecartEntity; 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.nbt.LongNBT; import net.minecraft.util.DamageSource; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.GameRules; import net.minecraft.world.World; +import net.minecraft.world.dimension.DimensionType; import net.minecraftforge.common.util.Constants; -import net.minecraftforge.common.util.ITeleporter; import javax.annotation.Nullable; import java.util.ArrayList; @@ -28,15 +29,15 @@ import java.util.List; public class EntityMoverMinecart extends AbstractMinecartEntity { private final List spotOffsets = new ArrayList<>(); - private BlockPos lastPosition = BlockPos.ORIGIN; + private BlockPos lastPosition = BlockPos.ZERO; public boolean isActive; - public EntityMoverMinecart(World worldIn) { - super(worldIn); + public EntityMoverMinecart(EntityType type, World world) { + super(type, world); } - public EntityMoverMinecart(World worldIn, double x, double y, double z) { - super(worldIn, x, y, z); + public EntityMoverMinecart(EntityType type, World world, double x, double y, double z) { + super(type, world, x, y, z); } @Override @@ -46,13 +47,14 @@ public class EntityMoverMinecart extends AbstractMinecartEntity { return; BlockPos pos = this.getPosition(); - if (!this.spotOffsets.isEmpty() && this.world.getTotalWorldTime() % 10 == 0) - PacketHandler.sendToAllAround(this.world, pos, 32, new PacketParticles( + if (!this.spotOffsets.isEmpty() && this.world.getGameTime() % 10 == 0) + // TODO particles + /*PacketHandler.sendToAllAround(this.world, pos, 32, new PacketParticles( (float) this.posX, (float) this.posY, (float) this.posZ, 22, - MathHelper.floor(this.motionX * 100F), MathHelper.floor(this.motionY * 100F), MathHelper.floor(this.motionZ * 100F))); + MathHelper.floor(this.motionX * 100F), MathHelper.floor(this.motionY * 100F), MathHelper.floor(this.motionZ * 100F)));*/ - if (pos.distanceSq(this.lastPosition) < 8 * 8) - return; + if (pos.distanceSq(this.lastPosition) < 8 * 8) + return; this.moveAura(this.world, this.lastPosition, this.world, pos); this.lastPosition = pos; @@ -82,7 +84,7 @@ public class EntityMoverMinecart extends AbstractMinecartEntity { if (!this.isActive) { this.spotOffsets.clear(); - this.lastPosition = BlockPos.ORIGIN; + this.lastPosition = BlockPos.ZERO; return; } @@ -97,39 +99,40 @@ public class EntityMoverMinecart extends AbstractMinecartEntity { @Override public void killMinecart(DamageSource source) { - this.setDead(); - if (this.world.getGameRules().getBoolean("doEntityDrops")) + this.remove(); + if (this.world.getGameRules().getBoolean(GameRules.DO_ENTITY_DROPS)) this.entityDropItem(new ItemStack(ModItems.MOVER_MINECART), 0); } @Override - protected void writeEntityToNBT(CompoundNBT compound) { - super.writeEntityToNBT(compound); - compound.setBoolean("active", this.isActive); - compound.setLong("last_pos", this.lastPosition.toLong()); + public CompoundNBT serializeNBT() { + CompoundNBT compound = super.serializeNBT(); + compound.putBoolean("active", this.isActive); + compound.putLong("last_pos", this.lastPosition.toLong()); ListNBT list = new ListNBT(); for (BlockPos offset : this.spotOffsets) - list.appendTag(new LongNBT(offset.toLong())); - compound.setTag("offsets", list); + list.add(new LongNBT(offset.toLong())); + compound.put("offsets", list); + return compound; } @Override - protected void readEntityFromNBT(CompoundNBT compound) { - super.readEntityFromNBT(compound); + public void deserializeNBT(CompoundNBT compound) { + super.deserializeNBT(compound); this.isActive = compound.getBoolean("active"); this.lastPosition = BlockPos.fromLong(compound.getLong("last_pos")); this.spotOffsets.clear(); - ListNBT list = compound.getTagList("offsets", Constants.NBT.TAG_LONG); - for (NBTBase base : list) + ListNBT list = compound.getList("offsets", Constants.NBT.TAG_LONG); + for (INBT base : list) this.spotOffsets.add(BlockPos.fromLong(((LongNBT) base).getLong())); } @Nullable @Override - public Entity changeDimension(int dimensionIn, ITeleporter teleporter) { - Entity entity = super.changeDimension(dimensionIn, teleporter); + public Entity changeDimension(DimensionType destination) { + Entity entity = super.changeDimension(destination); if (entity instanceof EntityMoverMinecart) { BlockPos pos = entity.getPosition(); this.moveAura(this.world, this.lastPosition, entity.world, pos); @@ -144,7 +147,7 @@ public class EntityMoverMinecart extends AbstractMinecartEntity { } @Override - public Type getType() { + public Type getMinecartType() { return Type.RIDEABLE; } @@ -165,8 +168,8 @@ public class EntityMoverMinecart extends AbstractMinecartEntity { @Override protected void applyDrag() { - this.motionX *= 0.99F; - this.motionY *= 0.0D; - this.motionZ *= 0.99F; + Vec3d motion = this.getMotion(); + this.setMotion(motion.x * 0.99F, 0, motion.z * 0.99F); } + } diff --git a/src/main/java/de/ellpeck/naturesaura/entities/render/RenderEffectInhibitor.java b/src/main/java/de/ellpeck/naturesaura/entities/render/RenderEffectInhibitor.java index d686cdc2..0faac266 100644 --- a/src/main/java/de/ellpeck/naturesaura/entities/render/RenderEffectInhibitor.java +++ b/src/main/java/de/ellpeck/naturesaura/entities/render/RenderEffectInhibitor.java @@ -1,10 +1,10 @@ package de.ellpeck.naturesaura.entities.render; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.entities.EntityEffectInhibitor; import de.ellpeck.naturesaura.items.EffectPowder; import de.ellpeck.naturesaura.items.ModItems; -import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.client.renderer.texture.AtlasTexture; @@ -37,9 +37,9 @@ public class RenderEffectInhibitor extends EntityRenderer GlStateManager.pushMatrix(); float time = entity.renderTicks + entity.getEntityId() + partialTicks; float bob = (float) Math.sin(time / 10F) * 0.05F; - GlStateManager.translate(x, y + 0.15F + bob, z); - GlStateManager.rotate((time * 3) % 360, 0F, 1F, 0F); - GlStateManager.scale(0.5F, 0.5F, 0.5F); + GlStateManager.translated(x, y + 0.15F + bob, z); + GlStateManager.rotatef((time * 3) % 360, 0F, 1F, 0F); + GlStateManager.scalef(0.5F, 0.5F, 0.5F); ResourceLocation effect = entity.getInhibitedEffect(); Helper.renderItemInWorld(this.items.computeIfAbsent(effect, res -> EffectPowder.setEffect(new ItemStack(ModItems.EFFECT_POWDER), effect))); diff --git a/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAncientTree.java b/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAncientTree.java index 2563374e..d7241e3f 100644 --- a/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAncientTree.java +++ b/src/main/java/de/ellpeck/naturesaura/gen/WorldGenAncientTree.java @@ -1,19 +1,19 @@ +/* TODO World gen package de.ellpeck.naturesaura.gen; import de.ellpeck.naturesaura.blocks.ModBlocks; -import net.minecraft.block.Block; -import net.minecraft.block.LeavesBlock; -import net.minecraft.block.LogBlock; +import net.minecraft.block.*; import net.minecraft.block.BlockLog.EnumAxis; import net.minecraft.block.material.Material; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.MutableBoundingBox; import net.minecraft.world.World; +import net.minecraft.world.gen.IWorldGenerationReader; import net.minecraft.world.gen.feature.AbstractTreeFeature; import java.util.Random; +import java.util.Set; public class WorldGenAncientTree extends AbstractTreeFeature { @@ -22,7 +22,7 @@ public class WorldGenAncientTree extends AbstractTreeFeature { } @Override - public boolean generate(World world, Random rand, BlockPos pos) { + protected boolean place(Set changedBlocks, IWorldGenerationReader world, Random rand, BlockPos pos, MutableBoundingBox box) { int height = rand.nextInt(3) + 5; BlockPos trunkTop = pos.up(height); @@ -140,4 +140,4 @@ public class WorldGenAncientTree extends AbstractTreeFeature { } return axis; } -} \ No newline at end of file +}*/ diff --git a/src/main/java/de/ellpeck/naturesaura/gui/ContainerEnderCrate.java b/src/main/java/de/ellpeck/naturesaura/gui/ContainerEnderCrate.java index d07cc25d..8a39a698 100644 --- a/src/main/java/de/ellpeck/naturesaura/gui/ContainerEnderCrate.java +++ b/src/main/java/de/ellpeck/naturesaura/gui/ContainerEnderCrate.java @@ -2,6 +2,7 @@ package de.ellpeck.naturesaura.gui; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.container.Container; +import net.minecraft.inventory.container.ContainerType; import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; import net.minecraftforge.items.IItemHandler; @@ -9,16 +10,17 @@ import net.minecraftforge.items.SlotItemHandler; public class ContainerEnderCrate extends Container { - public ContainerEnderCrate(PlayerEntity player, IItemHandler handler) { + public ContainerEnderCrate(ContainerType type, int id, PlayerEntity player, IItemHandler handler) { + super(type, id); int i = (3 - 4) * 18; for (int j = 0; j < 3; ++j) for (int k = 0; k < 9; ++k) - this.addSlotToContainer(new SlotItemHandler(handler, k + j * 9, 8 + k * 18, 18 + j * 18)); + this.addSlot(new SlotItemHandler(handler, k + j * 9, 8 + k * 18, 18 + j * 18)); for (int l = 0; l < 3; ++l) for (int j1 = 0; j1 < 9; ++j1) - this.addSlotToContainer(new Slot(player.inventory, j1 + l * 9 + 9, 8 + j1 * 18, 103 + l * 18 + i)); + this.addSlot(new Slot(player.inventory, j1 + l * 9 + 9, 8 + j1 * 18, 103 + l * 18 + i)); for (int i1 = 0; i1 < 9; ++i1) - this.addSlotToContainer(new Slot(player.inventory, i1, 8 + i1 * 18, 161 + i)); + this.addSlot(new Slot(player.inventory, i1, 8 + i1 * 18, 161 + i)); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/gui/GuiEnderCrate.java b/src/main/java/de/ellpeck/naturesaura/gui/GuiEnderCrate.java index e1816313..a9c95638 100644 --- a/src/main/java/de/ellpeck/naturesaura/gui/GuiEnderCrate.java +++ b/src/main/java/de/ellpeck/naturesaura/gui/GuiEnderCrate.java @@ -1,11 +1,13 @@ package de.ellpeck.naturesaura.gui; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.naturesaura.NaturesAura; import net.minecraft.client.gui.screen.inventory.ContainerScreen; -import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.container.ContainerType; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.StringTextComponent; import net.minecraft.util.text.TextFormatting; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -18,36 +20,35 @@ public class GuiEnderCrate extends ContainerScreen { private final String nameKey; private final String name; - public GuiEnderCrate(PlayerEntity player, IItemHandler handler, String nameKey, String name) { - super(new ContainerEnderCrate(player, handler)); + public GuiEnderCrate(ContainerType type, int id, PlayerEntity player, IItemHandler handler, String nameKey, String name) { + super(new ContainerEnderCrate(type, id, player, handler), player.inventory, new StringTextComponent("")); this.player = player; this.nameKey = nameKey; this.name = name; - this.allowUserInput = false; this.ySize = 114 + 3 * 18; } @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - this.drawDefaultBackground(); - super.drawScreen(mouseX, mouseY, partialTicks); + public void render(int mouseX, int mouseY, float partialTicks) { + this.renderBackground(); + super.render(mouseX, mouseY, partialTicks); this.renderHoveredToolTip(mouseX, mouseY); } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { String display = I18n.format("info." + NaturesAura.MOD_ID + "." + this.nameKey, TextFormatting.ITALIC + this.name + TextFormatting.RESET); - this.fontRenderer.drawString(display, 8, 6, 4210752); - this.fontRenderer.drawString(this.player.inventory.getDisplayName().getFormattedText(), 8, this.ySize - 96 + 2, 4210752); + this.font.drawString(display, 8, 6, 4210752); + this.font.drawString(this.player.inventory.getDisplayName().getFormattedText(), 8, this.ySize - 96 + 2, 4210752); } @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { - GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.getTextureManager().bindTexture(CHEST_GUI_TEXTURE); + GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); + this.getMinecraft().getTextureManager().bindTexture(CHEST_GUI_TEXTURE); int i = (this.width - this.xSize) / 2; int j = (this.height - this.ySize) / 2; - this.drawTexturedModalRect(i, j, 0, 0, this.xSize, 3 * 18 + 17); - this.drawTexturedModalRect(i, j + 3 * 18 + 17, 0, 126, this.xSize, 96); + this.blit(i, j, 0, 0, this.xSize, 3 * 18 + 17); + this.blit(i, j + 3 * 18 + 17, 0, 126, this.xSize, 96); } } \ No newline at end of file diff --git a/src/main/java/de/ellpeck/naturesaura/gui/GuiHandler.java b/src/main/java/de/ellpeck/naturesaura/gui/GuiHandler.java index 43a86bbb..17a42596 100644 --- a/src/main/java/de/ellpeck/naturesaura/gui/GuiHandler.java +++ b/src/main/java/de/ellpeck/naturesaura/gui/GuiHandler.java @@ -1,6 +1,7 @@ +/* TODO gui handler + package de.ellpeck.naturesaura.gui; -import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.misc.IWorldData; import de.ellpeck.naturesaura.blocks.BlockEnderCrate; import de.ellpeck.naturesaura.blocks.tiles.TileEntityEnderCrate; @@ -11,14 +12,13 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; -import net.minecraftforge.fml.common.network.NetworkRegistry; import javax.annotation.Nullable; public class GuiHandler implements IGuiHandler { public GuiHandler() { - NetworkRegistry.INSTANCE.registerGuiHandler(NaturesAura.MOD_ID, this); + //NetworkRegistry.registerGuiHandler(NaturesAura.MOD_ID, this); } @Nullable @@ -63,3 +63,4 @@ public class GuiHandler implements IGuiHandler { return null; } } +*/ diff --git a/src/main/java/de/ellpeck/naturesaura/items/MoverMinecart.java b/src/main/java/de/ellpeck/naturesaura/items/MoverMinecart.java index da0be216..377c0535 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/MoverMinecart.java +++ b/src/main/java/de/ellpeck/naturesaura/items/MoverMinecart.java @@ -2,13 +2,11 @@ package de.ellpeck.naturesaura.items; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.entities.EntityMoverMinecart; +import de.ellpeck.naturesaura.entities.ModEntities; import net.minecraft.block.AbstractRailBlock; import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemUseContext; import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -27,7 +25,7 @@ public class MoverMinecart extends ItemImpl { BlockPos pos = context.getPos(); if (AbstractRailBlock.isRail(world.getBlockState(pos))) { if (!world.isRemote) { - AbstractMinecartEntity cart = new EntityMoverMinecart(world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5); + AbstractMinecartEntity cart = new EntityMoverMinecart(ModEntities.MOVER_MINECART, world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5); world.addEntity(cart); } context.getPlayer().getHeldItem(context.getHand()).shrink(1); diff --git a/src/main/java/de/ellpeck/naturesaura/misc/WorldData.java b/src/main/java/de/ellpeck/naturesaura/misc/WorldData.java index c8432f50..8d4bb114 100644 --- a/src/main/java/de/ellpeck/naturesaura/misc/WorldData.java +++ b/src/main/java/de/ellpeck/naturesaura/misc/WorldData.java @@ -8,14 +8,15 @@ import de.ellpeck.naturesaura.api.misc.IWorldData; import de.ellpeck.naturesaura.blocks.tiles.ItemStackHandlerNA; import de.ellpeck.naturesaura.items.ModItems; 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.util.Direction; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Tuple; import net.minecraft.util.math.Vec3d; import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -26,15 +27,10 @@ public class WorldData implements IWorldData { private final Map enderStorages = new HashMap<>(); public final ListMultimap> effectPowders = ArrayListMultimap.create(); - @Override - public boolean hasCapability(@Nonnull Capability capability, @Nullable Direction facing) { - return capability == NaturesAuraAPI.capWorldData; - } - @Nullable @Override - public T getCapability(@Nonnull Capability capability, @Nullable Direction facing) { - return capability == NaturesAuraAPI.capWorldData ? (T) this : null; + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction facing) { + return capability == NaturesAuraAPI.capWorldData ? LazyOptional.of(() -> (T) this) : LazyOptional.empty(); } @Override @@ -47,10 +43,10 @@ public class WorldData implements IWorldData { if (Helper.isEmpty(handler)) continue; CompoundNBT storageComp = handler.serializeNBT(); - storageComp.setString("name", entry.getKey()); - storages.appendTag(storageComp); + storageComp.putString("name", entry.getKey()); + storages.add(storageComp); } - compound.setTag("storages", storages); + compound.put("storages", storages); return compound; } @@ -58,8 +54,8 @@ public class WorldData implements IWorldData { @Override public void deserializeNBT(CompoundNBT compound) { this.enderStorages.clear(); - ListNBT storages = compound.getTagList("storages", 10); - for (NBTBase base : storages) { + ListNBT storages = compound.getList("storages", 10); + for (INBT base : storages) { CompoundNBT storageComp = (CompoundNBT) base; ItemStackHandlerNA storage = this.getEnderStorage(storageComp.getString("name")); storage.deserializeNBT(storageComp); diff --git a/src/main/java/de/ellpeck/naturesaura/particles/ParticleHandler.java b/src/main/java/de/ellpeck/naturesaura/particles/ParticleHandler.java index 05f8509f..21fc7ba1 100644 --- a/src/main/java/de/ellpeck/naturesaura/particles/ParticleHandler.java +++ b/src/main/java/de/ellpeck/naturesaura/particles/ParticleHandler.java @@ -1,14 +1,15 @@ package de.ellpeck.naturesaura.particles; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.naturesaura.ModConfig; import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.particle.Particle; import net.minecraft.client.renderer.ActiveRenderInfo; import net.minecraft.client.renderer.BufferBuilder; -import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.math.MathHelper; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import org.lwjgl.opengl.GL11; @@ -65,23 +66,22 @@ public final class ParticleHandler { public static void renderParticles(float partialTicks) { Minecraft mc = Minecraft.getInstance(); - PlayerEntity player = mc.player; + ClientPlayerEntity player = mc.player; if (player != null) { - float x = ActiveRenderInfo.getRotationX(); - float z = ActiveRenderInfo.getRotationZ(); - float yz = ActiveRenderInfo.getRotationYZ(); - float xy = ActiveRenderInfo.getRotationXY(); - float xz = ActiveRenderInfo.getRotationXZ(); - - Particle.interpPosX = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialTicks; - Particle.interpPosY = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialTicks; - Particle.interpPosZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTicks; - Particle.dir = player.getLook(partialTicks); + ActiveRenderInfo info = mc.gameRenderer.getActiveRenderInfo(); + float f = MathHelper.cos(info.getYaw() * ((float) Math.PI / 180F)); + float f1 = MathHelper.sin(info.getYaw() * ((float) Math.PI / 180F)); + float f2 = -f1 * MathHelper.sin(info.getPitch() * ((float) Math.PI / 180F)); + float f3 = f * MathHelper.sin(info.getPitch() * ((float) Math.PI / 180F)); + float f4 = MathHelper.cos(info.getPitch() * ((float) Math.PI / 180F)); + Particle.interpPosX = info.getProjectedView().x; + Particle.interpPosY = info.getProjectedView().y; + Particle.interpPosZ = info.getProjectedView().z; GlStateManager.pushMatrix(); - GlStateManager.enableAlpha(); + GlStateManager.enableAlphaTest(); GlStateManager.enableBlend(); GlStateManager.alphaFunc(516, 0.003921569F); GlStateManager.disableCull(); @@ -95,15 +95,15 @@ public final class ParticleHandler { buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.PARTICLE_POSITION_TEX_COLOR_LMAP); for (Particle particle : PARTICLES) - particle.renderParticle(buffer, player, partialTicks, x, xz, z, yz, xy); + particle.renderParticle(buffer, info, partialTicks, f, f4, f1, f2, f3); tessy.draw(); - GlStateManager.disableDepth(); + GlStateManager.disableDepthTest(); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.PARTICLE_POSITION_TEX_COLOR_LMAP); for (Particle particle : PARTICLES_NO_DEPTH) - particle.renderParticle(buffer, player, partialTicks, x, xz, z, yz, xy); + particle.renderParticle(buffer, info, partialTicks, f, f4, f1, f2, f3); tessy.draw(); - GlStateManager.enableDepth(); + GlStateManager.enableDepthTest(); GlStateManager.enableCull(); GlStateManager.depthMask(true); diff --git a/src/main/java/de/ellpeck/naturesaura/particles/ParticleMagic.java b/src/main/java/de/ellpeck/naturesaura/particles/ParticleMagic.java index 1c9675f0..bed90c80 100644 --- a/src/main/java/de/ellpeck/naturesaura/particles/ParticleMagic.java +++ b/src/main/java/de/ellpeck/naturesaura/particles/ParticleMagic.java @@ -1,9 +1,10 @@ package de.ellpeck.naturesaura.particles; import de.ellpeck.naturesaura.NaturesAura; +import net.minecraft.client.particle.IParticleRenderType; import net.minecraft.client.particle.Particle; +import net.minecraft.client.renderer.ActiveRenderInfo; import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; @@ -16,11 +17,12 @@ public class ParticleMagic extends Particle { private final float desiredScale; private final boolean fade; + private float particleScale; public ParticleMagic(World world, double posX, double posY, double posZ, double motionX, double motionY, double motionZ, int color, float scale, int maxAge, float gravity, boolean collision, boolean fade) { super(world, posX, posY, posZ); this.desiredScale = scale; - this.particleMaxAge = maxAge; + this.maxAge = maxAge; this.canCollide = collision; this.particleGravity = gravity; this.fade = fade; @@ -32,26 +34,26 @@ public class ParticleMagic extends Particle { float r = (((color >> 16) & 255) / 255F) * (1F - this.rand.nextFloat() * 0.25F); float g = (((color >> 8) & 255) / 255F) * (1F - this.rand.nextFloat() * 0.25F); float b = ((color & 255) / 255F) * (1F - this.rand.nextFloat() * 0.25F); - this.setRBGColorF(r, g, b); + this.setColor(r, g, b); this.particleAlpha = 1F; this.particleScale = 0F; } @Override - public void onUpdate() { + public void tick() { this.prevPosX = this.posX; this.prevPosY = this.posY; this.prevPosZ = this.posZ; - this.particleAge++; - if (this.particleAge > this.particleMaxAge) { + this.age++; + if (this.age > this.maxAge) { this.setExpired(); } else { this.motionY -= 0.04D * (double) this.particleGravity; this.move(this.motionX, this.motionY, this.motionZ); - float lifeRatio = (float) this.particleAge / (float) this.particleMaxAge; + float lifeRatio = (float) this.age / (float) this.maxAge; if (this.fade && lifeRatio > 0.75F) this.particleAlpha = 1F - (lifeRatio - 0.75F) / 0.25F; if (lifeRatio <= 0.25F) @@ -62,7 +64,7 @@ public class ParticleMagic extends Particle { } @Override - public void renderParticle(BufferBuilder buffer, Entity entityIn, float partialTicks, float rotationX, float rotationZ, float rotationYZ, float rotationXY, float rotationXZ) { + public void renderParticle(BufferBuilder buffer, ActiveRenderInfo entityIn, float partialTicks, float rotationX, float rotationZ, float rotationYZ, float rotationXY, float rotationXZ) { double x = this.prevPosX + (this.posX - this.prevPosX) * partialTicks - interpPosX; double y = this.prevPosY + (this.posY - this.prevPosY) * partialTicks - interpPosY; double z = this.prevPosZ + (this.posZ - this.prevPosZ) * partialTicks - interpPosZ; @@ -86,6 +88,11 @@ public class ParticleMagic extends Particle { .lightmap(sky, block).endVertex(); } + @Override + public IParticleRenderType getRenderType() { + return IParticleRenderType.CUSTOM; + } + @Override public int getBrightnessForRender(float f) { return 15 << 20 | 15 << 4; diff --git a/src/main/java/de/ellpeck/naturesaura/potion/ModPotions.java b/src/main/java/de/ellpeck/naturesaura/potion/ModPotions.java index 79934134..75a0123f 100644 --- a/src/main/java/de/ellpeck/naturesaura/potion/ModPotions.java +++ b/src/main/java/de/ellpeck/naturesaura/potion/ModPotions.java @@ -1,9 +1,13 @@ package de.ellpeck.naturesaura.potion; +import de.ellpeck.naturesaura.NaturesAura; import net.minecraft.potion.Effect; +import net.minecraftforge.registries.ObjectHolder; +@SuppressWarnings("FieldNamingConvention") +@ObjectHolder(NaturesAura.MOD_ID) public final class ModPotions { - public static final Effect BREATHLESS = new PotionBreathless().setIconIndex(0, 0); + public static Effect BREATHLESS; } diff --git a/src/main/java/de/ellpeck/naturesaura/potion/PotionBreathless.java b/src/main/java/de/ellpeck/naturesaura/potion/PotionBreathless.java index 824d928c..abaeef41 100644 --- a/src/main/java/de/ellpeck/naturesaura/potion/PotionBreathless.java +++ b/src/main/java/de/ellpeck/naturesaura/potion/PotionBreathless.java @@ -2,6 +2,7 @@ package de.ellpeck.naturesaura.potion; import net.minecraft.entity.LivingEntity; import net.minecraft.potion.EffectInstance; +import net.minecraft.potion.EffectType; import net.minecraft.util.DamageSource; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingHealEvent; @@ -13,8 +14,8 @@ public class PotionBreathless extends PotionImpl { private final Random random = new Random(); - protected PotionBreathless() { - super("breathless", true, 0); + public PotionBreathless() { + super("breathless", EffectType.HARMFUL, 0); MinecraftForge.EVENT_BUS.register(this); } diff --git a/src/main/java/de/ellpeck/naturesaura/potion/PotionImpl.java b/src/main/java/de/ellpeck/naturesaura/potion/PotionImpl.java index a31ceda7..e2b7f778 100644 --- a/src/main/java/de/ellpeck/naturesaura/potion/PotionImpl.java +++ b/src/main/java/de/ellpeck/naturesaura/potion/PotionImpl.java @@ -3,27 +3,24 @@ package de.ellpeck.naturesaura.potion; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.reg.IModItem; import de.ellpeck.naturesaura.reg.ModRegistry; -import net.minecraft.client.Minecraft; import net.minecraft.potion.Effect; +import net.minecraft.potion.EffectType; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.common.event.FMLInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; public class PotionImpl extends Effect implements IModItem { private static final ResourceLocation TEXTURE = new ResourceLocation(NaturesAura.MOD_ID, "textures/gui/potions.png"); protected final String baseName; - protected PotionImpl(String baseName, boolean isBadEffectIn, int liquidColorIn) { - super(isBadEffectIn, liquidColorIn); + protected PotionImpl(String baseName, EffectType type, int liquidColorIn) { + super(type, liquidColorIn); this.baseName = baseName; ModRegistry.add(this); } + /* TODO potion textures + @Override public Effect setIconIndex(int x, int y) { return super.setIconIndex(x, y); @@ -34,25 +31,10 @@ public class PotionImpl extends Effect implements IModItem { public int getStatusIconIndex() { Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURE); return super.getStatusIconIndex(); - } + }*/ @Override public String getBaseName() { return this.baseName; } - - @Override - public void onPreInit(FMLPreInitializationEvent event) { - - } - - @Override - public void onInit(FMLInitializationEvent event) { - - } - - @Override - public void onPostInit(FMLPostInitializationEvent event) { - - } } diff --git a/src/main/java/de/ellpeck/naturesaura/proxy/ClientProxy.java b/src/main/java/de/ellpeck/naturesaura/proxy/ClientProxy.java index 65b97398..0dc9160e 100644 --- a/src/main/java/de/ellpeck/naturesaura/proxy/ClientProxy.java +++ b/src/main/java/de/ellpeck/naturesaura/proxy/ClientProxy.java @@ -20,7 +20,6 @@ import net.minecraft.entity.Entity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.Tuple; -import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.IRenderFactory; @@ -41,9 +40,8 @@ public class ClientProxy implements IProxy { @Override public void init(FMLCommonSetupEvent event) { Map skinMap = Minecraft.getInstance().getRenderManager().getSkinMap(); - for (PlayerRenderer render : new PlayerRenderer[]{skinMap.get("default"), skinMap.get("slim")}) { - render.addLayer(new PlayerLayerTrinkets()); - } + for (PlayerRenderer render : new PlayerRenderer[]{skinMap.get("default"), skinMap.get("slim")}) + render.addLayer(new PlayerLayerTrinkets(render)); new SupporterFancyHandler(); } diff --git a/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java b/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java index 04bae015..04a6240b 100644 --- a/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java +++ b/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java @@ -3,11 +3,16 @@ package de.ellpeck.naturesaura.reg; import de.ellpeck.naturesaura.ModConfig; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.blocks.*; +import de.ellpeck.naturesaura.entities.EntityEffectInhibitor; +import de.ellpeck.naturesaura.entities.EntityMoverMinecart; import de.ellpeck.naturesaura.items.*; import de.ellpeck.naturesaura.items.tools.*; +import de.ellpeck.naturesaura.potion.PotionBreathless; import net.minecraft.block.Block; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; @@ -148,14 +153,30 @@ public final class ModRegistry { @SubscribeEvent public static void registerTiles(RegistryEvent.Register> event) { - + for (IModItem item : ALL_ITEMS) { + if (item instanceof BlockContainerImpl) + event.getRegistry().register(((BlockContainerImpl) item).tileType.setRegistryName(item.getBaseName())); + } } @SubscribeEvent public static void registerPotions(RegistryEvent.Register event) { - + event.getRegistry().registerAll( + new PotionBreathless() + ); + } + + @SubscribeEvent + public static void registerEntities(RegistryEvent.Register> event) { + event.getRegistry().registerAll( + EntityType.Builder.create(EntityMoverMinecart::new, EntityClassification.MISC) + .setTrackingRange(64).setUpdateInterval(3).immuneToFire().build(NaturesAura.MOD_ID + ":mover_minecart") + .setRegistryName("mover_cart"), + EntityType.Builder.create(EntityEffectInhibitor::new, EntityClassification.MISC) + .setTrackingRange(64).setUpdateInterval(20).immuneToFire().build(NaturesAura.MOD_ID + ":effect_inhibitor") + .setRegistryName("effect_inhibitor") + ); } - /* private static void registerPotion(Effect potion, String name) { potion.setRegistryName("potion." + NaturesAura.MOD_ID + "." + name + ".name"); diff --git a/src/main/java/de/ellpeck/naturesaura/renderers/PlayerLayerTrinkets.java b/src/main/java/de/ellpeck/naturesaura/renderers/PlayerLayerTrinkets.java index 56b47162..99149dd8 100644 --- a/src/main/java/de/ellpeck/naturesaura/renderers/PlayerLayerTrinkets.java +++ b/src/main/java/de/ellpeck/naturesaura/renderers/PlayerLayerTrinkets.java @@ -1,30 +1,34 @@ package de.ellpeck.naturesaura.renderers; -import baubles.api.BaublesApi; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.naturesaura.api.render.ITrinketItem; import de.ellpeck.naturesaura.api.render.ITrinketItem.RenderType; -import de.ellpeck.naturesaura.compat.Compat; -import com.mojang.blaze3d.platform.GlStateManager; +import net.minecraft.client.entity.player.AbstractClientPlayerEntity; +import net.minecraft.client.renderer.entity.IEntityRenderer; import net.minecraft.client.renderer.entity.layers.LayerRenderer; +import net.minecraft.client.renderer.entity.model.PlayerModel; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.potion.Effects; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.potion.Effects; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.items.IItemHandler; import javax.annotation.Nonnull; import java.util.HashSet; import java.util.Set; @OnlyIn(Dist.CLIENT) -public class PlayerLayerTrinkets implements LayerRenderer { +public class PlayerLayerTrinkets extends LayerRenderer> { private final Set alreadyRendered = new HashSet<>(); + public PlayerLayerTrinkets(IEntityRenderer> entityRendererIn) { + super(entityRendererIn); + } + @Override - public void doRenderLayer(@Nonnull PlayerEntity player, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale) { + public void render(@Nonnull AbstractClientPlayerEntity player, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale) { if (player.getActivePotionEffect(Effects.INVISIBILITY) != null) return; ItemStack main = player.getHeldItemMainhand(); @@ -32,14 +36,14 @@ public class PlayerLayerTrinkets implements LayerRenderer { this.alreadyRendered.clear(); GlStateManager.pushMatrix(); - GlStateManager.color(1F, 1F, 1F, 1F); + GlStateManager.color4f(1F, 1F, 1F, 1F); this.render(player, RenderType.BODY, main, second); float yaw = player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * partialTicks; float yawOffset = player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * partialTicks; float pitch = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * partialTicks; - GlStateManager.rotate(yawOffset, 0, -1, 0); - GlStateManager.rotate(yaw - 270, 0, 1, 0); - GlStateManager.rotate(pitch, 0, 0, 1); + GlStateManager.rotatef(yawOffset, 0, -1, 0); + GlStateManager.rotatef(yaw - 270, 0, 1, 0); + GlStateManager.rotatef(pitch, 0, 0, 1); this.render(player, RenderType.HEAD, main, second); GlStateManager.popMatrix(); @@ -50,12 +54,12 @@ public class PlayerLayerTrinkets implements LayerRenderer { this.renderStack(player.inventory.getStackInSlot(i), player, type, main, second); } - if (Compat.baubles) { + /*if (Compat.baubles) { TODO baubles IItemHandler baubles = BaublesApi.getBaublesHandler(player); for (int i = 0; i < baubles.getSlots(); i++) { this.renderStack(baubles.getStackInSlot(i), player, type, main, second); } - } + }*/ } private void renderStack(ItemStack stack, PlayerEntity player, RenderType type, ItemStack main, ItemStack second) { @@ -64,8 +68,8 @@ public class PlayerLayerTrinkets implements LayerRenderer { if (item instanceof ITrinketItem && !this.alreadyRendered.contains(item)) { GlStateManager.pushMatrix(); if (type == RenderType.BODY && player.isSneaking()) { - GlStateManager.translate(0F, 0.2F, 0F); - GlStateManager.rotate(90F / (float) Math.PI, 1.0F, 0.0F, 0.0F); + GlStateManager.translatef(0F, 0.2F, 0F); + GlStateManager.rotatef(90F / (float) Math.PI, 1.0F, 0.0F, 0.0F); } ((ITrinketItem) item).render(stack, player, type, stack == main || stack == second); GlStateManager.popMatrix();