This will make it so when you remove an item from your bank, any items that are later in the bank will move to fill that slot. Took me a while to get this
ARRANGE BUG FIXED
In client.java replace your "resetBank" method with this:
Code:
public void resetBank() {
outStream.createFrameVarSizeWord(53);
outStream.writeWord(5382); // bank
outStream.writeWord(playerBankSize); // number of items
for (int i = 0; i < playerBankSize; i++) {
if (bankItems[i] == 0) {
bankItemsN[i] = bankItemsN[i+1];
bankItems[i] = bankItems[i + 1];
bankItems[i+1] = 0;
bankItemsN[i+1] = 0;
}
if (bankItemsN[i] > 254) {
outStream.writeByte(255);
outStream.writeDWord_v2(bankItemsN[i]);
} else {
outStream.writeByte(bankItemsN[i]); // amount
}
if (bankItemsN[i] < 1) {
bankItems[i] = 0;
}
if ((bankItems[i] > 20000) || (bankItems[i] < 0)) {
bankItems[i] = 20000;
}
outStream.writeWordBigEndianA(bankItems[i]); // itemID
}
outStream.endFrameVarSizeWord();
}
Replace "fromBank" with this:
Code:
public void fromBank(int itemID, int fromSlot, int amount) {
if (!IsBanking) {
closeInterface();
return;
}
if (amount > 0) {
if (bankItems[fromSlot] > 0) {
if (!takeAsNote) {
if (Item.itemStackable[bankItems[fromSlot] - 1]) {
if (bankItemsN[fromSlot] > amount) {
if (addItem((bankItems[fromSlot] - 1), amount)) {
bankItemsN[fromSlot] -= amount;
resetBank();
resetItems(5064);
}
} else {
if (addItem((bankItems[fromSlot] - 1),
bankItemsN[fromSlot])) {
bankItems[fromSlot] = 0;
bankItemsN[fromSlot] = 0;
resetBank();
resetItems(5064);
}
}
} else {
while (amount > 0) {
if (bankItemsN[fromSlot] > 0) {
if (addItem((bankItems[fromSlot] - 1), 1)) {
bankItemsN[fromSlot] += -1;
amount--;
} else {
amount = 0;
}
} else {
amount = 0;
}
}
resetBank();
resetItems(5064);
}
} else if (takeAsNote && Item.itemIsNote[bankItems[fromSlot]]) {
// if (Item.itemStackable[bankItems[fromSlot]+1])
// {
if (bankItemsN[fromSlot] <= amount) {
if (addItem(bankItems[fromSlot], bankItemsN[fromSlot])) {
bankItems[fromSlot] = 0;
bankItemsN[fromSlot] = 0;
resetBank();
resetItems(5064);
}
} else {
if (addItem(bankItems[fromSlot], amount)) {
bankItemsN[fromSlot] -= amount;
resetBank();
resetItems(5064);
}
}
} else {
sM("Item can't be drawn as note.");
if (Item.itemStackable[bankItems[fromSlot] - 1]) {
if (bankItemsN[fromSlot] > amount) {
if (addItem((bankItems[fromSlot] - 1), amount)) {
bankItemsN[fromSlot] -= amount;
resetBank();
resetItems(5064);
resetBank();
resetItems(5064);
}
} else {
if (addItem((bankItems[fromSlot] - 1),
bankItemsN[fromSlot])) {
bankItems[fromSlot] = 0;
bankItemsN[fromSlot] = 0;
resetBank();
resetItems(5064);
}
}
} else {
while (amount > 0) {
if (bankItemsN[fromSlot] > 0) {
if (addItem((bankItems[fromSlot] - 1), 1)) {
bankItemsN[fromSlot] += -1;
amount--;
} else {
amount = 0;
}
} else {
amount = 0;
}
}
resetBank();
resetItems(5064);
}
}
}
resetBank();
resetItems(5064);
resetBank();
}
}
And yes, this is what the owner of the servers bank looks like