-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
14 changed files
with
395 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
129 changes: 129 additions & 0 deletions
129
src/main/java/KAMKEEL/PluginMod/Blocks/BlockCaveVines.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
package KAMKEEL.PluginMod.Blocks; | ||
|
||
import KAMKEEL.PluginMod.PluginMod; | ||
import cpw.mods.fml.relauncher.Side; | ||
import cpw.mods.fml.relauncher.SideOnly; | ||
import net.minecraft.block.Block; | ||
import net.minecraft.block.BlockBush; | ||
import net.minecraft.block.BlockDirt; | ||
import net.minecraft.block.BlockGrass; | ||
import net.minecraft.block.material.Material; | ||
import net.minecraft.client.Minecraft; | ||
import net.minecraft.client.renderer.texture.IIconRegister; | ||
import net.minecraft.client.settings.GameSettings; | ||
import net.minecraft.creativetab.CreativeTabs; | ||
import net.minecraft.entity.Entity; | ||
import net.minecraft.entity.EntityLivingBase; | ||
import net.minecraft.entity.player.EntityPlayer; | ||
import net.minecraft.init.Blocks; | ||
import net.minecraft.item.Item; | ||
import net.minecraft.item.ItemStack; | ||
import net.minecraft.util.IIcon; | ||
import net.minecraft.world.IBlockAccess; | ||
import net.minecraft.world.World; | ||
|
||
import java.util.List; | ||
import java.util.Random; | ||
|
||
public class BlockCaveVines extends BlockBush | ||
{ | ||
public static final String[] types; | ||
private IIcon[] icon; | ||
|
||
public BlockCaveVines() { | ||
super(Material.plants); | ||
this.icon = new IIcon[2]; | ||
this.setTickRandomly(true); | ||
this.setStepSound(soundTypeGrass); | ||
this.setCreativeTab(PluginMod.blocksTab); | ||
} | ||
|
||
public void setBlockBoundsBasedOnState(final IBlockAccess world, final int x, final int y, final int z) { | ||
final float f = 0.4f; | ||
this.setBlockBounds(0.5f - f, 0.0f, 0.5f - f, 0.5f + f, 1.0f, 0.5f + f); | ||
} | ||
|
||
public boolean isLadder(final IBlockAccess world, final int x, final int y, final int z, final EntityLivingBase entity) { | ||
return true; | ||
} | ||
|
||
@SideOnly(Side.CLIENT) | ||
public void onEntityCollidedWithBlock(final World world, final int x, final int y, final int z, final Entity entity) { | ||
if (entity instanceof EntityPlayer) { | ||
final EntityPlayer player = (EntityPlayer)entity; | ||
if (player.posY - 0.0 >= y) { | ||
player.moveForward = 0.0f; | ||
if (player.motionY < -0.15) { | ||
player.motionY = -0.15; | ||
} | ||
if (GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump) && player.motionY < 0.2) { | ||
player.motionY = 0.2; | ||
} | ||
} | ||
if (GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindSneak) && (GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump) || GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump) || GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump) || GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump))) { | ||
player.motionY = 0.2; | ||
} | ||
else if (GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindSneak)) { | ||
player.setVelocity(0.0, 0.08, 0.0); | ||
} | ||
} | ||
} | ||
|
||
public void registerBlockIcons(final IIconRegister iconRegister) { | ||
this.icon[0] = iconRegister.registerIcon("plug:cave_vines_head"); | ||
this.icon[1] = iconRegister.registerIcon("plug:cave_vines_body"); | ||
} | ||
|
||
public IIcon getIcon(final int side, int meta) { | ||
if (meta < 0 || meta >= this.icon.length) { | ||
meta = 1; | ||
} | ||
return this.icon[meta]; | ||
} | ||
|
||
public void getSubBlocks(final Item block, final CreativeTabs creativeTabs, final List list) { | ||
for (int i = 0; i < BlockCaveVines.types.length; ++i) { | ||
if (i != 1) { | ||
list.add(new ItemStack(block, 1, i)); | ||
} | ||
} | ||
} | ||
|
||
public void onNeighborBlockChange(final World world, final int x, final int y, final int z, final Block neighbour) { | ||
this.checkBlockCoordValid(world, x, y, z); | ||
if (world.isAirBlock(x, y - 1, z) && world.getBlock(x, y, z) == ModBlocks.caveVines) { | ||
world.setBlock(x, y, z, (Block)this, 0, 2); | ||
} | ||
} | ||
|
||
public final void checkBlockCoordValid(final World world, final int x, final int y, final int z) { | ||
if (!this.canBlockStay(world, x, y, z)) { | ||
this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); | ||
world.setBlockToAir(x, y, z); | ||
} | ||
} | ||
|
||
public boolean canBlockStay(final World world, final int x, final int y, final int z) { | ||
return canPlaceRootBelow(world, x, y + 1, z); | ||
} | ||
|
||
public static boolean canPlaceRootBelow(final World world, final int x, final int y, final int z) { | ||
final Block blockAbove = world.getBlock(x, y, z); | ||
return blockAbove.getMaterial() == Material.rock || blockAbove.getMaterial() == Material.wood || blockAbove == ModBlocks.caveVines || blockAbove == Blocks.soul_sand || blockAbove instanceof BlockGrass || blockAbove instanceof BlockDirt; | ||
} | ||
|
||
public boolean canPlaceBlockAt(final World world, final int x, final int y, final int z) { | ||
return super.canPlaceBlockAt(world, x, y, z) && this.canBlockStay(world, x, y, z); | ||
} | ||
|
||
public int damageDropped(final int meta) { | ||
if (meta == 1) { | ||
return 0; | ||
} | ||
return meta; | ||
} | ||
|
||
static { | ||
types = new String[] { "head", "body" }; | ||
} | ||
} |
132 changes: 132 additions & 0 deletions
132
src/main/java/KAMKEEL/PluginMod/Blocks/BlockCaveVinesGrowing.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
package KAMKEEL.PluginMod.Blocks; | ||
|
||
import KAMKEEL.PluginMod.PluginMod; | ||
import net.minecraft.util.*; | ||
import net.minecraft.block.material.*; | ||
import net.minecraft.world.*; | ||
import net.minecraft.entity.*; | ||
import net.minecraft.entity.player.*; | ||
import net.minecraft.client.*; | ||
import net.minecraft.client.settings.*; | ||
import cpw.mods.fml.relauncher.*; | ||
import net.minecraft.client.renderer.texture.*; | ||
import net.minecraft.creativetab.*; | ||
import java.util.*; | ||
import net.minecraft.item.*; | ||
import net.minecraft.init.*; | ||
import net.minecraft.block.*; | ||
|
||
public class BlockCaveVinesGrowing extends BlockBush | ||
{ | ||
public static final String[] types; | ||
private IIcon[] icon; | ||
|
||
public BlockCaveVinesGrowing() { | ||
super(Material.plants); | ||
this.icon = new IIcon[2]; | ||
this.setTickRandomly(true); | ||
this.setStepSound(soundTypeGrass); | ||
this.setCreativeTab(PluginMod.blocksTab); | ||
} | ||
|
||
public void setBlockBoundsBasedOnState(final IBlockAccess world, final int x, final int y, final int z) { | ||
final float f = 0.4f; | ||
this.setBlockBounds(0.5f - f, 0.0f, 0.5f - f, 0.5f + f, 1.0f, 0.5f + f); | ||
} | ||
|
||
public void updateTick(final World world, final int x, final int y, final int z, final Random random) { | ||
final int yy = y - 1; | ||
if (random.nextInt(10) == 0 && world.isAirBlock(x, yy, z)) { | ||
int height; | ||
for (height = 1; world.getBlock(x, y + height, z) == this; ++height) {} | ||
if (height < 20) { | ||
world.setBlock(x, y, z, (Block)this, 1, 2); | ||
world.setBlock(x, yy, z, (Block)this, 0, 2); | ||
} | ||
} | ||
} | ||
|
||
public boolean isLadder(final IBlockAccess world, final int x, final int y, final int z, final EntityLivingBase entity) { | ||
return true; | ||
} | ||
|
||
@SideOnly(Side.CLIENT) | ||
public void onEntityCollidedWithBlock(final World world, final int x, final int y, final int z, final Entity entity) { | ||
if (entity instanceof EntityPlayer) { | ||
final EntityPlayer player = (EntityPlayer)entity; | ||
if (player.posY - 0.0 >= y) { | ||
player.moveForward = 0.0f; | ||
if (player.motionY < -0.15) { | ||
player.motionY = -0.15; | ||
} | ||
if (GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump) && player.motionY < 0.2) { | ||
player.motionY = 0.2; | ||
} | ||
} | ||
if (GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindSneak) && (GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump) || GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump) || GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump) || GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump))) { | ||
player.motionY = 0.2; | ||
} | ||
else if (GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindSneak)) { | ||
player.setVelocity(0.0, 0.08, 0.0); | ||
} | ||
} | ||
} | ||
|
||
public void registerBlockIcons(final IIconRegister iconRegister) { | ||
this.icon[0] = iconRegister.registerIcon("plug:cave_vines_head"); | ||
this.icon[1] = iconRegister.registerIcon("plug:cave_vines_body"); | ||
} | ||
|
||
public IIcon getIcon(final int side, int meta) { | ||
if (meta < 0 || meta >= this.icon.length) { | ||
meta = 1; | ||
} | ||
return this.icon[meta]; | ||
} | ||
|
||
public void getSubBlocks(final Item block, final CreativeTabs creativeTabs, final List list) { | ||
for (int i = 0; i < BlockCaveVinesGrowing.types.length; ++i) { | ||
if (i != 1) { | ||
list.add(new ItemStack(block, 1, i)); | ||
} | ||
} | ||
} | ||
|
||
public void onNeighborBlockChange(final World world, final int x, final int y, final int z, final Block neighbour) { | ||
this.checkBlockCoordValid(world, x, y, z); | ||
if (world.isAirBlock(x, y - 1, z) && world.getBlock(x, y, z) == ModBlocks.caveVinesGrowing) { | ||
world.setBlock(x, y, z, (Block)this, 0, 2); | ||
} | ||
} | ||
|
||
public final void checkBlockCoordValid(final World world, final int x, final int y, final int z) { | ||
if (!this.canBlockStay(world, x, y, z)) { | ||
this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); | ||
world.setBlockToAir(x, y, z); | ||
} | ||
} | ||
|
||
public boolean canBlockStay(final World world, final int x, final int y, final int z) { | ||
return canPlaceRootBelow(world, x, y + 1, z); | ||
} | ||
|
||
public static boolean canPlaceRootBelow(final World world, final int x, final int y, final int z) { | ||
final Block blockAbove = world.getBlock(x, y, z); | ||
return blockAbove.getMaterial() == Material.rock || blockAbove.getMaterial() == Material.wood || blockAbove == ModBlocks.caveVinesGrowing || blockAbove == Blocks.soul_sand || blockAbove instanceof BlockGrass || blockAbove instanceof BlockDirt; | ||
} | ||
|
||
public boolean canPlaceBlockAt(final World world, final int x, final int y, final int z) { | ||
return super.canPlaceBlockAt(world, x, y, z) && this.canBlockStay(world, x, y, z); | ||
} | ||
|
||
public int damageDropped(final int meta) { | ||
if (meta == 1) { | ||
return 0; | ||
} | ||
return meta; | ||
} | ||
|
||
static { | ||
types = new String[] { "head", "body" }; | ||
} | ||
} |
56 changes: 56 additions & 0 deletions
56
src/main/java/KAMKEEL/PluginMod/Blocks/ItemBlock/ItemBlockCaveVines.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
package KAMKEEL.PluginMod.Blocks.ItemBlock; | ||
|
||
import KAMKEEL.PluginMod.Blocks.ModBlocks; | ||
import cpw.mods.fml.relauncher.Side; | ||
import cpw.mods.fml.relauncher.SideOnly; | ||
import net.minecraft.block.Block; | ||
import net.minecraft.client.renderer.texture.IIconRegister; | ||
import net.minecraft.entity.player.EntityPlayer; | ||
import net.minecraft.item.ItemColored; | ||
import net.minecraft.item.ItemStack; | ||
import net.minecraft.util.IIcon; | ||
import net.minecraft.world.World; | ||
|
||
public class ItemBlockCaveVines extends ItemColored | ||
{ | ||
private static final String[] types; | ||
private IIcon[] icon; | ||
|
||
public ItemBlockCaveVines(final Block block) { | ||
super(block, true); | ||
this.icon = new IIcon[1]; | ||
this.setMaxDamage(0); | ||
this.setHasSubtypes(true); | ||
} | ||
|
||
@SideOnly(Side.CLIENT) | ||
public void registerIcons(final IIconRegister iconRegister) { | ||
this.icon[0] = iconRegister.registerIcon("plug:cave_vines_head"); | ||
} | ||
|
||
public int getMetadata(final int meta) { | ||
return meta; | ||
} | ||
|
||
public String getUnlocalizedName(final ItemStack itemstack) { | ||
int meta = itemstack.getItemDamage(); | ||
if (meta < 0 || meta >= ItemBlockCaveVines.types.length) { | ||
meta = 0; | ||
} | ||
return super.getUnlocalizedName() + "_" + ItemBlockCaveVines.types[meta]; | ||
} | ||
|
||
public boolean placeBlockAt(final ItemStack stack, final EntityPlayer player, final World world, final int x, final int y, final int z, final int side, final float hitX, final float hitY, final float hitZ, final int metadata) { | ||
if (metadata == 0 && world.getBlock(x, y + 1, z) == ModBlocks.caveVines) { | ||
world.setBlock(x, y + 1, z, ModBlocks.caveVines, 1, 2); | ||
world.setBlock(x, y, z, ModBlocks.caveVines, 0, 2); | ||
--stack.stackSize; | ||
world.playSoundEffect((double)(x + 0.5f), (double)(y + 0.5f), (double)(z + 0.5f), ModBlocks.caveVines.stepSound.func_150496_b(), (ModBlocks.caveVines.stepSound.getVolume() + 1.0f) / 2.0f, ModBlocks.caveVines.stepSound.getPitch() * 0.8f); | ||
} | ||
return super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata); | ||
} | ||
|
||
static { | ||
types = new String[] { "head", "body" }; | ||
} | ||
} |
54 changes: 54 additions & 0 deletions
54
src/main/java/KAMKEEL/PluginMod/Blocks/ItemBlock/ItemBlockCaveVinesGrowing.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
package KAMKEEL.PluginMod.Blocks.ItemBlock; | ||
|
||
import KAMKEEL.PluginMod.Blocks.ModBlocks; | ||
import net.minecraft.util.*; | ||
import net.minecraft.block.*; | ||
import net.minecraft.client.renderer.texture.*; | ||
import cpw.mods.fml.relauncher.*; | ||
import net.minecraft.item.*; | ||
import net.minecraft.entity.player.*; | ||
import net.minecraft.world.*; | ||
|
||
public class ItemBlockCaveVinesGrowing extends ItemColored | ||
{ | ||
private static final String[] types; | ||
private IIcon[] icon; | ||
|
||
public ItemBlockCaveVinesGrowing(final Block block) { | ||
super(block, true); | ||
this.icon = new IIcon[1]; | ||
this.setMaxDamage(0); | ||
this.setHasSubtypes(true); | ||
} | ||
|
||
@SideOnly(Side.CLIENT) | ||
public void registerIcons(final IIconRegister iconRegister) { | ||
this.icon[0] = iconRegister.registerIcon("plug:cave_vines_head"); | ||
} | ||
|
||
public int getMetadata(final int meta) { | ||
return meta; | ||
} | ||
|
||
public String getUnlocalizedName(final ItemStack itemstack) { | ||
int meta = itemstack.getItemDamage(); | ||
if (meta < 0 || meta >= ItemBlockCaveVinesGrowing.types.length) { | ||
meta = 0; | ||
} | ||
return super.getUnlocalizedName() + "_" + ItemBlockCaveVinesGrowing.types[meta]; | ||
} | ||
|
||
public boolean placeBlockAt(final ItemStack stack, final EntityPlayer player, final World world, final int x, final int y, final int z, final int side, final float hitX, final float hitY, final float hitZ, final int metadata) { | ||
if (metadata == 0 && world.getBlock(x, y + 1, z) == ModBlocks.caveVinesGrowing) { | ||
world.setBlock(x, y + 1, z, ModBlocks.caveVinesGrowing, 1, 2); | ||
world.setBlock(x, y, z, ModBlocks.caveVinesGrowing, 0, 2); | ||
--stack.stackSize; | ||
world.playSoundEffect((double)(x + 0.5f), (double)(y + 0.5f), (double)(z + 0.5f), ModBlocks.caveVinesGrowing.stepSound.func_150496_b(), (ModBlocks.caveVinesGrowing.stepSound.getVolume() + 1.0f) / 2.0f, ModBlocks.caveVinesGrowing.stepSound.getPitch() * 0.8f); | ||
} | ||
return super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata); | ||
} | ||
|
||
static { | ||
types = new String[] { "head", "body" }; | ||
} | ||
} |
Oops, something went wrong.