Misc Patches

- Fixed Brass funnels with configured amounts inserting partial stacks when target inventory is almost full #2589
- Fixed toolbox not marking a chunk for saving when contents change #2574
- Fixed Contraptions no longer sending disassembly packets and thus dropping players through blocks #2538
This commit is contained in:
simibubi 2022-01-09 15:42:01 +01:00
parent 676beab44b
commit 4aa44f1a3a
3 changed files with 12 additions and 4 deletions

View file

@ -441,13 +441,13 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
return; return;
if (contraption == null) if (contraption == null)
return; return;
discard();
StructureTransform transform = makeStructureTransform(); StructureTransform transform = makeStructureTransform();
AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> this), AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> this),
new ContraptionDisassemblyPacket(this.getId(), transform)); new ContraptionDisassemblyPacket(this.getId(), transform));
discard();
contraption.addBlocksToWorld(level, transform); contraption.addBlocksToWorld(level, transform);
contraption.addPassengersToWorld(level, transform, getPassengers()); contraption.addPassengersToWorld(level, transform, getPassengers());

View file

@ -80,8 +80,15 @@ public class BeltFunnelInteractionHandler {
else else
continue; continue;
if (amountToExtract != -1) if (amountToExtract != -1) {
toInsert.setCount(amountToExtract); toInsert.setCount(amountToExtract);
ItemStack remainder = inserting.simulate().insert(toInsert);
if (!remainder.isEmpty())
if (blocking)
return true;
else
continue;
}
ItemStack remainder = inserting.insert(toInsert); ItemStack remainder = inserting.insert(toInsert);
if (toInsert.equals(remainder, false)) if (toInsert.equals(remainder, false))

View file

@ -147,6 +147,7 @@ public class ToolboxInventory extends ItemStackHandler {
if (!settling && !te.getLevel().isClientSide) if (!settling && !te.getLevel().isClientSide)
settle(slot / STACKS_PER_COMPARTMENT); settle(slot / STACKS_PER_COMPARTMENT);
te.sendData(); te.sendData();
te.setChanged();
super.onContentsChanged(slot); super.onContentsChanged(slot);
} }