Skip to content

Commit

Permalink
4.2
Browse files Browse the repository at this point in the history
  • Loading branch information
KAMKEEL committed Nov 8, 2021
1 parent db5f068 commit 694be90
Show file tree
Hide file tree
Showing 14 changed files with 395 additions and 22 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ buildscript {

apply plugin: 'forge'

version = "4.1.1"
version = "4.2"
group= "com.KAMKEEL.PluginMod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "PluginMod"

Expand Down
4 changes: 4 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
@ 4.2
+ Added Cave Vines (Growing/No Growth)
-- Fixed Falling Concrete turning to Concrete Metadata

@ 4.1.1
+ Fixed Falling Concrete Powder

Expand Down
129 changes: 129 additions & 0 deletions src/main/java/KAMKEEL/PluginMod/Blocks/BlockCaveVines.java
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 src/main/java/KAMKEEL/PluginMod/Blocks/BlockCaveVinesGrowing.java
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" };
}
}
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" };
}
}
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" };
}
}
Loading

0 comments on commit 694be90

Please sign in to comment.