- 26
- 1
Я только начал писать на java, решил для кирки сделать фичу, когда из рук ее убираешь, пропадает бафф. Совместив это с режимами, у меня что-то пошло не так. Полагаю я не верно вставил OnUpdate, но если его выносить за режимы, то он будет просто одним глобальным баффом. Ошибка у OnUpdate и его переменных
Java:
package ru.fcorecode.arcanereborn.items.tools;
import java.util.List;
import cpw.mods.fml.common.eventhandler.EventPriority;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
import cpw.mods.fml.common.gameevent.TickEvent.ServerTickEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.util.EnumHelper;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
import ru.fcorecode.arcanereborn.Main;
import ru.fcorecode.arcanereborn.configs.ConfigInfo;
import ru.fcorecode.arcanereborn.configs.RandomUtils;
import ru.fcorecode.arcanereborn.configs.Rarity;
import ru.fcorecode.arcanereborn.configs.ModToolMaterial;
import net.minecraft.util.StatCollector;
public class BasePickaxe extends ItemPickaxe {
int mode = 1;
public BasePickaxe(String name, String texture, int maxStackSize, ToolMaterial baseHAMMER) {
super(baseHAMMER);
this.canRepair = false;
this.setUnlocalizedName(name);
this.setTextureName(Main.MODID + ":" + texture);
this.setCreativeTab(ConfigInfo.tabAFRebornTools);
this.maxStackSize = 1;
GameRegistry.registerItem(this, name);
}
public EnumRarity getRarity(ItemStack itemStack) {
return Rarity._legendary;
}
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
par3List.add("" + Rarity._legendary.rarityColor + Rarity._legendary.rarityName);
par3List.add(" " + " ");
par3List.add(StatCollector.translateToLocal("item.effency.lore") + " " + ModToolMaterial.digSpeedbaseHAMMER);
par3List.add(" " + " ");
par3List.add(StatCollector.translateToLocal("item.par3MEDIUM1.lore"));
par3List.add(StatCollector.translateToLocal("item.par3MEDIUM2.lore"));
par3List.add(StatCollector.translateToLocal("item.par3MEDIUM3.lore"));
par3List.add(StatCollector.translateToLocal("item.par3MEDIUM4.lore"));
par3List.add(StatCollector.translateToLocal("item.par3MEDIUM5.lore"));
int a, b, c;
a = this.getMaxDamage();
b = this.getDamage(par1ItemStack);
c = a - b;
par3List.add(" " + " ");
par3List.add(StatCollector.translateToLocal("item.GetDamage.lore") + " " + c + " " + StatCollector.translateToLocal("item.GetDamageL.lore"));
}
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) {
if (world.isRemote) {
if (mode == 1) {
public onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5)
{
super.onUpdate(stack, world, entity, par4, par5);
if (entity instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer) entity;
ItemStack equipped = player.getCurrentEquippedItem();
if (equipped == stack)
{
player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 2, 2, true));
}
mode = 2;
}}} else if (mode == 2) {
public void onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5)
{
super.onUpdate(stack, world, entity, par4, par5);
if (entity instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer) entity;
ItemStack equipped = player.getCurrentEquippedItem();
if (equipped == stack)
{
player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 2, 2, true));
}
mode = 3;
}
}
} else if (mode == 3) {
public void onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5)
{
super.onUpdate(stack, world, entity, par4, par5);
if (entity instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer) entity;
ItemStack equipped = player.getCurrentEquippedItem();
if (equipped == stack)
{
player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 2, 2, true));
}
mode = 0;
}}
} else if (mode == 0) {
player.addChatMessage(new ChatComponentText("Все было выключено."));
player.removePotionEffect(Potion.blindness.id);
mode = 1;
}
}
itemStack.damageItem(1, player);
return itemStack;
}
@Override
public boolean onBlockStartBreak(ItemStack stack, int x, int y, int z, EntityPlayer player) {
World world = player.worldObj;
Block block = world.getBlock(x, y, z);
MovingObjectPosition object = RandomUtils.raytraceFromEntity(world, player, false, 4.5D);
if (object == null) {
return super.onBlockDestroyed(stack, world, block, x, y, z, player);
}
int side = object.sideHit;
int xmove = 0;
int ymove = 0;
int zmove = 0;
if (side == 0 || side == 1) {
xmove = 1;
zmove = 1;
} else {
ymove = 1;
if (side == 4 || side == 5) {
zmove = 1;
} else {
xmove = 1;
}
}
float strength = ForgeHooks.blockStrength(block, player, world, x, y, z);
if (player.isSneaking() && ConfigInfo.EnableHammerShiftOneBlock &&
(player.experienceLevel >= 20 || player.capabilities.isCreativeMode)) {
checkBlockBreak(world, player, x, y, z, stack, strength, block, side);
} else {
for (int i = -xmove; i <= xmove; i++) {
for (int j = -ymove; j <= ymove; j++) {
for (int k = -zmove; k <= zmove; k++) {
if (i != x && j != y && k != z) {
checkBlockBreak(world, player, x + i, y + j, z + k, stack, strength, block, side);
}
}
}
}
}
return false;
}
public void checkBlockBreak(World world, EntityPlayer player, int x, int y, int z, ItemStack stack, float strength, Block originalBlock, int side) {
Block breakBlock = world.getBlock(x, y, z);
if (this.canHarvestBlock(breakBlock, stack)) {
float newStrength = ForgeHooks.blockStrength(breakBlock, player, world, x, y, z);
Material material = originalBlock.getMaterial();
if (newStrength > 0f && strength / newStrength <= 10f && breakBlock.getMaterial() == material) {
RandomUtils.breakBlock(world, breakBlock, x, y, z, side, player);
if ((double) breakBlock.getBlockHardness(world, x, y, z) != 0.0D) {
stack.damageItem(1, player);
}
}
}
}
}