Improved the ladder hook. Added a new hook for sustained-use items.

This commit is contained in:
Eloraam 2012-01-11 19:40:04 +00:00
parent bdda88d74e
commit ad378151cf
10 changed files with 68 additions and 22 deletions

View file

@ -139,7 +139,7 @@
{ {
ItemStack itemstack = createStackedBlock(l); ItemStack itemstack = createStackedBlock(l);
if(itemstack != null) if(itemstack != null)
@@ -805,6 +848,238 @@ @@ -805,6 +848,248 @@
return iblockaccess.isBlockNormalCube(i, j, k) ? 0.2F : 1.0F; return iblockaccess.isBlockNormalCube(i, j, k) ? 0.2F : 1.0F;
} }
@ -151,11 +151,21 @@
+ +
+ /* FORGE: Implement and return true if you wish this block to behave + /* FORGE: Implement and return true if you wish this block to behave
+ * like a ladder when the player is inside. + * like a ladder when the player is inside.
+ *
+ * This is deprecated in favor of the more flexible version below.
+ */ + */
+ @Deprecated
+ public boolean isLadder() { + public boolean isLadder() {
+ return false; + return false;
+ } + }
+ +
+ /* FORGE: Implement and return true if you wish this block to behave
+ * like a ladder when the player is inside.
+ */
+ public boolean isLadder(World world, int i, int j, int k) {
+ return isLadder();
+ }
+
+ /* FORGE: Return true if the block is a normal, solid cube. This + /* FORGE: Return true if the block is a normal, solid cube. This
+ * determines indirect power state, entity ejection from blocks, and a few + * determines indirect power state, entity ejection from blocks, and a few
+ * others. + * others.

View file

@ -5,7 +5,7 @@
} }
+ /* FORGE: Implemented base method, see Block.isLadder */ + /* FORGE: Implemented base method, see Block.isLadder */
+ public boolean isLadder() { + public boolean isLadder(World world, int i, int j, int k) {
+ return true; + return true;
+ } + }
+ +

View file

@ -7,7 +7,7 @@
- return worldObj.getBlockId(i, j, k) == Block.ladder.blockID; - return worldObj.getBlockId(i, j, k) == Block.ladder.blockID;
+ Block block=Block.blocksList[worldObj.getBlockId(i,j,k)]; + Block block=Block.blocksList[worldObj.getBlockId(i,j,k)];
+ if(block==null) return false; + if(block==null) return false;
+ return block.isLadder(); + return block.isLadder(worldObj,i,j,k);
} }
public void writeEntityToNBT(NBTTagCompound nbttagcompound) public void writeEntityToNBT(NBTTagCompound nbttagcompound)

View file

@ -11,7 +11,15 @@
import java.util.*; import java.util.*;
// Referenced classes of package net.minecraft.src: // Referenced classes of package net.minecraft.src:
@@ -502,7 +506,16 @@ @@ -166,6 +170,7 @@
clearItemInUse();
} else
{
+ itemInUse.getItem().onUsingItemTick(itemInUse,this,itemInUseCount);
if(itemInUseCount <= 25 && itemInUseCount % 4 == 0)
{
func_35201_a(itemstack, 5);
@@ -502,7 +507,16 @@
public void dropCurrentItem() public void dropCurrentItem()
{ {
@ -29,7 +37,7 @@
} }
public void dropPlayerItem(ItemStack itemstack) public void dropPlayerItem(ItemStack itemstack)
@@ -548,6 +561,8 @@ @@ -548,6 +562,8 @@
worldObj.spawnEntityInWorld(entityitem); worldObj.spawnEntityInWorld(entityitem);
} }
@ -38,7 +46,7 @@
public float getCurrentPlayerStrVsBlock(Block block) public float getCurrentPlayerStrVsBlock(Block block)
{ {
float f = inventory.getStrVsBlock(block); float f = inventory.getStrVsBlock(block);
@@ -576,6 +591,45 @@ @@ -576,6 +592,45 @@
return f1; return f1;
} }
@ -84,7 +92,7 @@
public boolean canHarvestBlock(Block block) public boolean canHarvestBlock(Block block)
{ {
return inventory.canHarvestBlock(block); return inventory.canHarvestBlock(block);
@@ -774,6 +828,25 @@ @@ -774,6 +829,25 @@
protected void damageEntity(DamageSource damagesource, int i) protected void damageEntity(DamageSource damagesource, int i)
{ {
@ -110,7 +118,7 @@
if(!damagesource.isUnblockable() && func_35162_ad()) if(!damagesource.isUnblockable() && func_35162_ad())
{ {
i = 1 + i >> 1; i = 1 + i >> 1;
@@ -825,7 +898,9 @@ @@ -825,7 +899,9 @@
public void destroyCurrentEquippedItem() public void destroyCurrentEquippedItem()
{ {
@ -120,7 +128,7 @@
} }
public double getYOffset() public double getYOffset()
@@ -957,6 +1032,10 @@ @@ -957,6 +1033,10 @@
public EnumStatus sleepInBedAt(int i, int j, int k) public EnumStatus sleepInBedAt(int i, int j, int k)
{ {

View file

@ -47,7 +47,7 @@
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer) public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
{ {
return itemstack; return itemstack;
@@ -278,6 +297,29 @@ @@ -278,6 +297,34 @@
return maxDamage > 0 && !hasSubtypes; return maxDamage > 0 && !hasSubtypes;
} }
@ -73,11 +73,16 @@
+ EntityPlayer player) { + EntityPlayer player) {
+ return false; + return false;
+ } + }
+
+ /* FORGE: Called each tick while using an item.
+ */
+ public void onUsingItemTick(ItemStack ist, EntityPlayer player, int count) {
+ }
+ +
public boolean hitEntity(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1) public boolean hitEntity(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1)
{ {
return false; return false;
@@ -473,6 +515,32 @@ @@ -473,6 +520,32 @@
{ {
return 0; return 0;
} }

View file

@ -124,7 +124,7 @@
{ {
ItemStack itemstack = createStackedBlock(l); ItemStack itemstack = createStackedBlock(l);
if(itemstack != null) if(itemstack != null)
@@ -725,6 +767,236 @@ @@ -725,6 +767,246 @@
return blockMaterial.getMaterialMobility(); return blockMaterial.getMaterialMobility();
} }
@ -136,11 +136,21 @@
+ +
+ /* FORGE: Implement and return true if you wish this block to behave + /* FORGE: Implement and return true if you wish this block to behave
+ * like a ladder when the player is inside. + * like a ladder when the player is inside.
+ *
+ * This is deprecated in favor of the more flexible version below.
+ */ + */
+ @Deprecated
+ public boolean isLadder() { + public boolean isLadder() {
+ return false; + return false;
+ } + }
+ +
+ /* FORGE: Implement and return true if you wish this block to behave
+ * like a ladder when the player is inside.
+ */
+ public boolean isLadder(World world, int i, int j, int k) {
+ return isLadder();
+ }
+
+ /* FORGE: Return true if the block is a normal, solid cube. This + /* FORGE: Return true if the block is a normal, solid cube. This
+ * determines indirect power state, entity ejection from blocks, and a few + * determines indirect power state, entity ejection from blocks, and a few
+ * others. + * others.

View file

@ -5,7 +5,7 @@
} }
+ /* FORGE: Implemented base method, see Block.isLadder */ + /* FORGE: Implemented base method, see Block.isLadder */
+ public boolean isLadder() { + public boolean isLadder(World world, int i, int j, int k) {
+ return true; + return true;
+ } + }
+ +

View file

@ -7,7 +7,7 @@
- return worldObj.getBlockId(i, j, k) == Block.ladder.blockID; - return worldObj.getBlockId(i, j, k) == Block.ladder.blockID;
+ Block block=Block.blocksList[worldObj.getBlockId(i,j,k)]; + Block block=Block.blocksList[worldObj.getBlockId(i,j,k)];
+ if(block==null) return false; + if(block==null) return false;
+ return block.isLadder(); + return block.isLadder(worldObj,i,j,k);
} }
public void writeEntityToNBT(NBTTagCompound nbttagcompound) public void writeEntityToNBT(NBTTagCompound nbttagcompound)

View file

@ -11,7 +11,15 @@
// Referenced classes of package net.minecraft.src: // Referenced classes of package net.minecraft.src:
// EntityLiving, InventoryPlayer, FoodStats, PlayerCapabilities, // EntityLiving, InventoryPlayer, FoodStats, PlayerCapabilities,
// ContainerPlayer, World, ChunkCoordinates, DataWatcher, // ContainerPlayer, World, ChunkCoordinates, DataWatcher,
@@ -447,7 +451,16 @@ @@ -142,6 +146,7 @@
clearItemInUse();
} else
{
+ itemInUse.getItem().onUsingItemTick(itemInUse,this,itemInUseCount);
if(itemInUseCount <= 25 && itemInUseCount % 4 == 0)
{
func_35208_b(itemstack, 5);
@@ -447,7 +452,16 @@
public void dropCurrentItem() public void dropCurrentItem()
{ {
@ -29,7 +37,7 @@
} }
public void dropPlayerItem(ItemStack itemstack) public void dropPlayerItem(ItemStack itemstack)
@@ -493,6 +506,8 @@ @@ -493,6 +507,8 @@
worldObj.spawnEntityInWorld(entityitem); worldObj.spawnEntityInWorld(entityitem);
} }
@ -38,7 +46,7 @@
public float getCurrentPlayerStrVsBlock(Block block) public float getCurrentPlayerStrVsBlock(Block block)
{ {
float f = inventory.getStrVsBlock(block); float f = inventory.getStrVsBlock(block);
@@ -521,6 +536,45 @@ @@ -521,6 +537,45 @@
return f1; return f1;
} }
@ -84,7 +92,7 @@
public boolean canHarvestBlock(Block block) public boolean canHarvestBlock(Block block)
{ {
return inventory.canHarvestBlock(block); return inventory.canHarvestBlock(block);
@@ -718,7 +772,26 @@ @@ -718,7 +773,26 @@
} }
protected void damageEntity(DamageSource damagesource, int i) protected void damageEntity(DamageSource damagesource, int i)
@ -112,7 +120,7 @@
if(!damagesource.isUnblockable() && func_35180_G()) if(!damagesource.isUnblockable() && func_35180_G())
{ {
i = 1 + i >> 1; i = 1 + i >> 1;
@@ -770,7 +843,9 @@ @@ -770,7 +844,9 @@
public void destroyCurrentEquippedItem() public void destroyCurrentEquippedItem()
{ {
@ -122,7 +130,7 @@
} }
public double getYOffset() public double getYOffset()
@@ -896,6 +971,10 @@ @@ -896,6 +972,10 @@
public EnumStatus sleepInBedAt(int i, int j, int k) public EnumStatus sleepInBedAt(int i, int j, int k)
{ {

View file

@ -47,7 +47,7 @@
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer) public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
{ {
return itemstack; return itemstack;
@@ -266,6 +285,29 @@ @@ -266,6 +285,34 @@
return maxDamage > 0 && !hasSubtypes; return maxDamage > 0 && !hasSubtypes;
} }
@ -73,11 +73,16 @@
+ EntityPlayer player) { + EntityPlayer player) {
+ return false; + return false;
+ } + }
+
+ /* FORGE: Called each tick while using an item.
+ */
+ public void onUsingItemTick(ItemStack ist, EntityPlayer player, int count) {
+ }
+ +
public boolean hitEntity(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1) public boolean hitEntity(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1)
{ {
return false; return false;
@@ -414,6 +456,26 @@ @@ -414,6 +461,26 @@
return 0; return 0;
} }