Iterate over copy of loaded TE list, fixes #298 and #304

This commit is contained in:
Electroblob77
2019-12-17 17:12:31 +00:00
parent 6439c233f1
commit 470a7e82bc
2 changed files with 11 additions and 2 deletions
@@ -41,6 +41,9 @@ import net.minecraftforge.fml.common.gameevent.TickEvent;
import net.minecraftforge.fml.relauncher.Side;
import org.lwjgl.opengl.GL11;
import java.util.ArrayList;
import java.util.List;
/**
* Event handler responsible for client-side only events, mostly rendering.
*
@@ -138,7 +141,10 @@ public final class WizardryClientEventHandler {
if(world == null) return;
for(TileEntity tileentity : world.loadedTileEntityList){
// Somehow this was throwing a CME, I have no idea why so I'm just going to cheat and copy the list
List<TileEntity> tileEntities = new ArrayList<>(world.loadedTileEntityList);
for(TileEntity tileentity : tileEntities){
if(tileentity instanceof TileEntityDispenser){
if(DispenserCastingData.get((TileEntityDispenser)tileentity) != null){
DispenserCastingData.get((TileEntityDispenser)tileentity).update();
@@ -166,7 +166,10 @@ public class DispenserCastingData extends BlockCastingData<TileEntityDispenser>
// This will fire once for each dimension, but since we want dispenser-casting to work in all dimensions,
// this is correct (the loaded tile entity list will of course be different in each case.
for(TileEntity tileentity : event.world.loadedTileEntityList){
// Somehow this was throwing a CME, I have no idea why so I'm just going to cheat and copy the list
List<TileEntity> tileEntities = new ArrayList<>(event.world.loadedTileEntityList);
for(TileEntity tileentity : tileEntities){
if(tileentity instanceof TileEntityDispenser){
if(DispenserCastingData.get((TileEntityDispenser)tileentity) != null){
DispenserCastingData.get((TileEntityDispenser)tileentity).update();