From eb5c03dda3e13601dd9c38b3fff9be320146e6aa Mon Sep 17 00:00:00 2001 From: Sen Date: Sun, 22 Jun 2025 18:03:33 +0200 Subject: [PATCH] inline fluid registry --- .../java/client/renderer/BlockRenderer.java | 13 +-- .../renderer/blockmodel/ModelBakery.java | 9 +- .../renderer/blockmodel/ModelManager.java | 3 +- .../client/renderer/texture/TextureMap.java | 7 -- .../block/liquid/BlockDynamicLiquid.java | 23 ++++- .../java/common/block/liquid/BlockLiquid.java | 48 +++-------- .../block/liquid/BlockStaticLiquid.java | 32 ++++--- .../main/java/common/init/BlockRegistry.java | 15 ++-- .../main/java/common/init/FluidRegistry.java | 84 ------------------- .../main/java/common/init/ItemRegistry.java | 21 +++-- .../src/main/java/common/init/LiquidType.java | 13 +++ .../src/main/java/common/item/ItemBucket.java | 12 +-- 12 files changed, 105 insertions(+), 175 deletions(-) delete mode 100755 common/src/main/java/common/init/FluidRegistry.java create mode 100644 common/src/main/java/common/init/LiquidType.java diff --git a/client/src/main/java/client/renderer/BlockRenderer.java b/client/src/main/java/client/renderer/BlockRenderer.java index f0f78719..a50c5b26 100755 --- a/client/src/main/java/client/renderer/BlockRenderer.java +++ b/client/src/main/java/client/renderer/BlockRenderer.java @@ -16,14 +16,16 @@ import client.renderer.texture.TextureMap; import client.renderer.tileentity.TileEntityItemStackRenderer; import common.block.Block; import common.block.Material; +import common.block.liquid.BlockDynamicLiquid; import common.block.liquid.BlockLiquid; +import common.block.liquid.BlockStaticLiquid; import common.collect.Maps; import common.init.BlockRegistry; -import common.init.FluidRegistry; import common.item.ItemStack; import common.util.BlockPos; import common.util.ExtMath; import common.util.Facing; +import common.util.Pair; import common.util.Vec3i; import common.world.IBlockAccess; import common.world.IWorldAccess; @@ -406,12 +408,11 @@ public class BlockRenderer private void initAtlasSprites() { TextureMap texturemap = Client.CLIENT.getTextureMapBlocks(); - for(int z = 0; z < FluidRegistry.getNumFluids(); z++) { - BlockLiquid block = FluidRegistry.getStaticBlock(z); - String name = BlockRegistry.getNameFromBlock(block).toString(); + for(Pair liquid : BlockLiquid.LIQUIDS) { + String name = BlockRegistry.getNameFromBlock(liquid.first()); TextureAtlasSprite[] sprites = new TextureAtlasSprite[] {texturemap.getAtlasSprite("blocks/" + name + "_still"), texturemap.getAtlasSprite("blocks/" + name + "_flow")}; - this.fluids.put(FluidRegistry.getFluidBlock(z), sprites); - this.fluids.put(block, sprites); + this.fluids.put(liquid.second(), sprites); + this.fluids.put(liquid.first(), sprites); } } diff --git a/client/src/main/java/client/renderer/blockmodel/ModelBakery.java b/client/src/main/java/client/renderer/blockmodel/ModelBakery.java index 164dad40..5e812141 100755 --- a/client/src/main/java/client/renderer/blockmodel/ModelBakery.java +++ b/client/src/main/java/client/renderer/blockmodel/ModelBakery.java @@ -9,16 +9,19 @@ import java.util.Set; import client.renderer.texture.TextureAtlasSprite; import client.renderer.texture.TextureMap; +import common.block.liquid.BlockDynamicLiquid; +import common.block.liquid.BlockLiquid; +import common.block.liquid.BlockStaticLiquid; import common.collect.Lists; import common.collect.Maps; import common.collect.Sets; import common.init.BlockRegistry; -import common.init.FluidRegistry; import common.init.ItemRegistry; import common.item.Item; import common.model.ModelRotation; import common.util.Facing; import common.util.IRegistry; +import common.util.Pair; import common.util.RegistrySimple; import common.world.State; @@ -37,8 +40,8 @@ public abstract class ModelBakery public static final ModelBlock MODEL_ENTITY = (ModelBlock)new ModelBlock(null).add().d(""); static { - for(int z = 0; z < FluidRegistry.getNumFluids(); z++) { - String name = BlockRegistry.getNameFromBlock(FluidRegistry.getStaticBlock(z)).toString(); + for(Pair liquid : BlockLiquid.LIQUIDS) { + String name = BlockRegistry.getNameFromBlock(liquid.first()); BUILTINS.add("blocks/" + name + "_flow"); BUILTINS.add("blocks/" + name + "_still"); } diff --git a/client/src/main/java/client/renderer/blockmodel/ModelManager.java b/client/src/main/java/client/renderer/blockmodel/ModelManager.java index afd6b375..7e56296c 100755 --- a/client/src/main/java/client/renderer/blockmodel/ModelManager.java +++ b/client/src/main/java/client/renderer/blockmodel/ModelManager.java @@ -12,7 +12,6 @@ import common.block.liquid.BlockLiquid; import common.collect.Maps; import common.init.BlockRegistry; import common.init.Blocks; -import common.init.FluidRegistry; import common.properties.Property; import common.util.IRegistry; import common.world.State; @@ -94,7 +93,7 @@ public class ModelManager { String texture = this.liquidMap.get(block); if(texture == null) - this.liquidMap.put(block, texture = "blocks/" + BlockRegistry.getNameFromBlock(FluidRegistry.getStaticBlock(FluidRegistry.getFluidMeta((BlockLiquid)block))) + "_still"); + this.liquidMap.put(block, texture = "blocks/" + BlockRegistry.getNameFromFluid((BlockLiquid)block) + "_still"); return this.texMap.getAtlasSprite(texture); } } diff --git a/client/src/main/java/client/renderer/texture/TextureMap.java b/client/src/main/java/client/renderer/texture/TextureMap.java index 07043bf6..377906af 100755 --- a/client/src/main/java/client/renderer/texture/TextureMap.java +++ b/client/src/main/java/client/renderer/texture/TextureMap.java @@ -15,7 +15,6 @@ import common.block.Block; import common.collect.Lists; import common.collect.Maps; import common.init.BlockRegistry; -import common.init.FluidRegistry; import common.log.Log; import common.model.TextureAnimation; @@ -45,12 +44,6 @@ public class TextureMap extends Texture for(Block block : BlockRegistry.REGISTRY) { block.getAnimatedTextures(map); } - for(int z = 0; z < FluidRegistry.getNumFluids(); z++) { - map.put("blocks/" + BlockRegistry.getNameFromBlock(FluidRegistry.getStaticBlock(z)) + "_still", - FluidRegistry.getStaticAnim(z)); - map.put("blocks/" + BlockRegistry.getNameFromBlock(FluidRegistry.getStaticBlock(z)) + "_flow", - FluidRegistry.getFluidAnim(z)); - } for(Entry entry : map.entrySet()) { if(entry.getValue() instanceof Integer) { this.animTextures.put(entry.getKey(), (Integer)entry.getValue()); diff --git a/common/src/main/java/common/block/liquid/BlockDynamicLiquid.java b/common/src/main/java/common/block/liquid/BlockDynamicLiquid.java index 98a4d513..100327cb 100755 --- a/common/src/main/java/common/block/liquid/BlockDynamicLiquid.java +++ b/common/src/main/java/common/block/liquid/BlockDynamicLiquid.java @@ -1,11 +1,13 @@ package common.block.liquid; import java.util.EnumSet; +import java.util.Map; import java.util.Set; import common.block.Block; import common.block.Material; import common.block.artificial.BlockDoor; +import common.init.BlockRegistry; import common.init.Blocks; import common.rng.Random; import common.util.BlockPos; @@ -19,16 +21,25 @@ public class BlockDynamicLiquid extends BlockLiquid { private final boolean infinite; int adjacentSourceBlocks; + private BlockStaticLiquid staticBlock; - public BlockDynamicLiquid(Material materialIn, boolean infinite, boolean opaque, int rate) + public BlockDynamicLiquid(Material materialIn, boolean infinite, boolean opaque, int rate, Object animation) { - super(materialIn, true, opaque, rate); + super(materialIn, true, opaque, rate, animation); this.infinite = infinite; } + + void setStaticBlock(BlockStaticLiquid block) { + this.staticBlock = block; + } + + public BlockStaticLiquid getStaticBlock() { + return this.staticBlock; + } private void placeStaticBlock(World worldIn, BlockPos pos, State currentState) { - worldIn.setState(pos, getStaticBlock(this).getState().withProperty(LEVEL, currentState.getValue(LEVEL)), 2); + worldIn.setState(pos, this.staticBlock.getState().withProperty(LEVEL, currentState.getValue(LEVEL)), 2); } public void updateTick(AWorldServer worldIn, BlockPos pos, State state, Random rand) @@ -292,7 +303,7 @@ public class BlockDynamicLiquid extends BlockLiquid private boolean canFlowInto(World worldIn, BlockPos pos, State state) { Material material = state.getBlock().getMaterial(); - return (this.material == Material.LAVA || !(state.getBlock() instanceof BlockLiquid) || (state.getBlock() instanceof BlockStaticLiquid ? BlockLiquid.getFlowingBlock((BlockStaticLiquid)state.getBlock()) : state.getBlock()) == this) && material != this.material && material != Material.LAVA && !this.isBlocked(worldIn, pos, state); + return (this.material == Material.LAVA || !(state.getBlock() instanceof BlockLiquid) || (state.getBlock() instanceof BlockStaticLiquid ? ((BlockStaticLiquid)state.getBlock()).getFlowingBlock() : state.getBlock()) == this) && material != this.material && material != Material.LAVA && !this.isBlocked(worldIn, pos, state); } public void onBlockAdded(AWorldServer worldIn, BlockPos pos, State state) @@ -302,4 +313,8 @@ public class BlockDynamicLiquid extends BlockLiquid worldIn.scheduleUpdate(pos, this, this.tickRate(worldIn, pos)); } } + + public void getAnimatedTextures(Map map) { + map.put("blocks/" + BlockRegistry.getNameFromBlock(this.staticBlock) + "_flow", this.animation); + } } diff --git a/common/src/main/java/common/block/liquid/BlockLiquid.java b/common/src/main/java/common/block/liquid/BlockLiquid.java index ad1b4a4b..54bfd53c 100755 --- a/common/src/main/java/common/block/liquid/BlockLiquid.java +++ b/common/src/main/java/common/block/liquid/BlockLiquid.java @@ -1,11 +1,13 @@ package common.block.liquid; +import java.util.List; + import common.block.Block; import common.block.Material; +import common.collect.Lists; import common.color.Colorizer; import common.entity.Entity; import common.init.Blocks; -import common.init.FluidRegistry; import common.init.SoundEvent; import common.item.Item; import common.model.BlockLayer; @@ -17,6 +19,7 @@ import common.util.BlockPos; import common.util.BoundingBox; import common.util.ExtMath; import common.util.Facing; +import common.util.Pair; import common.util.Vec3; import common.vars.Vars; import common.world.IBlockAccess; @@ -29,11 +32,13 @@ import common.world.AWorldServer; public abstract class BlockLiquid extends Block { public static final PropertyInteger LEVEL = PropertyInteger.create("level", 0, 15); + public static final List> LIQUIDS = Lists.newArrayList(); protected final boolean opaque; protected final int flowRate; + protected final Object animation; - public BlockLiquid(Material materialIn, boolean tick, boolean opaque, int rate) + public BlockLiquid(Material materialIn, boolean tick, boolean opaque, int rate, Object animation) { super(materialIn); this.setDefaultState(this.getBaseState().withProperty(LEVEL, Integer.valueOf(0))); @@ -42,6 +47,11 @@ public abstract class BlockLiquid extends Block this.setTickRandomly(); this.opaque = opaque; this.flowRate = rate; + this.animation = animation; + } + + public Object getAnimation() { + return this.animation; } public boolean isPassable(IBlockAccess worldIn, BlockPos pos) @@ -296,7 +306,7 @@ public abstract class BlockLiquid extends Block public static double getFlowDirection(IBlockAccess worldIn, BlockPos pos, BlockLiquid block) { - Vec3 vec3 = (block instanceof BlockStaticLiquid ? getFlowingBlock((BlockStaticLiquid)block) : block).getFlowVector(worldIn, pos); + Vec3 vec3 = (block instanceof BlockStaticLiquid ? ((BlockStaticLiquid)block).getFlowingBlock() : block).getFlowVector(worldIn, pos); return vec3.xCoord == 0.0D && vec3.zCoord == 0.0D ? -1000.0D : ExtMath.atan2(vec3.zCoord, vec3.xCoord) - (Math.PI / 2D); } @@ -391,36 +401,4 @@ public abstract class BlockLiquid extends Block { return true; } - - public static BlockDynamicLiquid getFlowingBlock(BlockStaticLiquid block) - { - if (block.getMaterial() == Material.WATER) - { - return Blocks.flowing_water; - } - else if (block.getMaterial() == Material.LAVA) - { - return Blocks.flowing_lava; - } - else - { - return FluidRegistry.getDynamicBlock(block); - } - } - - public static BlockStaticLiquid getStaticBlock(BlockDynamicLiquid block) - { - if (block.getMaterial() == Material.WATER) - { - return Blocks.water; - } - else if (block.getMaterial() == Material.LAVA) - { - return Blocks.lava; - } - else - { - return FluidRegistry.getStaticBlock(block); - } - } } diff --git a/common/src/main/java/common/block/liquid/BlockStaticLiquid.java b/common/src/main/java/common/block/liquid/BlockStaticLiquid.java index 85946e75..565179bf 100755 --- a/common/src/main/java/common/block/liquid/BlockStaticLiquid.java +++ b/common/src/main/java/common/block/liquid/BlockStaticLiquid.java @@ -1,11 +1,15 @@ package common.block.liquid; +import java.util.Map; + import common.block.Block; import common.block.Material; +import common.init.BlockRegistry; import common.init.Blocks; import common.rng.Random; import common.util.BlockPos; import common.util.Facing; +import common.util.Pair; import common.vars.Vars; import common.world.State; import common.world.World; @@ -13,15 +17,18 @@ import common.world.AWorldServer; public class BlockStaticLiquid extends BlockLiquid { - public BlockStaticLiquid(Material materialIn, boolean opaque, int rate) + private final BlockDynamicLiquid dynamicBlock; + + public BlockStaticLiquid(Material materialIn, boolean opaque, int rate, Object animation, BlockDynamicLiquid flowing) { - super(materialIn, materialIn == Material.LAVA, opaque, rate); -// this.setTickRandomly(false); -// -// if (materialIn == Material.lava) -// { -// this.setTickRandomly(true); -// } + super(materialIn, materialIn == Material.LAVA, opaque, rate, animation); + this.dynamicBlock = flowing; + flowing.setStaticBlock(this); + LIQUIDS.add(new Pair(this, flowing)); + } + + public BlockDynamicLiquid getFlowingBlock() { + return this.dynamicBlock; } /** @@ -37,9 +44,8 @@ public class BlockStaticLiquid extends BlockLiquid private void updateLiquid(World worldIn, BlockPos pos, State state) { - BlockDynamicLiquid blockdynamicliquid = getFlowingBlock(this); - worldIn.setState(pos, blockdynamicliquid.getState().withProperty(LEVEL, state.getValue(LEVEL)), 2); - worldIn.scheduleUpdate(pos, blockdynamicliquid, this.tickRate(worldIn, pos)); + worldIn.setState(pos, this.dynamicBlock.getState().withProperty(LEVEL, state.getValue(LEVEL)), 2); + worldIn.scheduleUpdate(pos, this.dynamicBlock, this.tickRate(worldIn, pos)); } public void updateTick(AWorldServer worldIn, BlockPos pos, State state, Random rand) @@ -106,4 +112,8 @@ public class BlockStaticLiquid extends BlockLiquid { return worldIn.getState(pos).getBlock().getMaterial().getCanBurn(); } + + public void getAnimatedTextures(Map map) { + map.put("blocks/" + BlockRegistry.getNameFromBlock(this) + "_still", this.animation); + } } diff --git a/common/src/main/java/common/init/BlockRegistry.java b/common/src/main/java/common/init/BlockRegistry.java index 867a036b..68778463 100755 --- a/common/src/main/java/common/init/BlockRegistry.java +++ b/common/src/main/java/common/init/BlockRegistry.java @@ -58,6 +58,7 @@ import common.block.foliage.BlockVine; import common.block.foliage.BlockWart; import common.block.foliage.LeavesType; import common.block.liquid.BlockDynamicLiquid; +import common.block.liquid.BlockLiquid; import common.block.liquid.BlockStaticLiquid; import common.block.natural.BlockBedrock; import common.block.natural.BlockBlackenedDirt; @@ -127,7 +128,6 @@ import common.block.tile.BlockBannerStanding; import common.block.tile.BlockStandingSign; import common.block.tile.BlockWallSign; import common.color.DyeColor; -import common.init.FluidRegistry.LiquidType; import common.item.CheatTab; import common.log.Log; import common.model.TextureAnimation; @@ -151,6 +151,10 @@ public abstract class BlockRegistry { return REGISTRY.getNameForObject(block); } + public static String getNameFromFluid(BlockLiquid block) { + return REGISTRY.getNameForObject(block instanceof BlockDynamicLiquid dy ? dy.getStaticBlock() : block); + } + public static int getStateId(State state) { Block block = state.getBlock(); return getIdFromBlock(block) + (block.getMetaFromState(state) << 12); @@ -225,15 +229,14 @@ public abstract class BlockRegistry { private static void registerFluid(String name, String display, boolean infinite, LiquidType type, boolean opaque, int light, int rate, float radiation, Object still, Object flowing) { - BlockDynamicLiquid dy = (BlockDynamicLiquid)(new BlockDynamicLiquid(type.material, infinite, opaque, rate)).setHardness(100.0F) + BlockDynamicLiquid dy = (BlockDynamicLiquid)(new BlockDynamicLiquid(type.material, infinite, opaque, rate, flowing)).setHardness(100.0F) + .setLightOpacity(opaque ? 0 : 3).setLightLevel((float)light / 15.0f).setDisplay(display) + .setRadiation(radiation); + BlockStaticLiquid st = (BlockStaticLiquid)(new BlockStaticLiquid(type.material, opaque, rate, still, dy)).setHardness(100.0F) .setLightOpacity(opaque ? 0 : 3).setLightLevel((float)light / 15.0f).setDisplay(display) .setRadiation(radiation); registerBlock("flowing_" + name, dy); - BlockStaticLiquid st = (BlockStaticLiquid)(new BlockStaticLiquid(type.material, opaque, rate)).setHardness(100.0F) - .setLightOpacity(opaque ? 0 : 3).setLightLevel((float)light / 15.0f).setDisplay(display) - .setRadiation(radiation); registerBlock(name, st); - FluidRegistry.registerFluid(st, dy, still, flowing); } private static void registerBlocks() { diff --git a/common/src/main/java/common/init/FluidRegistry.java b/common/src/main/java/common/init/FluidRegistry.java deleted file mode 100755 index ad5b6ac4..00000000 --- a/common/src/main/java/common/init/FluidRegistry.java +++ /dev/null @@ -1,84 +0,0 @@ -package common.init; - -import java.util.List; -import java.util.Map; - -import common.block.Block; -import common.block.Material; -import common.block.liquid.BlockDynamicLiquid; -import common.block.liquid.BlockLiquid; -import common.block.liquid.BlockStaticLiquid; -import common.collect.Lists; -import common.collect.Maps; - -public abstract class FluidRegistry { - public static enum LiquidType { - COLD(Material.COLD), HOT(Material.HOT), WATER(Material.WATER), LAVA(Material.LAVA); - - public final Material material; - - private LiquidType(Material material) { - this.material = material; - } - } - - static class FluidInfo { - private final int id; - private final BlockStaticLiquid stBlock; - private final BlockDynamicLiquid dyBlock; - private final Object stAnim; - private final Object dyAnim; - - private FluidInfo(int id, BlockStaticLiquid stBlock, BlockDynamicLiquid dyBlock, Object stAnim, Object dyAnim) { - this.id = id; - this.stBlock = stBlock; - this.dyBlock = dyBlock; - this.stAnim = stAnim; - this.dyAnim = dyAnim; - } - } - - private static int currentId; - - private static final List FLUIDS = Lists.newArrayList(); - private static final Map ID_MAP = Maps.newHashMap(); - - public static int getFluidMeta(BlockLiquid block) { - return ID_MAP.get(block).intValue(); - } - - public static BlockDynamicLiquid getFluidBlock(int meta) { - return meta < 0 || meta >= currentId ? Blocks.flowing_water : FLUIDS.get(meta).dyBlock; - } - - public static BlockStaticLiquid getStaticBlock(int meta) { - return meta < 0 || meta >= currentId ? Blocks.water : FLUIDS.get(meta).stBlock; - } - - public static Object getFluidAnim(int meta) { - return FLUIDS.get(meta).dyAnim; - } - - public static Object getStaticAnim(int meta) { - return FLUIDS.get(meta).stAnim; - } - - public static int getNumFluids() { - return currentId; - } - - public static BlockStaticLiquid getStaticBlock(BlockDynamicLiquid dy) { - return FLUIDS.get(ID_MAP.get(dy).intValue()).stBlock; - } - - public static BlockDynamicLiquid getDynamicBlock(BlockStaticLiquid st) { - return FLUIDS.get(ID_MAP.get(st).intValue()).dyBlock; - } - - static void registerFluid(BlockStaticLiquid stBlock, BlockDynamicLiquid dyBlock, Object stAnim, Object dyAnim) { - FluidInfo info = new FluidInfo(currentId++, stBlock, dyBlock, stAnim, dyAnim); - FLUIDS.add(info); - ID_MAP.put(stBlock, info.id); - ID_MAP.put(dyBlock, info.id); - } -} diff --git a/common/src/main/java/common/init/ItemRegistry.java b/common/src/main/java/common/init/ItemRegistry.java index fb53aa38..d420f372 100755 --- a/common/src/main/java/common/init/ItemRegistry.java +++ b/common/src/main/java/common/init/ItemRegistry.java @@ -15,6 +15,9 @@ import common.block.foliage.BlockFlower; import common.block.foliage.BlockLeaves; import common.block.foliage.BlockSapling; import common.block.foliage.BlockTallGrass; +import common.block.liquid.BlockDynamicLiquid; +import common.block.liquid.BlockLiquid; +import common.block.liquid.BlockStaticLiquid; import common.block.natural.BlockOre; import common.block.tech.BlockButton; import common.block.tech.BlockTNT; @@ -289,15 +292,15 @@ public abstract class ItemRegistry { Item bucket = (new ItemBucket(null, false)).setDisplay("Eimer"); registerItem("bucket", bucket); - for(int z = 0; z < FluidRegistry.getNumFluids(); z++) { - registerItem(BlockRegistry.getNameFromBlock(FluidRegistry.getStaticBlock(z)) + - "_bucket", new ItemBucket(FluidRegistry.getFluidBlock(z), false).setDisplay("Eimer") + for(Pair liquid : BlockLiquid.LIQUIDS) { + registerItem(BlockRegistry.getNameFromBlock(liquid.first()) + + "_bucket", new ItemBucket(liquid.second(), false).setDisplay("Eimer") .setContainerItem(bucket)); } registerItem("recursive_bucket", (new ItemBucket(null, true)).setDisplay("Unendlicher Eimer")); - for(int z = 0; z < FluidRegistry.getNumFluids(); z++) { - registerItem("recursive_" + BlockRegistry.getNameFromBlock(FluidRegistry.getStaticBlock(z)) + - "_bucket", new ItemBucket(FluidRegistry.getFluidBlock(z), true).setDisplay("Flutender Eimer")); + for(Pair liquid : BlockLiquid.LIQUIDS) { + registerItem("recursive_" + BlockRegistry.getNameFromBlock(liquid.first()) + + "_bucket", new ItemBucket(liquid.second(), true).setDisplay("Flutender Eimer")); } registerItem("milk_bucket", (new ItemBucketMilk()).setDisplay("Milch").setContainerItem(bucket)); @@ -520,9 +523,9 @@ public abstract class ItemRegistry { ((BlockOre)BlockRegistry.getRegisteredBlock("black_quartz_ore")).setDropItem(new ItemStack(bquartz), 3); - for(int z = 0; z < FluidRegistry.getNumFluids(); z++) { - registerSpecial(FluidRegistry.getFluidBlock(z)); - registerSpecial(FluidRegistry.getStaticBlock(z)); + for(Pair liquid : BlockLiquid.LIQUIDS) { + registerSpecial(liquid.second()); + registerSpecial(liquid.first()); } registerSpecial(Blocks.air); registerSpecial(Blocks.cocoa); diff --git a/common/src/main/java/common/init/LiquidType.java b/common/src/main/java/common/init/LiquidType.java new file mode 100644 index 00000000..e93f7ab5 --- /dev/null +++ b/common/src/main/java/common/init/LiquidType.java @@ -0,0 +1,13 @@ +package common.init; + +import common.block.Material; + +public enum LiquidType { + COLD(Material.COLD), HOT(Material.HOT), WATER(Material.WATER), LAVA(Material.LAVA); + + public final Material material; + + private LiquidType(Material material) { + this.material = material; + } +} \ No newline at end of file diff --git a/common/src/main/java/common/item/ItemBucket.java b/common/src/main/java/common/item/ItemBucket.java index 4197832c..d5d9466b 100755 --- a/common/src/main/java/common/item/ItemBucket.java +++ b/common/src/main/java/common/item/ItemBucket.java @@ -16,7 +16,6 @@ import common.collect.Sets; import common.entity.npc.EntityNPC; import common.init.BlockRegistry; import common.init.Blocks; -import common.init.FluidRegistry; import common.init.ItemRegistry; import common.init.Items; import common.init.SoundEvent; @@ -56,7 +55,7 @@ public class ItemBucket extends Item Queue queue = new ArrayDeque(); Set visited = new HashSet(); List dirs = new ArrayList(); - Set blocks = liquid == null ? null : Sets.newHashSet(FluidRegistry.getDynamicBlock(liquid), liquid, Blocks.air); + Set blocks = liquid == null ? null : Sets.newHashSet(liquid.getFlowingBlock(), liquid, Blocks.air); State state = (liquid == null ? Blocks.air : liquid).getState(); int max = World.MAX_SIZE_Y - 1; @@ -180,8 +179,7 @@ public class ItemBucket extends Item // playerIn.triggerAchievement(StatRegistry.objectUseStats[ItemRegistry.getIdFromItem(this)]); Block block = iblockstate.getBlock(); return this.fillBucket(itemStackIn, playerIn, new ItemStack( - ItemRegistry.getRegisteredItem(BlockRegistry.getNameFromBlock(block instanceof BlockDynamicLiquid - ? FluidRegistry.getStaticBlock((BlockDynamicLiquid)block) : block) + + ItemRegistry.getRegisteredItem(BlockRegistry.getNameFromFluid((BlockLiquid)block) + "_bucket"))); } } @@ -276,7 +274,7 @@ public class ItemBucket extends Item if(this.recursive) { if(!worldIn.client) - setRecursive((AWorldServer)worldIn, pos, 4, FluidRegistry.getStaticBlock(this.liquid)); + setRecursive((AWorldServer)worldIn, pos, 4, this.liquid.getStaticBlock()); } else { worldIn.setState(pos, this.liquid.getState(), 3); @@ -335,9 +333,7 @@ public class ItemBucket extends Item Item item; if (material.isLiquid() && block instanceof BlockLiquid && ((Integer)iblockstate.getValue(BlockLiquid.LEVEL)).intValue() == 0) { - item = ItemRegistry.getRegisteredItem(BlockRegistry.getNameFromBlock(block instanceof BlockDynamicLiquid - ? FluidRegistry.getStaticBlock((BlockDynamicLiquid)block) : block) + - "_bucket"); + item = ItemRegistry.getRegisteredItem(BlockRegistry.getNameFromFluid((BlockLiquid)block) + "_bucket"); } else {