Attempted adding puddles, big letdown is the fact that the water isn't transparent
This commit is contained in:
parent
b7eb27fe3c
commit
f8dfc61c68
7 changed files with 1902 additions and 2 deletions
|
@ -17,6 +17,7 @@ import biomesoplenty.api.Items;
|
||||||
import biomesoplenty.blocks.renderers.AltarRenderer;
|
import biomesoplenty.blocks.renderers.AltarRenderer;
|
||||||
import biomesoplenty.blocks.renderers.FoliageRenderer;
|
import biomesoplenty.blocks.renderers.FoliageRenderer;
|
||||||
import biomesoplenty.blocks.renderers.PlantsRenderer;
|
import biomesoplenty.blocks.renderers.PlantsRenderer;
|
||||||
|
import biomesoplenty.blocks.renderers.PuddleRender;
|
||||||
import biomesoplenty.blocks.renderers.RenderUtils;
|
import biomesoplenty.blocks.renderers.RenderUtils;
|
||||||
import biomesoplenty.blocks.renderers.SmallBlockRenderer;
|
import biomesoplenty.blocks.renderers.SmallBlockRenderer;
|
||||||
import biomesoplenty.entities.EntityGlob;
|
import biomesoplenty.entities.EntityGlob;
|
||||||
|
@ -47,6 +48,7 @@ public class ClientProxy extends CommonProxy {
|
||||||
RenderingRegistry.registerBlockHandler(new PlantsRenderer());
|
RenderingRegistry.registerBlockHandler(new PlantsRenderer());
|
||||||
RenderingRegistry.registerBlockHandler(new SmallBlockRenderer());
|
RenderingRegistry.registerBlockHandler(new SmallBlockRenderer());
|
||||||
RenderingRegistry.registerBlockHandler(new AltarRenderer());
|
RenderingRegistry.registerBlockHandler(new AltarRenderer());
|
||||||
|
RenderingRegistry.registerBlockHandler(new PuddleRender());
|
||||||
|
|
||||||
//TODO: Remove upon Fluid API being integrated into Forge
|
//TODO: Remove upon Fluid API being integrated into Forge
|
||||||
FluidRegistry.renderIdFluid = RenderingRegistry.getNextAvailableRenderId();
|
FluidRegistry.renderIdFluid = RenderingRegistry.getNextAvailableRenderId();
|
||||||
|
|
|
@ -96,6 +96,7 @@ public class Blocks
|
||||||
public static Optional<? extends Block> promisedPortal = Optional.absent();
|
public static Optional<? extends Block> promisedPortal = Optional.absent();
|
||||||
public static Optional<? extends Block> glass = Optional.absent();
|
public static Optional<? extends Block> glass = Optional.absent();
|
||||||
public static Optional<? extends Block> altar = Optional.absent();
|
public static Optional<? extends Block> altar = Optional.absent();
|
||||||
|
public static Optional<? extends Block> puddle = Optional.absent();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Populated by Biomes O Plenty with default Biomes O Plenty leaves. Add additional leaves here (E.g. "Blocks.shearBlockIds.put(acaciaLeaves.blockID, 15.0F);")
|
* Populated by Biomes O Plenty with default Biomes O Plenty leaves. Add additional leaves here (E.g. "Blocks.shearBlockIds.put(acaciaLeaves.blockID, 15.0F);")
|
||||||
|
|
114
src/minecraft/biomesoplenty/blocks/BlockPuddle.java
Normal file
114
src/minecraft/biomesoplenty/blocks/BlockPuddle.java
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
package biomesoplenty.blocks;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import biomesoplenty.BiomesOPlenty;
|
||||||
|
import biomesoplenty.blocks.renderers.PuddleRender;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.client.renderer.texture.IconRegister;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.Icon;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
import net.minecraftforge.common.IPlantable;
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
public class BlockPuddle extends Block
|
||||||
|
{
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
private Icon field_94441_a;
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
private Icon field_94440_b;
|
||||||
|
|
||||||
|
public BlockPuddle(int par1)
|
||||||
|
{
|
||||||
|
super(par1, Material.ground);
|
||||||
|
this.setTickRandomly(true);
|
||||||
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.8135F, 1.0F);
|
||||||
|
this.setLightOpacity(0);
|
||||||
|
this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
|
||||||
|
{
|
||||||
|
return AxisAlignedBB.getAABBPool().getAABB((double)(par2 + 0), (double)(par3 + 0), (double)(par4 + 0), (double)(par2 + 1), (double)(par3 + 0.8135F), (double)(par4 + 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isOpaqueCube()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean renderAsNormalBlock()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int onBlockPlaced(World par1World, int par2, int par3, int par4, int par5, float par6, float par7, float par8, int par9)
|
||||||
|
{
|
||||||
|
par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, 1);
|
||||||
|
|
||||||
|
return par9;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random)
|
||||||
|
{
|
||||||
|
Material material1 = par1World.getBlockMaterial(par2 + 1, par3, par4);
|
||||||
|
Material material2 = par1World.getBlockMaterial(par2 - 1, par3, par4);
|
||||||
|
Material material3 = par1World.getBlockMaterial(par2, par3, par4 + 1);
|
||||||
|
Material material4 = par1World.getBlockMaterial(par2, par3, par4 - 1);
|
||||||
|
|
||||||
|
if (!material1.isSolid() || !material2.isSolid() || !material3.isSolid() || !material1.isSolid())
|
||||||
|
{
|
||||||
|
par1World.setBlock(par2, par3, par4, Block.dirt.blockID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRenderType()
|
||||||
|
{
|
||||||
|
return PuddleRender.puddleID;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
|
||||||
|
public Icon getIcon(int par1, int par2)
|
||||||
|
{
|
||||||
|
return Block.dirt.getBlockTextureFromSide(par1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5)
|
||||||
|
{
|
||||||
|
super.onNeighborBlockChange(par1World, par2, par3, par4, par5);
|
||||||
|
Material material = par1World.getBlockMaterial(par2, par3 + 1, par4);
|
||||||
|
|
||||||
|
if (material.isSolid())
|
||||||
|
{
|
||||||
|
par1World.setBlock(par2, par3, par4, Block.dirt.blockID);
|
||||||
|
}
|
||||||
|
|
||||||
|
par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int idDropped(int par1, Random par2Random, int par3)
|
||||||
|
{
|
||||||
|
return Block.dirt.idDropped(0, par2Random, par3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public int idPicked(World par1World, int par2, int par3, int par4)
|
||||||
|
{
|
||||||
|
return Block.dirt.blockID;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void registerIcons(IconRegister par1IconRegister)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,89 @@
|
||||||
|
package biomesoplenty.blocks.renderers;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.renderer.RenderBlocks;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
import net.minecraftforge.client.ForgeHooksClient;
|
||||||
|
import net.minecraftforge.liquids.LiquidStack;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import biomesoplenty.BiomesOPlenty;
|
||||||
|
|
||||||
|
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||||
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
|
|
||||||
|
public class PuddleRender implements ISimpleBlockRenderingHandler
|
||||||
|
{
|
||||||
|
public static int puddleID = RenderingRegistry.getNextAvailableRenderId();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderInventoryBlock (Block block, int metadata, int modelID, RenderBlocks renderer)
|
||||||
|
{
|
||||||
|
if (modelID == puddleID)
|
||||||
|
{
|
||||||
|
RenderUtils.renderStandardInvBlock(renderer, block, metadata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean renderWorldBlock (IBlockAccess world, int x, int y, int z, Block block, int modelID, RenderBlocks renderer)
|
||||||
|
{
|
||||||
|
if (modelID == puddleID)
|
||||||
|
{
|
||||||
|
renderer.renderStandardBlock(block, x, y, z);
|
||||||
|
|
||||||
|
//Liquid
|
||||||
|
renderer.setRenderBounds(0.0, 0.8135, 0.0, 1.0, 0.8880, 1.0);
|
||||||
|
|
||||||
|
Block liquidBlock = Block.blocksList[Block.waterStill.blockID];
|
||||||
|
BlockSkinRenderHelper.renderMetadataBlock(liquidBlock, 0, x, y, z, renderer, world);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldRender3DInInventory()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRenderId()
|
||||||
|
{
|
||||||
|
return puddleID;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void renderDoRe (RenderBlocks renderblocks, Block block, int meta)
|
||||||
|
{
|
||||||
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
GL11.glTranslatef(-0.5F, 0.5F, -0.5F);
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.setNormal(0.0F, -1F, 0.0F);
|
||||||
|
renderblocks.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(0, meta));
|
||||||
|
tessellator.draw();
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.setNormal(0.0F, 1.0F, 0.0F);
|
||||||
|
renderblocks.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(1, meta));
|
||||||
|
tessellator.draw();
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.setNormal(0.0F, 0.0F, -1F);
|
||||||
|
renderblocks.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(2, meta));
|
||||||
|
tessellator.draw();
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.setNormal(0.0F, 0.0F, 1.0F);
|
||||||
|
renderblocks.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(3, meta));
|
||||||
|
tessellator.draw();
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.setNormal(-1F, 0.0F, 0.0F);
|
||||||
|
renderblocks.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(4, meta));
|
||||||
|
tessellator.draw();
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.setNormal(1.0F, 0.0F, 0.0F);
|
||||||
|
renderblocks.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(5, meta));
|
||||||
|
tessellator.draw();
|
||||||
|
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,7 +3,6 @@ package biomesoplenty.configuration;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockHalfSlab;
|
import net.minecraft.block.BlockHalfSlab;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import biomesoplenty.api.Blocks;
|
import biomesoplenty.api.Blocks;
|
||||||
import biomesoplenty.blocks.BlockAltar;
|
import biomesoplenty.blocks.BlockAltar;
|
||||||
|
@ -42,6 +41,7 @@ import biomesoplenty.blocks.BlockMoss;
|
||||||
import biomesoplenty.blocks.BlockMud;
|
import biomesoplenty.blocks.BlockMud;
|
||||||
import biomesoplenty.blocks.BlockOriginGrass;
|
import biomesoplenty.blocks.BlockOriginGrass;
|
||||||
import biomesoplenty.blocks.BlockPromisedPortal;
|
import biomesoplenty.blocks.BlockPromisedPortal;
|
||||||
|
import biomesoplenty.blocks.BlockPuddle;
|
||||||
import biomesoplenty.blocks.BlockTreeMoss;
|
import biomesoplenty.blocks.BlockTreeMoss;
|
||||||
import biomesoplenty.blocks.BlockWillow;
|
import biomesoplenty.blocks.BlockWillow;
|
||||||
import biomesoplenty.items.ItemBOPAltar;
|
import biomesoplenty.items.ItemBOPAltar;
|
||||||
|
@ -75,7 +75,6 @@ import biomesoplenty.tileentity.TileEntityAltar;
|
||||||
import com.google.common.base.Optional;
|
import com.google.common.base.Optional;
|
||||||
|
|
||||||
import cpw.mods.fml.common.registry.GameRegistry;
|
import cpw.mods.fml.common.registry.GameRegistry;
|
||||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
|
||||||
|
|
||||||
public class BOPBlocks {
|
public class BOPBlocks {
|
||||||
public static void init()
|
public static void init()
|
||||||
|
@ -172,6 +171,8 @@ public class BOPBlocks {
|
||||||
Blocks.glass = Optional.of((new BlockBOPGlass(BOPConfiguration.glassID)).setStepSound(Block.soundGlassFootstep).setUnlocalizedName("bop.glass"));
|
Blocks.glass = Optional.of((new BlockBOPGlass(BOPConfiguration.glassID)).setStepSound(Block.soundGlassFootstep).setUnlocalizedName("bop.glass"));
|
||||||
|
|
||||||
Blocks.altar = Optional.of((new BlockAltar(BOPConfiguration.altarID)).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("bop.altar"));
|
Blocks.altar = Optional.of((new BlockAltar(BOPConfiguration.altarID)).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("bop.altar"));
|
||||||
|
|
||||||
|
Blocks.puddle = Optional.of((new BlockPuddle(BOPConfiguration.puddleID)).setStepSound(Block.soundGravelFootstep).setUnlocalizedName("bop.puddle"));
|
||||||
|
|
||||||
Blocks.planks = Optional.of((new BlockBOPPlank(BOPConfiguration.planksID)).setResistance(5.0F).setStepSound(Block.soundWoodFootstep).setUnlocalizedName("bop.planks"));
|
Blocks.planks = Optional.of((new BlockBOPPlank(BOPConfiguration.planksID)).setResistance(5.0F).setStepSound(Block.soundWoodFootstep).setUnlocalizedName("bop.planks"));
|
||||||
|
|
||||||
|
@ -252,6 +253,7 @@ public class BOPBlocks {
|
||||||
GameRegistry.registerBlock(Blocks.bones.get(), ItemBOPBones.class, "bop.bones");
|
GameRegistry.registerBlock(Blocks.bones.get(), ItemBOPBones.class, "bop.bones");
|
||||||
GameRegistry.registerBlock(Blocks.glass.get(), ItemBOPGlass.class, "bop.glass");
|
GameRegistry.registerBlock(Blocks.glass.get(), ItemBOPGlass.class, "bop.glass");
|
||||||
GameRegistry.registerBlock(Blocks.altar.get(), ItemBOPAltar.class, "bop.altar");
|
GameRegistry.registerBlock(Blocks.altar.get(), ItemBOPAltar.class, "bop.altar");
|
||||||
|
GameRegistry.registerBlock(Blocks.puddle.get(), "bop.puddle");
|
||||||
|
|
||||||
ItemBOPSlab.setSlabs(Blocks.stoneSingleSlab.get(), Blocks.stoneDoubleSlab.get());
|
ItemBOPSlab.setSlabs(Blocks.stoneSingleSlab.get(), Blocks.stoneDoubleSlab.get());
|
||||||
GameRegistry.registerBlock(Blocks.stoneDoubleSlab.get(), ItemBOPSlab.class, "bop.stoneDoubleSlab");
|
GameRegistry.registerBlock(Blocks.stoneDoubleSlab.get(), ItemBOPSlab.class, "bop.stoneDoubleSlab");
|
||||||
|
|
|
@ -181,6 +181,8 @@ public class BOPConfiguration {
|
||||||
// public static int smolderingGrassID;
|
// public static int smolderingGrassID;
|
||||||
|
|
||||||
// public static int quicksandID;
|
// public static int quicksandID;
|
||||||
|
|
||||||
|
public static int puddleID;
|
||||||
|
|
||||||
public static int planksID;
|
public static int planksID;
|
||||||
|
|
||||||
|
@ -798,6 +800,8 @@ public class BOPConfiguration {
|
||||||
glassID = config.getBlock("Glass ID", 1978, null).getInt();
|
glassID = config.getBlock("Glass ID", 1978, null).getInt();
|
||||||
|
|
||||||
altarID = config.getBlock("Altar ID", 1979, null).getInt();
|
altarID = config.getBlock("Altar ID", 1979, null).getInt();
|
||||||
|
|
||||||
|
puddleID = config.getBlock("Puddle ID", 1980, null).getInt();
|
||||||
|
|
||||||
// Get Item ID's
|
// Get Item ID's
|
||||||
shroomPowderID = config.getItem("Shroom Powder ID", 21001, null).getInt();
|
shroomPowderID = config.getItem("Shroom Powder ID", 21001, null).getInt();
|
||||||
|
|
Loading…
Reference in a new issue