Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-12-26 16:12:46 +01:00
Fix smithing recipes on 1.21.1
Dieser Commit ist enthalten in:
Ursprung
e645935533
Commit
fd58c729d8
@ -31,6 +31,7 @@ import org.geysermc.geyser.inventory.Inventory;
|
|||||||
import org.geysermc.geyser.session.GeyserSession;
|
import org.geysermc.geyser.session.GeyserSession;
|
||||||
import org.geysermc.geyser.translator.inventory.InventoryTranslator;
|
import org.geysermc.geyser.translator.inventory.InventoryTranslator;
|
||||||
import org.geysermc.geyser.translator.inventory.PlayerInventoryTranslator;
|
import org.geysermc.geyser.translator.inventory.PlayerInventoryTranslator;
|
||||||
|
import org.geysermc.geyser.translator.inventory.SmithingInventoryTranslator;
|
||||||
import org.geysermc.geyser.translator.protocol.PacketTranslator;
|
import org.geysermc.geyser.translator.protocol.PacketTranslator;
|
||||||
import org.geysermc.geyser.translator.protocol.Translator;
|
import org.geysermc.geyser.translator.protocol.Translator;
|
||||||
import org.geysermc.geyser.util.InventoryUtils;
|
import org.geysermc.geyser.util.InventoryUtils;
|
||||||
@ -74,6 +75,17 @@ public class JavaContainerSetContentTranslator extends PacketTranslator<Clientbo
|
|||||||
|
|
||||||
session.getPlayerInventory().setCursor(GeyserItemStack.from(packet.getCarriedItem()), session);
|
session.getPlayerInventory().setCursor(GeyserItemStack.from(packet.getCarriedItem()), session);
|
||||||
InventoryUtils.updateCursor(session);
|
InventoryUtils.updateCursor(session);
|
||||||
|
|
||||||
|
if (session.getInventoryTranslator() instanceof SmithingInventoryTranslator) {
|
||||||
|
// On 1.21.1, the recipe output is sometimes only updated here.
|
||||||
|
// This can be replicated with shift-clicking the last item into the smithing table.
|
||||||
|
// It seems that something in Via 5.1.1 causes 1.21.3 clients - even Java ones -
|
||||||
|
// to make the server send a slot update.
|
||||||
|
// That plus shift-clicking means that the state ID becomes outdated and forces
|
||||||
|
// a complete inventory update.
|
||||||
|
JavaContainerSetSlotTranslator.updateSmithingTableOutput(session, SmithingInventoryTranslator.OUTPUT,
|
||||||
|
packet.getItems()[SmithingInventoryTranslator.OUTPUT], inventory);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateInventory(GeyserSession session, Inventory inventory, int containerId) {
|
private void updateInventory(GeyserSession session, Inventory inventory, int containerId) {
|
||||||
|
@ -224,7 +224,7 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
|
|||||||
}, 150, TimeUnit.MILLISECONDS));
|
}, 150, TimeUnit.MILLISECONDS));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void updateSmithingTableOutput(GeyserSession session, int slot, ItemStack output, Inventory inventory) {
|
static void updateSmithingTableOutput(GeyserSession session, int slot, ItemStack output, Inventory inventory) {
|
||||||
if (slot != SmithingInventoryTranslator.OUTPUT) {
|
if (slot != SmithingInventoryTranslator.OUTPUT) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren