Create

Create

86M Downloads

Cannot remove ghost blocks of a schematic once placed in world

UltrascatterRED opened this issue · 4 comments

commented

Describe the Bug

[Minecraft Version 1.21]
Once a schematic is placed in the world and renders the preview (which I'll refer to as "Ghost Blocks"), there is no way (that I know of) to "un-place" the schematic, therefore preventing the un-rendering of the ghost blocks. Removing the schematic from the hotbar/inventory does not un-render the ghost blocks. Ghost blocks also persist across multiple world sessions; in other words, leaving and re-joining the world does not get rid of rendered ghost blocks.

Reproduction Steps

  1. Create a new schematic for some arbitrary structure
  2. Save the schematic to the game instance's "Schematics" folder
  3. Place the schematic into the world without printing it.

Expected Result

I expected some intuitive way to cancel schematic placement or otherwise un-render the ghost blocks.

Screenshots and Videos

No response

Crash Report or Log

No response

Operating System

Windows 10

Mod Version

0.5.1f

Minecraft Version

1.20.1

Forge Version

47.2.20

Other Mods

N/A (Game did not crash)

Additional Context

No response

commented

I was able to reproduce this in Minecraft 1.20.1 with Create 0.5.1-f-build.1335+mc1.20.1 using the Fabric loader.

From what I can tell, the only way I know of to get rid of the schematic preview is to fill all nine slots of your hotbar with any items, excluding Schematics.

In Minecraft 1.19.2 with Create 0.5.1-c-build.1160+mc1.19.2, removing schematic items from the hotbar was enough to unload their previews; there was no need to completely fill the hotbar.

This is what the code in itemLost() looks like in 1.20.1, causing the incorrect behavior:

private boolean itemLost(Player player) {
for (int i = 0; i < Inventory.getSelectionSize(); i++) {
if (!ItemStack.matches(player.getInventory()
.getItem(i), activeSchematicItem))
continue;
return false;
}
return true;
}

Versus in 1.19.2, with the expected behavior:

private boolean itemLost(Player player) {
for (int i = 0; i < Inventory.getSelectionSize(); i++) {
if (!player.getInventory()
.getItem(i)
.sameItem(activeSchematicItem))
continue;
if (!ItemStack.tagMatches(player.getInventory()
.getItem(i), activeSchematicItem))
continue;
return false;
}
return true;
}

Changed in: 4a9b8ed#diff-1f5dff9c11f5f98278c0cfaea82aaf0b4d616e9b18cbcb02904fe8440c65d403

commented

As of this past hour, I've also seen this happen this on fabricators-of-create's version, and I guess it originates here. Glad to know there is a workaround (which hopefully works on fabric the same as here), because this is pretty annoying NGL. I only got it to stop by restarting my client

commented

From what I can tell, the only way I know of to get rid of the schematic preview is to fill all nine slots of your hotbar with any items, excluding Schematics.

Same problem solved by this method on Forge 1.20.1 ✔️

commented

From what I can tell, the only way I know of to get rid of the schematic preview is to fill all nine slots of your hotbar with any items, excluding Schematics.

Forge 1.20.1: Confirmed filling all nine slots of the hotbar without schematics removed preview
--> I also discovered another work around is to sleep