inline fluid registry
This commit is contained in:
parent
039a7d7d9e
commit
eb5c03dda3
12 changed files with 105 additions and 175 deletions
|
@ -16,14 +16,16 @@ import client.renderer.texture.TextureMap;
|
||||||
import client.renderer.tileentity.TileEntityItemStackRenderer;
|
import client.renderer.tileentity.TileEntityItemStackRenderer;
|
||||||
import common.block.Block;
|
import common.block.Block;
|
||||||
import common.block.Material;
|
import common.block.Material;
|
||||||
|
import common.block.liquid.BlockDynamicLiquid;
|
||||||
import common.block.liquid.BlockLiquid;
|
import common.block.liquid.BlockLiquid;
|
||||||
|
import common.block.liquid.BlockStaticLiquid;
|
||||||
import common.collect.Maps;
|
import common.collect.Maps;
|
||||||
import common.init.BlockRegistry;
|
import common.init.BlockRegistry;
|
||||||
import common.init.FluidRegistry;
|
|
||||||
import common.item.ItemStack;
|
import common.item.ItemStack;
|
||||||
import common.util.BlockPos;
|
import common.util.BlockPos;
|
||||||
import common.util.ExtMath;
|
import common.util.ExtMath;
|
||||||
import common.util.Facing;
|
import common.util.Facing;
|
||||||
|
import common.util.Pair;
|
||||||
import common.util.Vec3i;
|
import common.util.Vec3i;
|
||||||
import common.world.IBlockAccess;
|
import common.world.IBlockAccess;
|
||||||
import common.world.IWorldAccess;
|
import common.world.IWorldAccess;
|
||||||
|
@ -406,12 +408,11 @@ public class BlockRenderer
|
||||||
private void initAtlasSprites()
|
private void initAtlasSprites()
|
||||||
{
|
{
|
||||||
TextureMap texturemap = Client.CLIENT.getTextureMapBlocks();
|
TextureMap texturemap = Client.CLIENT.getTextureMapBlocks();
|
||||||
for(int z = 0; z < FluidRegistry.getNumFluids(); z++) {
|
for(Pair<BlockStaticLiquid, BlockDynamicLiquid> liquid : BlockLiquid.LIQUIDS) {
|
||||||
BlockLiquid block = FluidRegistry.getStaticBlock(z);
|
String name = BlockRegistry.getNameFromBlock(liquid.first());
|
||||||
String name = BlockRegistry.getNameFromBlock(block).toString();
|
|
||||||
TextureAtlasSprite[] sprites = new TextureAtlasSprite[] {texturemap.getAtlasSprite("blocks/" + name + "_still"), texturemap.getAtlasSprite("blocks/" + name + "_flow")};
|
TextureAtlasSprite[] sprites = new TextureAtlasSprite[] {texturemap.getAtlasSprite("blocks/" + name + "_still"), texturemap.getAtlasSprite("blocks/" + name + "_flow")};
|
||||||
this.fluids.put(FluidRegistry.getFluidBlock(z), sprites);
|
this.fluids.put(liquid.second(), sprites);
|
||||||
this.fluids.put(block, sprites);
|
this.fluids.put(liquid.first(), sprites);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,16 +9,19 @@ import java.util.Set;
|
||||||
|
|
||||||
import client.renderer.texture.TextureAtlasSprite;
|
import client.renderer.texture.TextureAtlasSprite;
|
||||||
import client.renderer.texture.TextureMap;
|
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.Lists;
|
||||||
import common.collect.Maps;
|
import common.collect.Maps;
|
||||||
import common.collect.Sets;
|
import common.collect.Sets;
|
||||||
import common.init.BlockRegistry;
|
import common.init.BlockRegistry;
|
||||||
import common.init.FluidRegistry;
|
|
||||||
import common.init.ItemRegistry;
|
import common.init.ItemRegistry;
|
||||||
import common.item.Item;
|
import common.item.Item;
|
||||||
import common.model.ModelRotation;
|
import common.model.ModelRotation;
|
||||||
import common.util.Facing;
|
import common.util.Facing;
|
||||||
import common.util.IRegistry;
|
import common.util.IRegistry;
|
||||||
|
import common.util.Pair;
|
||||||
import common.util.RegistrySimple;
|
import common.util.RegistrySimple;
|
||||||
import common.world.State;
|
import common.world.State;
|
||||||
|
|
||||||
|
@ -37,8 +40,8 @@ public abstract class ModelBakery
|
||||||
public static final ModelBlock MODEL_ENTITY = (ModelBlock)new ModelBlock(null).add().d("");
|
public static final ModelBlock MODEL_ENTITY = (ModelBlock)new ModelBlock(null).add().d("");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
for(int z = 0; z < FluidRegistry.getNumFluids(); z++) {
|
for(Pair<BlockStaticLiquid, BlockDynamicLiquid> liquid : BlockLiquid.LIQUIDS) {
|
||||||
String name = BlockRegistry.getNameFromBlock(FluidRegistry.getStaticBlock(z)).toString();
|
String name = BlockRegistry.getNameFromBlock(liquid.first());
|
||||||
BUILTINS.add("blocks/" + name + "_flow");
|
BUILTINS.add("blocks/" + name + "_flow");
|
||||||
BUILTINS.add("blocks/" + name + "_still");
|
BUILTINS.add("blocks/" + name + "_still");
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,6 @@ import common.block.liquid.BlockLiquid;
|
||||||
import common.collect.Maps;
|
import common.collect.Maps;
|
||||||
import common.init.BlockRegistry;
|
import common.init.BlockRegistry;
|
||||||
import common.init.Blocks;
|
import common.init.Blocks;
|
||||||
import common.init.FluidRegistry;
|
|
||||||
import common.properties.Property;
|
import common.properties.Property;
|
||||||
import common.util.IRegistry;
|
import common.util.IRegistry;
|
||||||
import common.world.State;
|
import common.world.State;
|
||||||
|
@ -94,7 +93,7 @@ public class ModelManager
|
||||||
{
|
{
|
||||||
String texture = this.liquidMap.get(block);
|
String texture = this.liquidMap.get(block);
|
||||||
if(texture == null)
|
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);
|
return this.texMap.getAtlasSprite(texture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,6 @@ import common.block.Block;
|
||||||
import common.collect.Lists;
|
import common.collect.Lists;
|
||||||
import common.collect.Maps;
|
import common.collect.Maps;
|
||||||
import common.init.BlockRegistry;
|
import common.init.BlockRegistry;
|
||||||
import common.init.FluidRegistry;
|
|
||||||
import common.log.Log;
|
import common.log.Log;
|
||||||
import common.model.TextureAnimation;
|
import common.model.TextureAnimation;
|
||||||
|
|
||||||
|
@ -45,12 +44,6 @@ public class TextureMap extends Texture
|
||||||
for(Block block : BlockRegistry.REGISTRY) {
|
for(Block block : BlockRegistry.REGISTRY) {
|
||||||
block.getAnimatedTextures(map);
|
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<String, Object> entry : map.entrySet()) {
|
for(Entry<String, Object> entry : map.entrySet()) {
|
||||||
if(entry.getValue() instanceof Integer) {
|
if(entry.getValue() instanceof Integer) {
|
||||||
this.animTextures.put(entry.getKey(), (Integer)entry.getValue());
|
this.animTextures.put(entry.getKey(), (Integer)entry.getValue());
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package common.block.liquid;
|
package common.block.liquid;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import common.block.Block;
|
import common.block.Block;
|
||||||
import common.block.Material;
|
import common.block.Material;
|
||||||
import common.block.artificial.BlockDoor;
|
import common.block.artificial.BlockDoor;
|
||||||
|
import common.init.BlockRegistry;
|
||||||
import common.init.Blocks;
|
import common.init.Blocks;
|
||||||
import common.rng.Random;
|
import common.rng.Random;
|
||||||
import common.util.BlockPos;
|
import common.util.BlockPos;
|
||||||
|
@ -19,16 +21,25 @@ public class BlockDynamicLiquid extends BlockLiquid
|
||||||
{
|
{
|
||||||
private final boolean infinite;
|
private final boolean infinite;
|
||||||
int adjacentSourceBlocks;
|
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;
|
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)
|
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)
|
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)
|
private boolean canFlowInto(World worldIn, BlockPos pos, State state)
|
||||||
{
|
{
|
||||||
Material material = state.getBlock().getMaterial();
|
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)
|
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));
|
worldIn.scheduleUpdate(pos, this, this.tickRate(worldIn, pos));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void getAnimatedTextures(Map<String, Object> map) {
|
||||||
|
map.put("blocks/" + BlockRegistry.getNameFromBlock(this.staticBlock) + "_flow", this.animation);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package common.block.liquid;
|
package common.block.liquid;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import common.block.Block;
|
import common.block.Block;
|
||||||
import common.block.Material;
|
import common.block.Material;
|
||||||
|
import common.collect.Lists;
|
||||||
import common.color.Colorizer;
|
import common.color.Colorizer;
|
||||||
import common.entity.Entity;
|
import common.entity.Entity;
|
||||||
import common.init.Blocks;
|
import common.init.Blocks;
|
||||||
import common.init.FluidRegistry;
|
|
||||||
import common.init.SoundEvent;
|
import common.init.SoundEvent;
|
||||||
import common.item.Item;
|
import common.item.Item;
|
||||||
import common.model.BlockLayer;
|
import common.model.BlockLayer;
|
||||||
|
@ -17,6 +19,7 @@ import common.util.BlockPos;
|
||||||
import common.util.BoundingBox;
|
import common.util.BoundingBox;
|
||||||
import common.util.ExtMath;
|
import common.util.ExtMath;
|
||||||
import common.util.Facing;
|
import common.util.Facing;
|
||||||
|
import common.util.Pair;
|
||||||
import common.util.Vec3;
|
import common.util.Vec3;
|
||||||
import common.vars.Vars;
|
import common.vars.Vars;
|
||||||
import common.world.IBlockAccess;
|
import common.world.IBlockAccess;
|
||||||
|
@ -29,11 +32,13 @@ import common.world.AWorldServer;
|
||||||
public abstract class BlockLiquid extends Block
|
public abstract class BlockLiquid extends Block
|
||||||
{
|
{
|
||||||
public static final PropertyInteger LEVEL = PropertyInteger.create("level", 0, 15);
|
public static final PropertyInteger LEVEL = PropertyInteger.create("level", 0, 15);
|
||||||
|
public static final List<Pair<BlockStaticLiquid, BlockDynamicLiquid>> LIQUIDS = Lists.newArrayList();
|
||||||
|
|
||||||
protected final boolean opaque;
|
protected final boolean opaque;
|
||||||
protected final int flowRate;
|
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);
|
super(materialIn);
|
||||||
this.setDefaultState(this.getBaseState().withProperty(LEVEL, Integer.valueOf(0)));
|
this.setDefaultState(this.getBaseState().withProperty(LEVEL, Integer.valueOf(0)));
|
||||||
|
@ -42,6 +47,11 @@ public abstract class BlockLiquid extends Block
|
||||||
this.setTickRandomly();
|
this.setTickRandomly();
|
||||||
this.opaque = opaque;
|
this.opaque = opaque;
|
||||||
this.flowRate = rate;
|
this.flowRate = rate;
|
||||||
|
this.animation = animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getAnimation() {
|
||||||
|
return this.animation;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPassable(IBlockAccess worldIn, BlockPos pos)
|
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)
|
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);
|
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;
|
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
package common.block.liquid;
|
package common.block.liquid;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import common.block.Block;
|
import common.block.Block;
|
||||||
import common.block.Material;
|
import common.block.Material;
|
||||||
|
import common.init.BlockRegistry;
|
||||||
import common.init.Blocks;
|
import common.init.Blocks;
|
||||||
import common.rng.Random;
|
import common.rng.Random;
|
||||||
import common.util.BlockPos;
|
import common.util.BlockPos;
|
||||||
import common.util.Facing;
|
import common.util.Facing;
|
||||||
|
import common.util.Pair;
|
||||||
import common.vars.Vars;
|
import common.vars.Vars;
|
||||||
import common.world.State;
|
import common.world.State;
|
||||||
import common.world.World;
|
import common.world.World;
|
||||||
|
@ -13,15 +17,18 @@ import common.world.AWorldServer;
|
||||||
|
|
||||||
public class BlockStaticLiquid extends BlockLiquid
|
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);
|
super(materialIn, materialIn == Material.LAVA, opaque, rate, animation);
|
||||||
// this.setTickRandomly(false);
|
this.dynamicBlock = flowing;
|
||||||
//
|
flowing.setStaticBlock(this);
|
||||||
// if (materialIn == Material.lava)
|
LIQUIDS.add(new Pair<BlockStaticLiquid, BlockDynamicLiquid>(this, flowing));
|
||||||
// {
|
}
|
||||||
// this.setTickRandomly(true);
|
|
||||||
// }
|
public BlockDynamicLiquid getFlowingBlock() {
|
||||||
|
return this.dynamicBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,9 +44,8 @@ public class BlockStaticLiquid extends BlockLiquid
|
||||||
|
|
||||||
private void updateLiquid(World worldIn, BlockPos pos, State state)
|
private void updateLiquid(World worldIn, BlockPos pos, State state)
|
||||||
{
|
{
|
||||||
BlockDynamicLiquid blockdynamicliquid = getFlowingBlock(this);
|
worldIn.setState(pos, this.dynamicBlock.getState().withProperty(LEVEL, state.getValue(LEVEL)), 2);
|
||||||
worldIn.setState(pos, blockdynamicliquid.getState().withProperty(LEVEL, state.getValue(LEVEL)), 2);
|
worldIn.scheduleUpdate(pos, this.dynamicBlock, this.tickRate(worldIn, pos));
|
||||||
worldIn.scheduleUpdate(pos, blockdynamicliquid, this.tickRate(worldIn, pos));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateTick(AWorldServer worldIn, BlockPos pos, State state, Random rand)
|
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();
|
return worldIn.getState(pos).getBlock().getMaterial().getCanBurn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void getAnimatedTextures(Map<String, Object> map) {
|
||||||
|
map.put("blocks/" + BlockRegistry.getNameFromBlock(this) + "_still", this.animation);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,6 +58,7 @@ import common.block.foliage.BlockVine;
|
||||||
import common.block.foliage.BlockWart;
|
import common.block.foliage.BlockWart;
|
||||||
import common.block.foliage.LeavesType;
|
import common.block.foliage.LeavesType;
|
||||||
import common.block.liquid.BlockDynamicLiquid;
|
import common.block.liquid.BlockDynamicLiquid;
|
||||||
|
import common.block.liquid.BlockLiquid;
|
||||||
import common.block.liquid.BlockStaticLiquid;
|
import common.block.liquid.BlockStaticLiquid;
|
||||||
import common.block.natural.BlockBedrock;
|
import common.block.natural.BlockBedrock;
|
||||||
import common.block.natural.BlockBlackenedDirt;
|
import common.block.natural.BlockBlackenedDirt;
|
||||||
|
@ -127,7 +128,6 @@ import common.block.tile.BlockBannerStanding;
|
||||||
import common.block.tile.BlockStandingSign;
|
import common.block.tile.BlockStandingSign;
|
||||||
import common.block.tile.BlockWallSign;
|
import common.block.tile.BlockWallSign;
|
||||||
import common.color.DyeColor;
|
import common.color.DyeColor;
|
||||||
import common.init.FluidRegistry.LiquidType;
|
|
||||||
import common.item.CheatTab;
|
import common.item.CheatTab;
|
||||||
import common.log.Log;
|
import common.log.Log;
|
||||||
import common.model.TextureAnimation;
|
import common.model.TextureAnimation;
|
||||||
|
@ -151,6 +151,10 @@ public abstract class BlockRegistry {
|
||||||
return REGISTRY.getNameForObject(block);
|
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) {
|
public static int getStateId(State state) {
|
||||||
Block block = state.getBlock();
|
Block block = state.getBlock();
|
||||||
return getIdFromBlock(block) + (block.getMetaFromState(state) << 12);
|
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,
|
private static void registerFluid(String name, String display, boolean infinite, LiquidType type, boolean opaque, int light, int rate,
|
||||||
float radiation, Object still, Object flowing) {
|
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)
|
.setLightOpacity(opaque ? 0 : 3).setLightLevel((float)light / 15.0f).setDisplay(display)
|
||||||
.setRadiation(radiation);
|
.setRadiation(radiation);
|
||||||
registerBlock("flowing_" + name, dy);
|
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);
|
registerBlock(name, st);
|
||||||
FluidRegistry.registerFluid(st, dy, still, flowing);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void registerBlocks() {
|
private static void registerBlocks() {
|
||||||
|
|
|
@ -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<FluidInfo> FLUIDS = Lists.newArrayList();
|
|
||||||
private static final Map<Block, Integer> 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);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -15,6 +15,9 @@ import common.block.foliage.BlockFlower;
|
||||||
import common.block.foliage.BlockLeaves;
|
import common.block.foliage.BlockLeaves;
|
||||||
import common.block.foliage.BlockSapling;
|
import common.block.foliage.BlockSapling;
|
||||||
import common.block.foliage.BlockTallGrass;
|
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.natural.BlockOre;
|
||||||
import common.block.tech.BlockButton;
|
import common.block.tech.BlockButton;
|
||||||
import common.block.tech.BlockTNT;
|
import common.block.tech.BlockTNT;
|
||||||
|
@ -289,15 +292,15 @@ public abstract class ItemRegistry {
|
||||||
|
|
||||||
Item bucket = (new ItemBucket(null, false)).setDisplay("Eimer");
|
Item bucket = (new ItemBucket(null, false)).setDisplay("Eimer");
|
||||||
registerItem("bucket", bucket);
|
registerItem("bucket", bucket);
|
||||||
for(int z = 0; z < FluidRegistry.getNumFluids(); z++) {
|
for(Pair<BlockStaticLiquid, BlockDynamicLiquid> liquid : BlockLiquid.LIQUIDS) {
|
||||||
registerItem(BlockRegistry.getNameFromBlock(FluidRegistry.getStaticBlock(z)) +
|
registerItem(BlockRegistry.getNameFromBlock(liquid.first()) +
|
||||||
"_bucket", new ItemBucket(FluidRegistry.getFluidBlock(z), false).setDisplay("Eimer")
|
"_bucket", new ItemBucket(liquid.second(), false).setDisplay("Eimer")
|
||||||
.setContainerItem(bucket));
|
.setContainerItem(bucket));
|
||||||
}
|
}
|
||||||
registerItem("recursive_bucket", (new ItemBucket(null, true)).setDisplay("Unendlicher Eimer"));
|
registerItem("recursive_bucket", (new ItemBucket(null, true)).setDisplay("Unendlicher Eimer"));
|
||||||
for(int z = 0; z < FluidRegistry.getNumFluids(); z++) {
|
for(Pair<BlockStaticLiquid, BlockDynamicLiquid> liquid : BlockLiquid.LIQUIDS) {
|
||||||
registerItem("recursive_" + BlockRegistry.getNameFromBlock(FluidRegistry.getStaticBlock(z)) +
|
registerItem("recursive_" + BlockRegistry.getNameFromBlock(liquid.first()) +
|
||||||
"_bucket", new ItemBucket(FluidRegistry.getFluidBlock(z), true).setDisplay("Flutender Eimer"));
|
"_bucket", new ItemBucket(liquid.second(), true).setDisplay("Flutender Eimer"));
|
||||||
}
|
}
|
||||||
registerItem("milk_bucket", (new ItemBucketMilk()).setDisplay("Milch").setContainerItem(bucket));
|
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);
|
((BlockOre)BlockRegistry.getRegisteredBlock("black_quartz_ore")).setDropItem(new ItemStack(bquartz), 3);
|
||||||
|
|
||||||
|
|
||||||
for(int z = 0; z < FluidRegistry.getNumFluids(); z++) {
|
for(Pair<BlockStaticLiquid, BlockDynamicLiquid> liquid : BlockLiquid.LIQUIDS) {
|
||||||
registerSpecial(FluidRegistry.getFluidBlock(z));
|
registerSpecial(liquid.second());
|
||||||
registerSpecial(FluidRegistry.getStaticBlock(z));
|
registerSpecial(liquid.first());
|
||||||
}
|
}
|
||||||
registerSpecial(Blocks.air);
|
registerSpecial(Blocks.air);
|
||||||
registerSpecial(Blocks.cocoa);
|
registerSpecial(Blocks.cocoa);
|
||||||
|
|
13
common/src/main/java/common/init/LiquidType.java
Normal file
13
common/src/main/java/common/init/LiquidType.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -16,7 +16,6 @@ import common.collect.Sets;
|
||||||
import common.entity.npc.EntityNPC;
|
import common.entity.npc.EntityNPC;
|
||||||
import common.init.BlockRegistry;
|
import common.init.BlockRegistry;
|
||||||
import common.init.Blocks;
|
import common.init.Blocks;
|
||||||
import common.init.FluidRegistry;
|
|
||||||
import common.init.ItemRegistry;
|
import common.init.ItemRegistry;
|
||||||
import common.init.Items;
|
import common.init.Items;
|
||||||
import common.init.SoundEvent;
|
import common.init.SoundEvent;
|
||||||
|
@ -56,7 +55,7 @@ public class ItemBucket extends Item
|
||||||
Queue<BlockPos> queue = new ArrayDeque<BlockPos>();
|
Queue<BlockPos> queue = new ArrayDeque<BlockPos>();
|
||||||
Set<BlockPos> visited = new HashSet<BlockPos>();
|
Set<BlockPos> visited = new HashSet<BlockPos>();
|
||||||
List<Vec3i> dirs = new ArrayList<Vec3i>();
|
List<Vec3i> dirs = new ArrayList<Vec3i>();
|
||||||
Set<Block> blocks = liquid == null ? null : Sets.newHashSet(FluidRegistry.getDynamicBlock(liquid), liquid, Blocks.air);
|
Set<Block> blocks = liquid == null ? null : Sets.newHashSet(liquid.getFlowingBlock(), liquid, Blocks.air);
|
||||||
State state = (liquid == null ? Blocks.air : liquid).getState();
|
State state = (liquid == null ? Blocks.air : liquid).getState();
|
||||||
int max = World.MAX_SIZE_Y - 1;
|
int max = World.MAX_SIZE_Y - 1;
|
||||||
|
|
||||||
|
@ -180,8 +179,7 @@ public class ItemBucket extends Item
|
||||||
// playerIn.triggerAchievement(StatRegistry.objectUseStats[ItemRegistry.getIdFromItem(this)]);
|
// playerIn.triggerAchievement(StatRegistry.objectUseStats[ItemRegistry.getIdFromItem(this)]);
|
||||||
Block block = iblockstate.getBlock();
|
Block block = iblockstate.getBlock();
|
||||||
return this.fillBucket(itemStackIn, playerIn, new ItemStack(
|
return this.fillBucket(itemStackIn, playerIn, new ItemStack(
|
||||||
ItemRegistry.getRegisteredItem(BlockRegistry.getNameFromBlock(block instanceof BlockDynamicLiquid
|
ItemRegistry.getRegisteredItem(BlockRegistry.getNameFromFluid((BlockLiquid)block) +
|
||||||
? FluidRegistry.getStaticBlock((BlockDynamicLiquid)block) : block) +
|
|
||||||
"_bucket")));
|
"_bucket")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -276,7 +274,7 @@ public class ItemBucket extends Item
|
||||||
|
|
||||||
if(this.recursive) {
|
if(this.recursive) {
|
||||||
if(!worldIn.client)
|
if(!worldIn.client)
|
||||||
setRecursive((AWorldServer)worldIn, pos, 4, FluidRegistry.getStaticBlock(this.liquid));
|
setRecursive((AWorldServer)worldIn, pos, 4, this.liquid.getStaticBlock());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
worldIn.setState(pos, this.liquid.getState(), 3);
|
worldIn.setState(pos, this.liquid.getState(), 3);
|
||||||
|
@ -335,9 +333,7 @@ public class ItemBucket extends Item
|
||||||
Item item;
|
Item item;
|
||||||
if (material.isLiquid() && block instanceof BlockLiquid && ((Integer)iblockstate.getValue(BlockLiquid.LEVEL)).intValue() == 0)
|
if (material.isLiquid() && block instanceof BlockLiquid && ((Integer)iblockstate.getValue(BlockLiquid.LEVEL)).intValue() == 0)
|
||||||
{
|
{
|
||||||
item = ItemRegistry.getRegisteredItem(BlockRegistry.getNameFromBlock(block instanceof BlockDynamicLiquid
|
item = ItemRegistry.getRegisteredItem(BlockRegistry.getNameFromFluid((BlockLiquid)block) + "_bucket");
|
||||||
? FluidRegistry.getStaticBlock((BlockDynamicLiquid)block) : block) +
|
|
||||||
"_bucket");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue