- 45
- 1
Добрый день!
[font=Georgia,]Помогите пожалуйста оптимизировать код для итема телепортации, проблема в том, что создаются сразу два итема, один из ниx пустой (ненужный).[/font]
[font=Georgia,]
[/font]
[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][/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,]