mirror of
https://github.com/GTNewHorizons/ForestryMC.git
synced 2026-10-25 20:22:26 +00:00
Fix world client leaks in butterfly and analyzer renderer (#116)
Co-authored-by: boubou19 <miisterunknown@gmail.com>
This commit is contained in:
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user