mirror of
https://github.com/GTNewHorizons/Botania.git
synced 2026-10-25 20:22:33 +00:00
fix memory leak in ManaNetworkHandler
This commit is contained in:
1 parent
751640ccec
commit
84e758e450
1 file changed
+12
-6
@@ -18,6 +18,7 @@ import java.util.WeakHashMap;
|
|||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.ChunkCoordinates;
|
import net.minecraft.util.ChunkCoordinates;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.event.world.WorldEvent;
|
||||||
import vazkii.botania.api.internal.IManaNetwork;
|
import vazkii.botania.api.internal.IManaNetwork;
|
||||||
import vazkii.botania.api.mana.ManaNetworkEvent;
|
import vazkii.botania.api.mana.ManaNetworkEvent;
|
||||||
import vazkii.botania.api.mana.ManaNetworkEvent.Action;
|
import vazkii.botania.api.mana.ManaNetworkEvent.Action;
|
||||||
@@ -30,8 +31,8 @@ public final class ManaNetworkHandler implements IManaNetwork {
|
|||||||
|
|
||||||
public static final ManaNetworkHandler instance = new ManaNetworkHandler();
|
public static final ManaNetworkHandler instance = new ManaNetworkHandler();
|
||||||
|
|
||||||
public WeakHashMap<World, List<TileSignature>> manaPools = new WeakHashMap();
|
public WeakHashMap<World, List<TileSignature>> manaPools = new WeakHashMap<>();
|
||||||
public WeakHashMap<World, List<TileSignature>> manaCollectors = new WeakHashMap();
|
public WeakHashMap<World, List<TileSignature>> manaCollectors = new WeakHashMap<>();
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onNetworkEvent(ManaNetworkEvent event) {
|
public void onNetworkEvent(ManaNetworkEvent event) {
|
||||||
@@ -124,11 +125,11 @@ public final class ManaNetworkHandler implements IManaNetwork {
|
|||||||
|
|
||||||
List<TileSignature> tiles;
|
List<TileSignature> tiles;
|
||||||
if(!map.containsKey(world))
|
if(!map.containsKey(world))
|
||||||
map.put(world, new ArrayList());
|
map.put(world, new ArrayList<>());
|
||||||
|
|
||||||
tiles = map.get(world);
|
tiles = map.get(world);
|
||||||
|
|
||||||
if(!tiles.contains(tile))
|
if(tiles.stream().noneMatch(s -> s.tile == tile))
|
||||||
tiles.add(new TileSignature(tile, tile.getWorldObj().isRemote));
|
tiles.add(new TileSignature(tile, tile.getWorldObj().isRemote));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,10 +145,15 @@ public final class ManaNetworkHandler implements IManaNetwork {
|
|||||||
|
|
||||||
private List<TileSignature> getAllInWorld(Map<World, List<TileSignature>> map, World world) {
|
private List<TileSignature> getAllInWorld(Map<World, List<TileSignature>> map, World world) {
|
||||||
if(!map.containsKey(world))
|
if(!map.containsKey(world))
|
||||||
return new ArrayList();
|
return new ArrayList<>();
|
||||||
|
|
||||||
return map.get(world);
|
return map.get(world);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onWorldRemoved(WorldEvent.Unload e) {
|
||||||
|
World world = e.world;
|
||||||
|
manaPools.remove(world);
|
||||||
|
manaCollectors.remove(world);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user