Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-12-26 16:12:46 +01:00
Drop <1.20.50
Dieser Commit ist enthalten in:
Ursprung
a89aa4e064
Commit
f38d82c19c
@ -29,13 +29,8 @@ import com.github.steveice10.mc.protocol.codec.MinecraftCodec;
|
|||||||
import com.github.steveice10.mc.protocol.codec.PacketCodec;
|
import com.github.steveice10.mc.protocol.codec.PacketCodec;
|
||||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
|
import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
|
||||||
import org.cloudburstmc.protocol.bedrock.codec.v589.Bedrock_v589;
|
|
||||||
import org.cloudburstmc.protocol.bedrock.codec.v594.Bedrock_v594;
|
|
||||||
import org.cloudburstmc.protocol.bedrock.codec.v618.Bedrock_v618;
|
|
||||||
import org.cloudburstmc.protocol.bedrock.codec.v622.Bedrock_v622;
|
|
||||||
import org.cloudburstmc.protocol.bedrock.codec.v630.Bedrock_v630;
|
import org.cloudburstmc.protocol.bedrock.codec.v630.Bedrock_v630;
|
||||||
import org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec;
|
import org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec;
|
||||||
import org.geysermc.geyser.session.GeyserSession;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -63,18 +58,11 @@ public final class GameProtocol {
|
|||||||
private static final PacketCodec DEFAULT_JAVA_CODEC = MinecraftCodec.CODEC;
|
private static final PacketCodec DEFAULT_JAVA_CODEC = MinecraftCodec.CODEC;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
SUPPORTED_BEDROCK_CODECS.add(Bedrock_v589.CODEC.toBuilder()
|
/*
|
||||||
.minecraftVersion("1.20.0/1.20.1")
|
|
||||||
.build());
|
|
||||||
SUPPORTED_BEDROCK_CODECS.add(Bedrock_v594.CODEC.toBuilder()
|
|
||||||
.minecraftVersion("1.20.10/1.20.15")
|
|
||||||
.build());
|
|
||||||
SUPPORTED_BEDROCK_CODECS.add(Bedrock_v618.CODEC.toBuilder()
|
|
||||||
.minecraftVersion("1.20.30/1.20.32")
|
|
||||||
.build());
|
|
||||||
SUPPORTED_BEDROCK_CODECS.add(Bedrock_v622.CODEC.toBuilder()
|
SUPPORTED_BEDROCK_CODECS.add(Bedrock_v622.CODEC.toBuilder()
|
||||||
.minecraftVersion("1.20.40/1.20.41")
|
.minecraftVersion("1.20.40/1.20.41")
|
||||||
.build());
|
.build());
|
||||||
|
*/
|
||||||
SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC);
|
SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,18 +82,6 @@ public final class GameProtocol {
|
|||||||
|
|
||||||
/* Bedrock convenience methods to gatekeep features and easily remove the check on version removal */
|
/* Bedrock convenience methods to gatekeep features and easily remove the check on version removal */
|
||||||
|
|
||||||
public static boolean isPre1_20_10(GeyserSession session) {
|
|
||||||
return session.getUpstream().getProtocolVersion() < Bedrock_v594.CODEC.getProtocolVersion();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param session the session to check
|
|
||||||
* @return true if the session needs an experiment for recipe unlocking
|
|
||||||
*/
|
|
||||||
public static boolean isUsingExperimentalRecipeUnlocking(GeyserSession session) {
|
|
||||||
return session.getUpstream().getProtocolVersion() == Bedrock_v594.CODEC.getProtocolVersion();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the {@link PacketCodec} for Minecraft: Java Edition.
|
* Gets the {@link PacketCodec} for Minecraft: Java Edition.
|
||||||
*
|
*
|
||||||
|
@ -122,17 +122,9 @@ public final class BlockRegistryPopulator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void registerBedrockBlocks() {
|
private static void registerBedrockBlocks() {
|
||||||
Remapper mapper594 = Remapper.of(BlockStateUpdater_1_20_10.INSTANCE);
|
|
||||||
Remapper mapper618 = Remapper.of(BlockStateUpdater_1_20_10.INSTANCE, BlockStateUpdater_1_20_30.INSTANCE);
|
|
||||||
Remapper mapper622 = Remapper.of(BlockStateUpdater_1_20_10.INSTANCE, BlockStateUpdater_1_20_30.INSTANCE, BlockStateUpdater_1_20_40.INSTANCE);
|
|
||||||
Remapper mapper630 = Remapper.of(BlockStateUpdater_1_20_10.INSTANCE, BlockStateUpdater_1_20_30.INSTANCE, BlockStateUpdater_1_20_40.INSTANCE, BlockStateUpdater_1_20_50.INSTANCE);
|
|
||||||
|
|
||||||
var blockMappers = ImmutableMap.<ObjectIntPair<String>, Remapper>builder()
|
var blockMappers = ImmutableMap.<ObjectIntPair<String>, Remapper>builder()
|
||||||
.put(ObjectIntPair.of("1_20_0", Bedrock_v589.CODEC.getProtocolVersion()), tag -> tag)
|
//.put(ObjectIntPair.of("1_20_40", Bedrock_v622.CODEC.getProtocolVersion()), mapper622)
|
||||||
.put(ObjectIntPair.of("1_20_10", Bedrock_v594.CODEC.getProtocolVersion()), mapper594)
|
.put(ObjectIntPair.of("1_20_50", Bedrock_v630.CODEC.getProtocolVersion()), tag -> tag)
|
||||||
.put(ObjectIntPair.of("1_20_30", Bedrock_v618.CODEC.getProtocolVersion()), mapper618)
|
|
||||||
.put(ObjectIntPair.of("1_20_40", Bedrock_v622.CODEC.getProtocolVersion()), mapper622)
|
|
||||||
.put(ObjectIntPair.of("1_20_50", Bedrock_v630.CODEC.getProtocolVersion()), mapper630)
|
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// We can keep this strong as nothing should be garbage collected
|
// We can keep this strong as nothing should be garbage collected
|
||||||
|
@ -89,34 +89,8 @@ public class ItemRegistryPopulator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void populate() {
|
public static void populate() {
|
||||||
// Forward-map 1.20 mappings to 1.20.10
|
/*
|
||||||
Remapper remapper594 = (item, mapping) -> {
|
|
||||||
// 1.20.10+ received parity for concrete and shulker boxes
|
|
||||||
String id = item.javaIdentifier();
|
|
||||||
if (id.endsWith("_concrete") || id.endsWith("_shulker_box")) {
|
|
||||||
// the first underscore in "_shulker_box" accounts for ignoring "minecraft:shulker_box"
|
|
||||||
// which is mapped to "minecraft:undyed_shulker_box"
|
|
||||||
return mapping.withBedrockIdentifier(id);
|
|
||||||
}
|
|
||||||
return mapping;
|
|
||||||
};
|
|
||||||
// 1.20 to 1.20.30
|
|
||||||
Remapper remapper618 = (item, mapping) -> {
|
|
||||||
mapping = remapper594.remap(item, mapping); // apply 1.20.10 remapper first
|
|
||||||
|
|
||||||
String id = item.javaIdentifier();
|
|
||||||
if (id.endsWith("concrete_powder") || id.contains("stained_glass") || (id.endsWith("_terracotta") && !id.contains("glazed"))) {
|
|
||||||
// parity: concrete powder, stained-glass blocks and panes, and coloured terracotta
|
|
||||||
// 1. 'minecraft:terracotta' is still 'minecraft:hardened_clay'
|
|
||||||
// 2. there were no changes for glazed, but it doesn't have full parity, so ignore it.
|
|
||||||
return mapping.withBedrockIdentifier(id);
|
|
||||||
}
|
|
||||||
return mapping;
|
|
||||||
};
|
|
||||||
|
|
||||||
Remapper remapper630 = (item, mapping) -> {
|
Remapper remapper630 = (item, mapping) -> {
|
||||||
mapping = remapper618.remap(item, mapping); // apply 1.20.30 remapper first
|
|
||||||
|
|
||||||
String id = item.javaIdentifier();
|
String id = item.javaIdentifier();
|
||||||
// 1.20.50 replaced stone & planks to individual stone types
|
// 1.20.50 replaced stone & planks to individual stone types
|
||||||
// E.g.: granite, diorite, andesite, polished variants, dark_oak_planks etc
|
// E.g.: granite, diorite, andesite, polished variants, dark_oak_planks etc
|
||||||
@ -126,13 +100,11 @@ public class ItemRegistryPopulator {
|
|||||||
|
|
||||||
return mapping;
|
return mapping;
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
List<PaletteVersion> paletteVersions = new ArrayList<>(3);
|
List<PaletteVersion> paletteVersions = new ArrayList<>(3);
|
||||||
paletteVersions.add(new PaletteVersion("1_20_0", Bedrock_v589.CODEC.getProtocolVersion()));
|
//paletteVersions.add(new PaletteVersion("1_20_40", Bedrock_v622.CODEC.getProtocolVersion(), Collections.emptyMap(), remapper618)); // NO item changes between 1.20.30 and 1.20.40
|
||||||
paletteVersions.add(new PaletteVersion("1_20_10", Bedrock_v594.CODEC.getProtocolVersion(), Collections.emptyMap(), remapper594));
|
paletteVersions.add(new PaletteVersion("1_20_50", Bedrock_v630.CODEC.getProtocolVersion()));
|
||||||
paletteVersions.add(new PaletteVersion("1_20_30", Bedrock_v618.CODEC.getProtocolVersion(), Collections.emptyMap(), remapper618));
|
|
||||||
paletteVersions.add(new PaletteVersion("1_20_40", Bedrock_v622.CODEC.getProtocolVersion(), Collections.emptyMap(), remapper618)); // NO item changes between 1.20.30 and 1.20.40
|
|
||||||
paletteVersions.add(new PaletteVersion("1_20_50", Bedrock_v630.CODEC.getProtocolVersion(), Collections.emptyMap(), remapper630));
|
|
||||||
|
|
||||||
GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
|
GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
|
||||||
|
|
||||||
|
@ -129,7 +129,6 @@ import org.geysermc.geyser.item.Items;
|
|||||||
import org.geysermc.geyser.level.JavaDimension;
|
import org.geysermc.geyser.level.JavaDimension;
|
||||||
import org.geysermc.geyser.level.WorldManager;
|
import org.geysermc.geyser.level.WorldManager;
|
||||||
import org.geysermc.geyser.level.physics.CollisionManager;
|
import org.geysermc.geyser.level.physics.CollisionManager;
|
||||||
import org.geysermc.geyser.network.GameProtocol;
|
|
||||||
import org.geysermc.geyser.network.netty.LocalSession;
|
import org.geysermc.geyser.network.netty.LocalSession;
|
||||||
import org.geysermc.geyser.registry.Registries;
|
import org.geysermc.geyser.registry.Registries;
|
||||||
import org.geysermc.geyser.registry.type.BlockMappings;
|
import org.geysermc.geyser.registry.type.BlockMappings;
|
||||||
@ -699,10 +698,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
|
|||||||
gamerulePacket.getGameRules().add(new GameRuleData<>("keepinventory", true));
|
gamerulePacket.getGameRules().add(new GameRuleData<>("keepinventory", true));
|
||||||
// Ensure client doesn't try and do anything funky; the server handles this for us
|
// Ensure client doesn't try and do anything funky; the server handles this for us
|
||||||
gamerulePacket.getGameRules().add(new GameRuleData<>("spawnradius", 0));
|
gamerulePacket.getGameRules().add(new GameRuleData<>("spawnradius", 0));
|
||||||
// Recipe unlocking - only needs to be added if 1. it isn't already on via an experiment, or 2. the client is on pre 1.20.10
|
// Recipe unlocking
|
||||||
if (!GameProtocol.isPre1_20_10(this) && !GameProtocol.isUsingExperimentalRecipeUnlocking(this)) {
|
gamerulePacket.getGameRules().add(new GameRuleData<>("recipesunlock", true));
|
||||||
gamerulePacket.getGameRules().add(new GameRuleData<>("recipesunlock", true));
|
|
||||||
}
|
|
||||||
upstream.sendPacket(gamerulePacket);
|
upstream.sendPacket(gamerulePacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1561,10 +1558,6 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
|
|||||||
startGamePacket.setRewindHistorySize(0);
|
startGamePacket.setRewindHistorySize(0);
|
||||||
startGamePacket.setServerAuthoritativeBlockBreaking(false);
|
startGamePacket.setServerAuthoritativeBlockBreaking(false);
|
||||||
|
|
||||||
if (GameProtocol.isUsingExperimentalRecipeUnlocking(this)) {
|
|
||||||
startGamePacket.getExperiments().add(new ExperimentData("recipe_unlocking", true));
|
|
||||||
}
|
|
||||||
|
|
||||||
upstream.sendPacket(startGamePacket);
|
upstream.sendPacket(startGamePacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,11 +40,6 @@ public class JavaClientboundRecipesTranslator extends PacketTranslator<Clientbou
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void translate(GeyserSession session, ClientboundRecipePacket packet) {
|
public void translate(GeyserSession session, ClientboundRecipePacket packet) {
|
||||||
// recipe unlocking does not exist pre 1.20.10
|
|
||||||
if (GameProtocol.isPre1_20_10(session)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
UnlockedRecipesPacket recipesPacket = new UnlockedRecipesPacket();
|
UnlockedRecipesPacket recipesPacket = new UnlockedRecipesPacket();
|
||||||
switch (packet.getAction()) {
|
switch (packet.getAction()) {
|
||||||
case INIT -> {
|
case INIT -> {
|
||||||
|
Binäre Datei nicht angezeigt.
Binäre Datei nicht angezeigt.
Binäre Datei nicht angezeigt.
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren