mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
102 lines
2.7 KiB
Java
102 lines
2.7 KiB
Java
package com.hbm.items.tool;
|
|
|
|
import cpw.mods.fml.common.eventhandler.Event.Result;
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.block.IGrowable;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.world.World;
|
|
import net.minecraft.world.WorldServer;
|
|
import net.minecraftforge.common.MinecraftForge;
|
|
import net.minecraftforge.common.util.FakePlayerFactory;
|
|
import net.minecraftforge.event.entity.player.BonemealEvent;
|
|
|
|
public class ItemFertilizer extends Item {
|
|
|
|
@Override
|
|
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) {
|
|
|
|
if(!player.canPlayerEdit(x, y, z, side, stack)) {
|
|
return false;
|
|
}
|
|
|
|
world.captureBlockSnapshots = false; //what the fuck is the point of this?!
|
|
|
|
boolean didSomething = false;
|
|
|
|
for(int i = x - 1; i <= x + 1; i++) {
|
|
for(int j = y - 1; j <= y + 1; j++) {
|
|
for(int k = z - 1; k <= z + 1; k++) {
|
|
boolean success = fertilize(world, i, j, k, player, i == x && j == y && k == z);
|
|
didSomething = didSomething || success;
|
|
if(success && !world.isRemote) {
|
|
world.playAuxSFX(2005, i, j, k, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(didSomething && !player.capabilities.isCreativeMode) {
|
|
stack.stackSize--;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static boolean useFertillizer(ItemStack stack, World world, int x, int y, int z) {
|
|
|
|
if(!(world instanceof WorldServer)) return false;
|
|
EntityPlayer player = FakePlayerFactory.getMinecraft((WorldServer)world);
|
|
|
|
boolean didSomething = false;
|
|
|
|
for(int i = x - 1; i <= x + 1; i++) {
|
|
for(int j = y - 1; j <= y + 1; j++) {
|
|
for(int k = z - 1; k <= z + 1; k++) {
|
|
boolean success = fertilize(world, i, j, k, player, i == x && j == y && k == z);
|
|
didSomething = didSomething || success;
|
|
if(success && !world.isRemote) {
|
|
world.playAuxSFX(2005, i, j, k, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(didSomething) stack.stackSize--;
|
|
|
|
return didSomething;
|
|
}
|
|
|
|
public static boolean fertilize(World world, int x, int y, int z, EntityPlayer player, boolean force) {
|
|
|
|
Block b = world.getBlock(x, y, z);
|
|
|
|
BonemealEvent event = new BonemealEvent(player, world, b, x, y, z);
|
|
if(MinecraftForge.EVENT_BUS.post(event)) {
|
|
return false;
|
|
}
|
|
|
|
if(event.getResult() == Result.ALLOW) {
|
|
return true;
|
|
}
|
|
|
|
if(b instanceof IGrowable) {
|
|
IGrowable growable = (IGrowable) b;
|
|
|
|
if(growable.func_149851_a(world, x, y, z, world.isRemote)) {
|
|
|
|
if(!world.isRemote) {
|
|
if(force || growable.func_149852_a(world, world.rand, x, y, z)) {
|
|
growable.func_149853_b(world, world.rand, x, y, z);
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|