Does your ItemHandler process look something like this?
Code:
public void process() {
ArrayList<GroundItem> toRemove = new ArrayList<GroundItem>();
for (int j = 0; j < items.size(); j++) {
if (items.get(j) != null) {
GroundItem i = items.get(j);
if(i.hideTicks > 0) {
i.hideTicks--;
}
if(i.hideTicks == 1) { // item can now be seen by others
i.hideTicks = 0;
createGlobalItem(i);
i.removeTicks = HIDE_TICKS;
}
if(i.removeTicks > 0) {
i.removeTicks--;
}
if(i.removeTicks == 1) {
i.removeTicks = 0;
toRemove.add(i);
//removeGlobalItem(i, i.getItemId(), i.getItemX(), i.getItemY(), i.getItemAmount());
}
}
}
for (int j = 0; j < toRemove.size(); j++) {
GroundItem i = toRemove.get(j);
removeGlobalItem(i, i.getItemId(), i.getItemX(), i.getItemY(), i.getItemAmount());
}
/*for(GroundItem i : items) {
if(i.hideTicks > 0) {
i.hideTicks--;
}
if(i.hideTicks == 1) { // item can now be seen by others
i.hideTicks = 0;
createGlobalItem(i);
i.removeTicks = HIDE_TICKS;
}
if(i.removeTicks > 0) {
i.removeTicks--;
}
if(i.removeTicks == 1) {
i.removeTicks = 0;
removeGlobalItem(i, i.getItemId(), i.getItemX(), i.getItemY(), i.getItemAmount());
}
}*/
}