Помогите сократить код

Версия Minecraft
1.7.10
Добрый день!
[font=Georgia,]Помогите пожалуйста оптимизировать код для итема телепортации, проблема в том, что создаются сразу два итема, один из ниx пустой (ненужный).[/font]
[font=Georgia,]
[/font]
[font=Georgia,][size=small][font=Georgia,]package ru.sanx.wom;[/font]
[/font][/size]



[font=Georgia,]import cpw.mods.fml.relauncher.Side;[/font]

[font=Georgia,]import cpw.mods.fml.relauncher.SideOnly;[/font]

[font=Georgia,]import net.minecraft.creativetab.CreativeTabs;[/font]

[font=Georgia,]import net.minecraft.entity.player.EntityPlayer;[/font]

[font=Georgia,]import net.minecraft.item.Item;[/font]

[font=Georgia,]import net.minecraft.item.ItemStack;[/font]

[font=Georgia,]import net.minecraft.nbt.NBTTagCompound;[/font]

[font=Georgia,]import net.minecraft.util.StatCollector;[/font]

[font=Georgia,]import net.minecraft.world.World;[/font]

[font=Georgia,]import net.minecraftforge.common.util.Constants.NBT;[/font]



[font=Georgia,]import java.util.List;[/font]



[font=Georgia,]public class Tp_town extends Item {[/font]



[font=Georgia,]public Tp_town() {[/font]

[font=Georgia,]super();[/font]

[font=Georgia,]this.setCreativeTab(CreativeTabs.tabMaterials);[/font]

[font=Georgia,]this.setTextureName("wom:tp_town");[/font]

[font=Georgia,]setHasSubtypes(true);[/font]

[font=Georgia,]setMaxDamage(0);[/font]

[font=Georgia,]}[/font]



[font=Georgia,]@Override[/font]

[font=Georgia,]public ItemStack onItemRightClick(ItemStack is, World world, EntityPlayer player) {[/font]

[font=Georgia,]NBTTagCompound nbt = is.getTagCompound();[/font]

[font=Georgia,]if (nbt == null || nbt != null && (!nbt.hasKey("CordX") || !nbt.hasKey("CordY") || !nbt.hasKey("CordZ"))) {[/font]

[font=Georgia,]player.inventory.addItemStackToInventory(addNBT(is.copy(), world.provider.dimensionId, player.posX, player.posY, player.posZ));[/font]

[font=Georgia,]} else {[/font]

[font=Georgia,]if (nbt.hasKey("DimensionId", NBT.TAG_INT) && [/font]

[font=Georgia,]nbt.hasKey("CordX", NBT.TAG_DOUBLE) && [/font]

[font=Georgia,]nbt.hasKey("CordY", NBT.TAG_DOUBLE) && [/font]

[font=Georgia,]nbt.hasKey("CordZ", NBT.TAG_DOUBLE)) {[/font]

[font=Georgia,]int dimId = nbt.getInteger("DimensionId");[/font]

[font=Georgia,]if (player.worldObj.provider.dimensionId != dimId) {[/font]

[font=Georgia,]} else player.setPosition([/font]

[font=Georgia,]nbt.getDouble("CordX"), [/font]

[font=Georgia,]nbt.getDouble("CordY"), [/font]

[font=Georgia,]nbt.getDouble("CordZ"));[/font]

[font=Georgia,]}[/font]

[font=Georgia,]else if (nbt.hasKey("DimensionId", NBT.TAG_INT) && [/font]

[font=Georgia,]nbt.hasKey("CordX", NBT.TAG_INT) && [/font]

[font=Georgia,]nbt.hasKey("CordY", NBT.TAG_INT) && [/font]

[font=Georgia,]nbt.hasKey("CordZ", NBT.TAG_INT)) {[/font]

[font=Georgia,]int dimId = nbt.getInteger("DimensionId");[/font]

[font=Georgia,]if (player.worldObj.provider.dimensionId != dimId) {[/font]

[font=Georgia,]} else player.setPosition([/font]

[font=Georgia,](double)nbt.getInteger("CordX") + 0.5D, [/font]

[font=Georgia,](double)nbt.getInteger("CordY") + 1D, [/font]

[font=Georgia,](double)nbt.getInteger("CordZ") + 0.5D);[/font]

[font=Georgia,]}[/font]

[font=Georgia,]}[/font]

[font=Georgia,]if (!player.capabilities.isCreativeMode) {[/font]

[font=Georgia,]--is.stackSize;[/font]

[font=Georgia,]if (is.stackSize == 0)[/font]

[font=Georgia,]if (is == player.getCurrentEquippedItem())[/font]

[font=Georgia,]player.inventory.setInventorySlotContents(player.inventory.currentItem, null);[/font]

[font=Georgia,]else[/font]

[font=Georgia,]is = null;[/font]

[font=Georgia,]}[/font]

[font=Georgia,]return super.onItemRightClick(is, world, player);[/font]

[font=Georgia,]}[/font]



[font=Georgia,]@Override[/font]

[font=Georgia,]public void addInformation(ItemStack is, EntityPlayer player, List list, boolean flag) {[/font]

[font=Georgia,]NBTTagCompound nbt = is.getTagCompound();[/font]

[font=Georgia,]if (nbt != null && [/font]

[font=Georgia,](([/font]

[font=Georgia,]nbt.hasKey("CordX", NBT.TAG_DOUBLE) && [/font]

[font=Georgia,]nbt.hasKey("CordY", NBT.TAG_DOUBLE) && [/font]

[font=Georgia,]nbt.hasKey("CordZ", NBT.TAG_DOUBLE)[/font]

[font=Georgia,]) || ([/font]

[font=Georgia,]nbt.hasKey("CordX", NBT.TAG_INT) && [/font]

[font=Georgia,]nbt.hasKey("CordY", NBT.TAG_INT) && [/font]

[font=Georgia,]nbt.hasKey("CordZ", NBT.TAG_INT)[/font]

[font=Georgia,]))[/font]

[font=Georgia,]) {[/font]

[font=Georgia,]list.add(StatCollector.translateToLocal("txt.tp_town.name"));[/font]

[font=Georgia,]} else {[/font]

[font=Georgia,]list.add("Empty scroll.");[/font]

[font=Georgia,]}[/font]

[font=Georgia,]}[/font]



[font=Georgia,]@SideOnly(Side.CLIENT)[/font]

[font=Georgia,]@Override[/font]

[font=Georgia,]public void getSubItems(Item id, CreativeTabs table, List list) {[/font]

[font=Georgia,]list.add(new ItemStack(id, 1, 0));[/font]

[font=Georgia,]list.add(addNBT(new ItemStack(id, 1, 0), 0, 0, 0, 0));[/font]

[font=Georgia,]}[/font]



[font=Georgia,]public static ItemStack addNBT(ItemStack is, int dimensionId, double x, double y, double z) {[/font]

[font=Georgia,]if (is == null)[/font]

[font=Georgia,]is = new ItemStack(wom.tp_town, 1, 0);[/font]

[font=Georgia,]else[/font]

[font=Georgia,]is.stackSize = 1;[/font]

[font=Georgia,]NBTTagCompound nbt;[/font]

[font=Georgia,]if (is.hasTagCompound())[/font]

[font=Georgia,]nbt = is.getTagCompound();[/font]

[font=Georgia,]else[/font]

[font=Georgia,]nbt = new NBTTagCompound();[/font]

[font=Georgia,]nbt.setInteger("DimensionId", dimensionId);[/font]

[font=Georgia,]nbt.setDouble("CordX", x);[/font]

[font=Georgia,]nbt.setDouble("CordY", y);[/font]

[font=Georgia,]nbt.setDouble("CordZ", z);[/font]

[font=Georgia,]is.setTagCompound(nbt);[/font]

[font=Georgia,]return is;[/font]

[font=Georgia,]}[/font]



[font=Georgia,]public static ItemStack addNBT(ItemStack is, int dimensionId, int x, int y, int z) {[/font]

[font=Georgia,]if (is == null)[/font]

[font=Georgia,]is = new ItemStack(wom.tp_town, 1, 0);[/font]

[font=Georgia,]else[/font]

[font=Georgia,]is.stackSize = 1;[/font]

[font=Georgia,]NBTTagCompound nbt;[/font]

[font=Georgia,]if (is.hasTagCompound())[/font]

[font=Georgia,]nbt = is.getTagCompound();[/font]

[font=Georgia,]else[/font]

[font=Georgia,]nbt = new NBTTagCompound();[/font]

[font=Georgia,]nbt.setInteger("DimensionId", dimensionId);[/font]

[font=Georgia,]nbt.setInteger("CordX", -412);[/font]

[font=Georgia,]nbt.setInteger("CordY", 68);[/font]

[font=Georgia,]nbt.setInteger("CordZ", -879);[/font]

[font=Georgia,]is.setTagCompound(nbt);[/font]

[font=Georgia,]return is;[/font]

[font=Georgia,]}[/font]


[font=Georgia,][size=small][font=Georgia,]}[/font][/font][/size]
[font=Georgia,]
[/font]
 

timaxa007

Модератор
5,831
409
672
Код:
@Override
public void getSubItems(Item id, CreativeTabs table, List list) {
list.add(new ItemStack(id, 1, 0));
list.add(addNBT(new ItemStack(id, 1, 0), 0, 0, 0, 0));
}
на
Код:
@Override
public void getSubItems(Item id, CreativeTabs table, List list) {
list.add(new ItemStack(id));
}
Если я правельно понял тебя.
 
timaxa007 написал(а):
Код:
@Override
public void getSubItems(Item id, CreativeTabs table, List list) {
list.add(new ItemStack(id, 1, 0));
list.add(addNBT(new ItemStack(id, 1, 0), 0, 0, 0, 0));
}
на
Код:
@Override
public void getSubItems(Item id, CreativeTabs table, List list) {
list.add(new ItemStack(id));
}
Если я правельно понял тебя.

Пустой итем убрался, а вместе с ним и подпись от нужного итема list.add(StatCollector.translateToLocal("txt.tp_town.name"));


Всё, сделал. Спасибо!
 
Сверху