3
0
Mirror von https://github.com/GeyserMC/Geyser.git synchronisiert 2024-12-25 07:40:10 +01:00

Update ringing bell block event logic (#3625)

Check for BellValue instead of a GenericBlockValue
Removes now unnecessary JAVA_BELL_ID from BlockStateValues
Dieser Commit ist enthalten in:
David Choo 2023-03-19 11:30:56 -04:00 committet von GitHub
Ursprung b56f401688
Commit 021ffe2d94
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 4AEE18F83AFDEB23
3 geänderte Dateien mit 8 neuen und 16 gelöschten Zeilen

Datei anzeigen

@ -68,7 +68,6 @@ public final class BlockStateValues {
public static final int JAVA_AIR_ID = 0; public static final int JAVA_AIR_ID = 0;
public static int JAVA_BELL_ID;
public static int JAVA_COBWEB_ID; public static int JAVA_COBWEB_ID;
public static int JAVA_FURNACE_ID; public static int JAVA_FURNACE_ID;
public static int JAVA_FURNACE_LIT_ID; public static int JAVA_FURNACE_LIT_ID;

Datei anzeigen

@ -223,7 +223,6 @@ public final class BlockRegistryPopulator {
Deque<String> cleanIdentifiers = new ArrayDeque<>(); Deque<String> cleanIdentifiers = new ArrayDeque<>();
int javaRuntimeId = -1; int javaRuntimeId = -1;
int bellBlockId = -1;
int cobwebBlockId = -1; int cobwebBlockId = -1;
int furnaceRuntimeId = -1; int furnaceRuntimeId = -1;
int furnaceLitRuntimeId = -1; int furnaceLitRuntimeId = -1;
@ -300,10 +299,7 @@ public final class BlockRegistryPopulator {
// It's possible to only have this store differences in names, but the key set of all Java names is used in sending command suggestions // It's possible to only have this store differences in names, but the key set of all Java names is used in sending command suggestions
BlockRegistries.JAVA_TO_BEDROCK_IDENTIFIERS.register(cleanJavaIdentifier.intern(), bedrockIdentifier.intern()); BlockRegistries.JAVA_TO_BEDROCK_IDENTIFIERS.register(cleanJavaIdentifier.intern(), bedrockIdentifier.intern());
if (javaId.startsWith("minecraft:bell[")) { if (javaId.contains("cobweb")) {
bellBlockId = uniqueJavaId;
} else if (javaId.contains("cobweb")) {
cobwebBlockId = uniqueJavaId; cobwebBlockId = uniqueJavaId;
} else if (javaId.startsWith("minecraft:furnace[facing=north")) { } else if (javaId.startsWith("minecraft:furnace[facing=north")) {
@ -324,10 +320,6 @@ public final class BlockRegistryPopulator {
slimeBlockRuntimeId = javaRuntimeId; slimeBlockRuntimeId = javaRuntimeId;
} }
} }
if (bellBlockId == -1) {
throw new AssertionError("Unable to find bell in palette");
}
BlockStateValues.JAVA_BELL_ID = bellBlockId;
if (cobwebBlockId == -1) { if (cobwebBlockId == -1) {
throw new AssertionError("Unable to find cobwebs in palette"); throw new AssertionError("Unable to find cobwebs in palette");

Datei anzeigen

@ -103,7 +103,7 @@ public class JavaBlockEventTranslator extends PacketTranslator<ClientboundBlockE
} else if (packet.getValue() instanceof EndGatewayValue) { } else if (packet.getValue() instanceof EndGatewayValue) {
blockEventPacket.setEventType(1); blockEventPacket.setEventType(1);
session.sendUpstreamPacket(blockEventPacket); session.sendUpstreamPacket(blockEventPacket);
} else if (packet.getValue() instanceof GenericBlockValue bellValue && packet.getBlockId() == BlockStateValues.JAVA_BELL_ID) { } else if (packet.getValue() instanceof BellValue bellValue) {
// Bells - needed to show ring from other players // Bells - needed to show ring from other players
BlockEntityDataPacket blockEntityPacket = new BlockEntityDataPacket(); BlockEntityDataPacket blockEntityPacket = new BlockEntityDataPacket();
blockEntityPacket.setBlockPosition(position); blockEntityPacket.setBlockPosition(position);
@ -113,11 +113,12 @@ public class JavaBlockEventTranslator extends PacketTranslator<ClientboundBlockE
builder.putInt("y", position.getY()); builder.putInt("y", position.getY());
builder.putInt("z", position.getZ()); builder.putInt("z", position.getZ());
builder.putString("id", "Bell"); builder.putString("id", "Bell");
int bedrockRingDirection = switch (bellValue.getValue()) { int bedrockRingDirection = switch (bellValue.getDirection()) {
case 3 -> 0; // north case SOUTH -> 0;
case 4 -> 1; // east case WEST -> 1;
case 5 -> 3;// west case NORTH -> 2;
default -> bellValue.getValue(); // south (2) is identical case EAST -> 3;
default -> throw new IllegalStateException("Unexpected BellValue Direction: " + bellValue.getDirection());
}; };
builder.putInt("Direction", bedrockRingDirection); builder.putInt("Direction", bedrockRingDirection);
builder.putByte("Ringing", (byte) 1); builder.putByte("Ringing", (byte) 1);