Skip to content
Browse files

Patching a bug where mcMMO drops too few items, and yet another concu…

…rrent modification exception.
  • Loading branch information...
1 parent 5b18abb commit d444e088c43180262aa74204680e077dfe60eeb5 @Glitchfinder Glitchfinder committed Jan 2, 2013
View
8 src/main/java/com/gmail/nossr50/util/Misc.java
@@ -5,6 +5,7 @@
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
+import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageEvent;
@@ -253,7 +254,12 @@ public static void dropItem(Location location, ItemStack itemStack) {
return;
}
- location.getWorld().dropItemNaturally(location, itemStack).setItemStack(itemStack);
+ Item newItem = location.getWorld().dropItemNaturally(location, itemStack);
+
+ ItemStack cloned = itemStack.clone();
+ cloned.setAmount(newItem.getItemStack().getAmount());
+
+ newItem.setItemStack(cloned);
}
/**
View
6 src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/HashChunkManager.java
@@ -254,14 +254,16 @@ public synchronized void saveChunk(int cx, int cz, World world) {
if(store.containsKey(world.getName() + "," + cx + "," + cz)) {
ChunkStore out = store.get(world.getName() + "," + cx + "," + cz);
- for(Entity entity : spawnedMobs) {
+ List<Entity> tempSpawnedMobs = new ArrayList<Entity>(spawnedMobs);
+ for(Entity entity : tempSpawnedMobs) {
if(!isEntityInChunk(entity, cx, cz, world))
continue;
out.addSpawnedMob(entity.getUniqueId());
}
- for(Entity entity : spawnedPets) {
+ List<Entity> tempSpawnedPets = new ArrayList<Entity>(spawnedPets);
+ for(Entity entity : tempSpawnedPets) {
if(!isEntityInChunk(entity, cx, cz, world))
continue;

0 comments on commit d444e08

Please sign in to comment.
Something went wrong with that request. Please try again.