Fix world client leaks in butterfly and analyzer renderer (#116)

Co-authored-by: boubou19 <miisterunknown@gmail.com>
This commit is contained in:
Alexdoruandboubou19 authored and GitHub committed 2026-04-27 23:43:29 +02:00
1 parent 98fa57844e
commit 6d8d7110e1
4 files changed
+17 -29

No files matched your search

@@ -60,8 +60,6 @@ public class RenderAnalyzer extends TileEntitySpecialRenderer implements IBlockR
private void render(ItemStack itemstack, World world, ForgeDirection orientation, double x, double y, double z) {
dummyEntityItem.worldObj = world;
model.render(orientation, (float) x, (float) y, (float) z);
if (itemstack == null) {
return;
@@ -72,13 +70,18 @@ public class RenderAnalyzer extends TileEntitySpecialRenderer implements IBlockR
GL11.glTranslatef((float) x, (float) y, (float) z);
GL11.glTranslatef(0.5f, 0.2f, 0.5f);
GL11.glScalef(renderScale, renderScale, renderScale);
dummyEntityItem.setEntityItemStack(itemstack);
if (world.getTotalWorldTime() != lastTick) {
lastTick = world.getTotalWorldTime();
dummyEntityItem.onUpdate();
try {
dummyEntityItem.worldObj = world;
dummyEntityItem.setEntityItemStack(itemstack);
if (world.getTotalWorldTime() != lastTick) {
lastTick = world.getTotalWorldTime();
dummyEntityItem.onUpdate();
}
customRenderItem.doRender(dummyEntityItem, 0, 0, 0, 0, 0);
} finally {
dummyEntityItem.worldObj = null;
}
customRenderItem.doRender(dummyEntityItem, 0, 0, 0, 0, 0);
GL11.glPopMatrix();
}
}
@@ -22,8 +22,6 @@ import forestry.core.tiles.TileMill;
public class RenderMill extends TileEntitySpecialRenderer implements IBlockRenderer {
private final ModelBase model = new ModelBase() {};
private enum Textures {
PEDESTAL,
EXTENSION,
@@ -41,6 +39,7 @@ public class RenderMill extends TileEntitySpecialRenderer implements IBlockRende
private final ModelRenderer blade2;
public RenderMill() {
ModelBase model = new ModelBase() {};
pedestal = new ModelRenderer(model, 0, 0);
pedestal.addBox(-8F, -8F, -8F, 16, 1, 16);
pedestal.rotationPointX = 8;
@@ -307,8 +307,7 @@ public class EntityButterfly extends EntityCreature implements IEntityButterfly
size = genome.getSize();
setSize(size, 0.4f);
species = genome.getPrimary();
if (!worldObj.isRemote) {
if (worldObj != null && !worldObj.isRemote) {
dataWatcher.updateObject(DATAWATCHER_ID_SIZE, (int) (size * 100));
dataWatcher.updateObject(DATAWATCHER_ID_SPECIES, species.getUID());
} else {
@@ -66,25 +66,12 @@ public class RenderButterflyItem implements IItemRenderer {
}
private IButterfly initButterfly(ItemStack item) {
IButterfly butterfly = ButterflyManager.butterflyRoot.getMember(item);
if (butterfly == null) {
butterfly = ButterflyManager.butterflyRoot
.templateAsIndividual(ButterflyManager.butterflyRoot.getDefaultTemplate());
final IButterfly butterfly = ButterflyManager.butterflyRoot.getMember(item);
if (entity == null) {
entity = new EntityButterfly(null, butterfly, 0, 0, 0);
} else {
entity.setIndividual(butterfly);
}
try {
if (entity == null) {
entity = new EntityButterfly(Proxies.common.getRenderWorld(), butterfly, 0, 0, 0);
} else {
entity.setWorld(Proxies.common.getRenderWorld());
entity.setIndividual(butterfly);
}
} finally {
if (entity != null) {
entity.setWorld(null);
}
}
return butterfly;
}