Персональный предмет!

Версия Minecraft
1.7.10
48
0
Java:
public class SavedPersonal {

private static final String TAG_NAME = "pers";


public static void initDrops(EntityPlayer p) {
NBTTagCompound tag = new NBTTagCompound();
InventoryPlayer inventory = p.inventory;
int numSlots = inventory.getSizeInventory();
tag.setInteger("num_slots", numSlots);
NBTTagList stacksList = new NBTTagList();
tag.setTag("Slots", stacksList);

for(int entityData = 0; entityData < numSlots; ++entityData) {
ItemStack stack = inventory.getStackInSlot(entityData);
if(stack != null && isPersonals(stack)) {
NBTTagCompound stackTag = new NBTTagCompound();
stackTag.setByte("Slot", (byte)entityData);
stack.writeToNBT(stackTag);
stacksList.appendTag(stackTag);
} else {
dropItems(p, stack);
}

inventory.setInventorySlotContents(entityData, (ItemStack)null);
}

NBTTagCompound var8 = p.getEntityData();
if(!var8.hasKey("PlayerPersisted")) {
var8.setTag("PlayerPersisted", new NBTTagCompound());
}

var8.getCompoundTag("PlayerPersisted").setTag("pers", tag);
}

public static void retrieveDropss(EntityPlayer p) {
if(TestMOD.SERVER){
NBTTagCompound tag = p.getEntityData().getCompoundTag("PlayerPersisted").getCompoundTag("pers");
if(!tag.hasNoTags()) {
ArrayList notAdded = new ArrayList();
int numSlots = tag.getInteger("num_slots");
NBTTagList stacksList = tag.getTagList("Slots", 10);

for(int i$ = 0; i$ < stacksList.tagCount(); ++i$) {
NBTTagCompound stack = stacksList.getCompoundTagAt(i$);
int slot = stack.getByte("Slot") & 255;
ItemStack stack1 = ItemStack.loadItemStackFromNBT(stack);
if(p.inventory.getStackInSlot(slot) == null) {
p.inventory.setInventorySlotContents(slot, stack1);
} else {
notAdded.add(stack1);
}
}

Iterator var9 = notAdded.iterator();

while(var9.hasNext()) {
ItemStack var10 = (ItemStack)var9.next();
addItems(p, var10);
}

p.getEntityData().getCompoundTag("PlayerPersisted").removeTag("pers");
}
}
}
public static void addItems(EntityPlayer player, ItemStack stack) {
if(TestMOD.SERVER){
if(stack != null && stack.stackSize != 0) {
if(!player.inventory.addItemStackToInventory(stack)) {
EntityItem entityitem = new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, stack);
entityitem.delayBeforeCanPickup = 5;
player.worldObj.spawnEntityInWorld(entityitem);
}

}
}
}

private static void dropItems(EntityPlayer p, ItemStack stack) {
p.dropPlayerItemWithRandomChoice(stack, true);
}

public static boolean isPersonals(ItemStack stack) {
return stack.stackTagCompound != null && stack.stackTagCompound.getInteger("no_pers") != 0;
}
}
Персональный предмет все равно выпадает,хелп.
 
Последнее редактирование модератором:
1,038
57
229
А можно это оформить как
Код:
//код
В любом случае, тебе надо отлавливать событие на Drop.
Вообще не понимаю зачем этот класс создан и какую роль он должен играть? где хуки на события?
 
Последнее редактирование:
3,005
192
592
Кхм, а где вопрос? Это?
Персональный предмет все равно выпадает,хелп.
Но.. "?" знака нету.
~
Как минимум нужно больше информации, что ты хочешь сделать, где ты вызываешь хотя бы тот код, который у тебя уже есть..
 
7,099
324
1,510
Пхд, ТС хочет сделать что-то вроде soulbound из enderio, заодно, подсказка, где можно взять готовое решение
 
Сверху