[Решено] [1.7.10] Привязка итема к игроку

Статус
В этой теме нельзя размещать новые ответы.

evgeny3121

Каменная лига
Сообщения
18
Лучшие ответы
0
Симпатии
0
#1
Здравствуйте. Подскажите, как можно реализовать привязку итема к игроку? Допустим есть итем, он выполняет определенную функцию. Этот итем крафтит игрок и может его использовать, а если он передаст этот итем другому игроку, другой игрок уже не сможет воспользоваться функцией данного итема. А лучше подскажите мод, в котором реализована подобная функция.
 

evgeny3121

Каменная лига
Сообщения
18
Лучшие ответы
0
Симпатии
0
#3
nickita45 написал(а):
Гугл ж создан не зря...
ССылка
Ну если я спрашиваю о реализации данной функции, очевидно, что я не знал, что это реализуется с помощью NBT. Так что в гугл подобный запрос я не мог написать.
[merge_posts_bbcode]Добавлено: 03.07.2016 01:23:28[/merge_posts_bbcode]

Вообщем сделал вот так:
Код:
{

    private static final String TAG_PLAYER = "player";
    private static final String TAG_PLAYERUUID = "uuid";
    private static final String TAG_MYTAG = "mytag";

    @Override
    public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) {
            String uuid = getNBTTag(par1ItemStack, TAG_PLAYERUUID);
            if (uuid.equals("-")){
                setNBTData(par1ItemStack, par3EntityPlayer);
            } else if (uuid.equals(par3EntityPlayer.getUniqueID().toString())){
                дать мильон грывен
            } else {
                par3EntityPlayer.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "эта ни твайо ухади!"));
            }
        }

        return par1ItemStack;
    }


    @Override
    @SideOnly(Side.CLIENT)
    public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
        String name = getPlayerName(par1ItemStack);
        par3List.add("эта хазяйство играка" + getNBTTag(par1ItemStack, TAG_PLAYER));
    }

    
    @Override
    public void onCreated(ItemStack stack, World world, EntityPlayer player){
     setNBTData(stack, player);
    }
    
    private void setNBTData(ItemStack stack, EntityPlayer player) {
       NBTTagCompound data = new NBTTagCompound();
       data.setString(TAG_PLAYER, player.getDisplayName());
       data.setString(TAG_PLAYERUUID, player.getUniqueID().toString());
       
       stack.setTagInfo(TAG_MYTAG, data);
    }
    
    private static String getNBTTag(ItemStack stack, String tag) {
       if (stack.getTagCompound() != null) {
        NBTTagCompound data = stack.getTagCompound().getCompoundTag(TAG_MYTAG);
        return data.getString(tag);
       } else {
        return "-";
       }
    }
В итоге при нажатии ПКМ доп. инфа не появляется и пишет, что это чужое.
 

AlexSocol

Золотая лига
Сообщения
1,951
Лучшие ответы
66
Симпатии
182
#4
Как-то сложно, я просто привязывал по никнейму ._.
на лицензии твой ник всё равно никому не занять, а на пиратке для этого система авторизации сервера есть
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху