Compare commits

...
3 Commits
Author SHA1 Message Date
Alexdoru b5a2693d7c Fix world client leak in TechneMachineRenderer (#233) 2026-05-03 20:38:04 +02:00
ImaMapleTreeandMartin Robertz 372c317077 Fix sort order bounds check on Inventory Panel UI (#228)
Co-authored-by: Martin Robertz <[email protected]>
2026-04-25 19:06:45 +00:00
44ee860a39 Fix Dark Steel Shears duplicating drops from shearable blocks (#224)
Co-authored-by: clawdbot-silly-waddle <[email protected]>
Co-authored-by: Copilot <[email protected]>
2026-04-24 16:44:57 +00:00
6 changed files with 25 additions and 22 deletions

No files matched your search

@@ -122,12 +122,13 @@ public class ItemDarkSteelShears extends ItemShears
BlockCoord bc = new BlockCoord(x, y, z);
HarvestResult res = new HarvestResult(null, bc);
for (int dx = -Config.darkSteelShearsBlockAreaBoostWhenPowered; dx
<= Config.darkSteelShearsBlockAreaBoostWhenPowered; dx++) {
for (int dy = -Config.darkSteelShearsBlockAreaBoostWhenPowered; dy
<= Config.darkSteelShearsBlockAreaBoostWhenPowered; dy++) {
for (int dz = -Config.darkSteelShearsBlockAreaBoostWhenPowered; dz
<= Config.darkSteelShearsBlockAreaBoostWhenPowered; dz++) {
int range = Config.darkSteelShearsBlockAreaBoostWhenPowered;
for (int dx = -range; dx <= range; dx++) {
for (int dy = -range; dy <= range; dy++) {
for (int dz = -range; dz <= range; dz++) {
// Skip center block, already added via HarvestResult constructor
if (dx == 0 && dy == 0 && dz == 0) continue;
Block block2 = player.worldObj.getBlock(x + dx, y + dy, z + dz);
if (block2 instanceof IShearable && ((IShearable) block2)
.isShearable(itemstack, player.worldObj, x + dx, y + dy, z + dz)) {
@@ -144,9 +145,12 @@ public class ItemDarkSteelShears extends ItemShears
int maxBlocks = Math.min(sortedTargets.size(), powerStored / Config.darkSteelShearsPowerUsePerDamagePoint);
for (int i = 0; i < maxBlocks; i++) {
BlockCoord bc2 = sortedTargets.get(i);
super.onBlockStartBreak(itemstack, bc2.x, bc2.y, bc2.z, player);
if (bc2 != bc) {
player.worldObj.setBlockToAir(bc2.x, bc2.y, bc2.z);
Block target = player.worldObj.getBlock(bc2.x, bc2.y, bc2.z);
if (target instanceof IShearable
&& ((IShearable) target).isShearable(itemstack, player.worldObj, bc2.x, bc2.y, bc2.z)) {
if (!super.onBlockStartBreak(itemstack, bc2.x, bc2.y, bc2.z, player)) {
player.worldObj.setBlockToAir(bc2.x, bc2.y, bc2.z);
}
}
}
}
@@ -29,7 +29,7 @@ import crazypants.enderio.machine.painter.PainterUtil;
@ThreadSafeISBRH(perThread = true)
public class AbstractMachineRenderer implements ISimpleBlockRenderingHandler, IItemRenderer {
private OverlayRenderer overlayRenderer = new OverlayRenderer() {
private final OverlayRenderer overlayRenderer = new OverlayRenderer() {
@Override
public void renderFace(CustomRenderBlocks rb, ForgeDirection face, Block par1Block, double x, double y,
@@ -40,7 +40,7 @@ public class AbstractMachineRenderer implements ISimpleBlockRenderingHandler, II
}
};
private CustomCubeRenderer ccr = new CustomCubeRenderer();
private final CustomCubeRenderer ccr = new CustomCubeRenderer();
private final PaintedBlockRenderer paintedRenderer = new PaintedBlockRenderer(this.getRenderId(), null);
// renderer for
@@ -112,6 +112,7 @@ public class AbstractMachineRenderer implements ISimpleBlockRenderingHandler, II
ccr.renderBlock(world, block, x, y, z, overlayRenderer);
}
ccr.setOverrideTexture(null);
overlayRenderer.setTile(null);
return true;
}
@@ -18,8 +18,8 @@ import crazypants.enderio.EnderIO;
public class TechneMachineRenderer<T extends AbstractMachineEntity> extends TechneModelRenderer {
private CustomCubeRenderer ccr = new CustomCubeRenderer();
private OverlayRenderer overlay = new OverlayRenderer();
private final CustomCubeRenderer ccr = new CustomCubeRenderer();
private final OverlayRenderer overlay = new OverlayRenderer();
public TechneMachineRenderer(AbstractMachineBlock<T> block, String modelPath) {
super(
@@ -51,7 +51,7 @@ public class TechneMachineRenderer<T extends AbstractMachineEntity> extends Tech
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId,
RenderBlocks renderer) {
@SuppressWarnings("unchecked")
T te = (T) world.getTileEntity(x, y, z);
final T te = (T) world.getTileEntity(x, y, z);
if (te != null) {
setFacingDir(te.getFacingDir());
overlay.setTile(te);
@@ -63,6 +63,8 @@ public class TechneMachineRenderer<T extends AbstractMachineEntity> extends Tech
ccr.renderBlock(world, block, x, y, z, overlay);
}
overlay.setTile(null);
return true;
}
@@ -106,7 +106,7 @@ public class GuiInventoryPanel extends GuiMachineBase<TileInventoryPanel> {
int sortMode = te.getGuiSortMode();
int sortOrderIdx = sortMode >> 1;
SortOrder[] orders = SortOrder.values();
if (sortOrderIdx >= 0 && te.getGuiSortMode() < orders.length) {
if (sortOrderIdx >= 0 && sortOrderIdx < orders.length) {
view.setSortOrder(orders[sortOrderIdx], (sortMode & 1) != 0);
}
@@ -28,10 +28,8 @@ import crazypants.enderio.machine.transceiver.TileTransceiver;
@SideOnly(Side.CLIENT)
public class TransceiverRenderer extends TileEntitySpecialRenderer implements IItemRenderer {
private IModel model;
private BoundingBox bb;
private final IModel model;
private final BoundingBox bb;
private boolean adjustForItem = false;
public TransceiverRenderer() {
@@ -26,9 +26,7 @@ import crazypants.enderio.machine.painter.TileEntityPaintedBlock;
@ThreadSafeISBRH(perThread = false)
public class FusedQuartzRenderer implements ISimpleBlockRenderingHandler {
static int renderPass;
private ConnectedTextureRenderer connectedTextureRenderer = new ConnectedTextureRenderer() {
private final ConnectedTextureRenderer connectedTextureRenderer = new ConnectedTextureRenderer() {
@Override
public boolean matchesMetadata(int meta1, int meta2) {