change invntory logic
This commit is contained in:
parent
c6ba1703a2
commit
9f452b410e
11 changed files with 118 additions and 9 deletions
|
@ -15,17 +15,21 @@ public class CommandMore extends Command {
|
|||
|
||||
this.setParamsOptional();
|
||||
this.addFlag("all", 'a');
|
||||
this.addInt("amount", 'n', 2, 100000000, 100);
|
||||
this.setParamsRequired();
|
||||
this.addPlayerEntityList("players", 'p', true, UserPolicy.NON_ADMINS_OR_SELF);
|
||||
}
|
||||
|
||||
private int addItems(ItemStack stack) {
|
||||
int diff = stack.getMaxStackSize() - stack.getSize();
|
||||
stack.setSize(stack.getMaxStackSize());
|
||||
private int addItems(ItemStack stack, int amount) {
|
||||
int max = Math.min(stack.getMaxStackSize(), amount);
|
||||
if(stack.getSize() >= max)
|
||||
return 0;
|
||||
int diff = max - stack.getSize();
|
||||
stack.setSize(max);
|
||||
return diff;
|
||||
}
|
||||
|
||||
public void exec(CommandEnvironment env, Executor exec, boolean all, List<EntityNPC> players) {
|
||||
public void exec(CommandEnvironment env, Executor exec, boolean all, int amount, List<EntityNPC> players) {
|
||||
int done = 0;
|
||||
int added = 0;
|
||||
for(EntityNPC player : players) {
|
||||
|
@ -34,11 +38,11 @@ public class CommandMore extends Command {
|
|||
for(int z = 0; z < player.getSizeInventory(); z++) {
|
||||
ItemStack item = player.getStackInSlot(z);
|
||||
if(item != null)
|
||||
add += this.addItems(item);
|
||||
add += this.addItems(item, amount);
|
||||
}
|
||||
}
|
||||
else if(player.getHeldItem() != null) {
|
||||
add += this.addItems(player.getHeldItem());
|
||||
add += this.addItems(player.getHeldItem(), amount);
|
||||
}
|
||||
if(add > 0) {
|
||||
exec.log("%d " + (add == 1 ? "Gegenstand" : "Gegenstände") + " wurde" + (add == 1 ? "" : "n") + " dem Inventar von %s hinzugefügt", add, player.getRawName());
|
||||
|
|
|
@ -2707,7 +2707,9 @@ public class Player extends User implements Executor, IPlayer
|
|||
for(int z = 0; z < this.entity.getSizeInventory(); z++) {
|
||||
ItemStack stack = this.entity.getStackInSlot(z);
|
||||
if(stack != null) {
|
||||
stack.setSize(stack.getMaxStackSize());
|
||||
int max = Math.min(stack.getMaxStackSize(), 100);
|
||||
if(stack.getSize() < max)
|
||||
stack.setSize(max);
|
||||
stack.setRepairCost(0);
|
||||
if(stack.getItem().getMaxDamage() > 0)
|
||||
stack.setItemDamage(0);
|
||||
|
@ -2716,7 +2718,9 @@ public class Player extends User implements Executor, IPlayer
|
|||
}
|
||||
else if(this.entity.getHeldItem() != null) {
|
||||
ItemStack stack = this.entity.getHeldItem();
|
||||
stack.setSize(stack.getMaxStackSize());
|
||||
int max = Math.min(stack.getMaxStackSize(), 100);
|
||||
if(stack.getSize() < max)
|
||||
stack.setSize(max);
|
||||
stack.setRepairCost(0);
|
||||
if(stack.getItem().getMaxDamage() > 0)
|
||||
stack.setItemDamage(0);
|
||||
|
@ -2943,6 +2947,7 @@ public class Player extends User implements Executor, IPlayer
|
|||
return;
|
||||
slot.putStack(stack);
|
||||
}
|
||||
this.entity.openContainer.resortStacks(this.entity);
|
||||
this.entity.openContainer.detectAndSendChanges();
|
||||
this.entity.worldObj.playSoundAtEntity(this.entity, SoundEvent.POP, 0.2F);
|
||||
if(amount == 1)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue