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;
}
}
Последнее редактирование модератором: