Finish mappings - let it build

This commit is contained in:
onebeastchris 2024-12-05 17:54:00 +08:00
parent ee5c0e6853
commit ed3008f245
7 changed files with 63 additions and 38 deletions

View file

@ -71,10 +71,6 @@ dependencies {
api(libs.events) api(libs.events)
} }
tasks.test {
enabled = false
}
tasks.processResources { tasks.processResources {
// This is solely for backwards compatibility for other programs that used this file before the switch to gradle. // This is solely for backwards compatibility for other programs that used this file before the switch to gradle.
// It used to be generated by the maven Git-Commit-Id-Plugin // It used to be generated by the maven Git-Commit-Id-Plugin

View file

@ -335,7 +335,7 @@ public class PlayerEntity extends LivingEntity implements GeyserPlayerEntity {
parrot.updateBedrockMetadata(); parrot.updateBedrockMetadata();
SetEntityLinkPacket linkPacket = new SetEntityLinkPacket(); SetEntityLinkPacket linkPacket = new SetEntityLinkPacket();
EntityLinkData.Type type = isLeft ? EntityLinkData.Type.RIDER : EntityLinkData.Type.PASSENGER; EntityLinkData.Type type = isLeft ? EntityLinkData.Type.RIDER : EntityLinkData.Type.PASSENGER;
linkPacket.setEntityLink(new EntityLinkData(geyserId, parrot.getGeyserId(), type, false, false)); linkPacket.setEntityLink(new EntityLinkData(geyserId, parrot.getGeyserId(), type, false, false, 0f));
// Delay, or else spawned-in players won't get the link // Delay, or else spawned-in players won't get the link
// TODO: Find a better solution. // TODO: Find a better solution.
session.scheduleInEventLoop(() -> session.sendUpstreamPacket(linkPacket), 500, TimeUnit.MILLISECONDS); session.scheduleInEventLoop(() -> session.sendUpstreamPacket(linkPacket), 500, TimeUnit.MILLISECONDS);

View file

@ -64,11 +64,13 @@ public class Item {
protected final Key javaIdentifier; protected final Key javaIdentifier;
private int javaId = -1; private int javaId = -1;
private final int attackDamage; private final int attackDamage;
private final DataComponents baseComponents; // unmodifiable private DataComponents baseComponents; // unmodifiable
public Item(String javaIdentifier, Builder builder) { public Item(String javaIdentifier, Builder builder) {
this.javaIdentifier = MinecraftKey.key(javaIdentifier); this.javaIdentifier = MinecraftKey.key(javaIdentifier);
this.baseComponents = builder.components == null ? Registries.DEFAULT_DATA_COMPONENTS.get(javaId) : builder.components; if (builder.components != null) {
this.baseComponents = builder.components;
}
this.attackDamage = builder.attackDamage; this.attackDamage = builder.attackDamage;
} }
@ -272,6 +274,9 @@ public class Item {
throw new RuntimeException("Item ID has already been set!"); throw new RuntimeException("Item ID has already been set!");
} }
this.javaId = javaId; this.javaId = javaId;
if (this.baseComponents == null) {
this.baseComponents = Registries.DEFAULT_DATA_COMPONENTS.get(javaId);
}
} }
@Override @Override

View file

@ -25,19 +25,20 @@
package org.geysermc.geyser.registry.populator; package org.geysermc.geyser.registry.populator;
import io.jsonwebtoken.lang.Collections;
import org.cloudburstmc.nbt.NbtMap; import org.cloudburstmc.nbt.NbtMap;
import org.geysermc.geyser.GeyserImpl; import org.cloudburstmc.nbt.NbtMapBuilder;
import org.geysermc.geyser.level.block.Blocks; import org.geysermc.geyser.level.block.Blocks;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
public class Conversion766_748 { public class Conversion766_748 {
static List<String> newBlockIds = new ArrayList<>(); static List<String> PALE_WOODEN_BLOCKS = new ArrayList<>();
static List<String> bedrockIds = new ArrayList<>(); // TODO temp remove static List<String> OTHER_NEW_BLOCKS = new ArrayList<>();
static { static {
var blocks = Collections.of( Set.of(
Blocks.PALE_OAK_WOOD, Blocks.PALE_OAK_WOOD,
Blocks.PALE_OAK_PLANKS, Blocks.PALE_OAK_PLANKS,
Blocks.PALE_OAK_SAPLING, Blocks.PALE_OAK_SAPLING,
@ -45,27 +46,29 @@ public class Conversion766_748 {
Blocks.STRIPPED_PALE_OAK_LOG, Blocks.STRIPPED_PALE_OAK_LOG,
Blocks.STRIPPED_PALE_OAK_WOOD, Blocks.STRIPPED_PALE_OAK_WOOD,
Blocks.PALE_OAK_LEAVES, Blocks.PALE_OAK_LEAVES,
Blocks.PALE_OAK_SIGN,
Blocks.PALE_OAK_WALL_SIGN,
Blocks.PALE_OAK_HANGING_SIGN, Blocks.PALE_OAK_HANGING_SIGN,
Blocks.PALE_OAK_WALL_HANGING_SIGN,
Blocks.PALE_OAK_PRESSURE_PLATE, Blocks.PALE_OAK_PRESSURE_PLATE,
Blocks.PALE_OAK_TRAPDOOR, Blocks.PALE_OAK_TRAPDOOR,
Blocks.POTTED_PALE_OAK_SAPLING,
Blocks.PALE_OAK_BUTTON, Blocks.PALE_OAK_BUTTON,
Blocks.PALE_OAK_STAIRS, Blocks.PALE_OAK_STAIRS,
Blocks.PALE_OAK_SLAB, Blocks.PALE_OAK_SLAB,
Blocks.PALE_OAK_FENCE_GATE, Blocks.PALE_OAK_FENCE_GATE,
Blocks.PALE_OAK_FENCE, Blocks.PALE_OAK_FENCE,
Blocks.PALE_OAK_DOOR, Blocks.PALE_OAK_DOOR
).forEach(block -> PALE_WOODEN_BLOCKS.add(block.javaIdentifier().value()));
// Some things are of course stupid
PALE_WOODEN_BLOCKS.add("pale_oak_standing_sign");
PALE_WOODEN_BLOCKS.add("pale_oak_wall_sign");
PALE_WOODEN_BLOCKS.add("pale_oak_double_slab");
Set.of(
Blocks.PALE_MOSS_BLOCK, Blocks.PALE_MOSS_BLOCK,
Blocks.PALE_MOSS_CARPET, Blocks.PALE_MOSS_CARPET,
Blocks.PALE_HANGING_MOSS, Blocks.PALE_HANGING_MOSS,
Blocks.OPEN_EYEBLOSSOM, Blocks.OPEN_EYEBLOSSOM,
Blocks.CLOSED_EYEBLOSSOM, Blocks.CLOSED_EYEBLOSSOM,
Blocks.POTTED_OPEN_EYEBLOSSOM,
Blocks.POTTED_CLOSED_EYEBLOSSOM,
Blocks.RESIN_CLUMP, Blocks.RESIN_CLUMP,
Blocks.RESIN_BLOCK, Blocks.RESIN_BLOCK,
@ -76,29 +79,50 @@ public class Conversion766_748 {
Blocks.CHISELED_RESIN_BRICKS, Blocks.CHISELED_RESIN_BRICKS,
Blocks.CREAKING_HEART Blocks.CREAKING_HEART
); ).forEach(block -> OTHER_NEW_BLOCKS.add(block.javaIdentifier().value()));
blocks.forEach(block -> newBlockIds.add(block.javaIdentifier().value())); OTHER_NEW_BLOCKS.add("resin_brick_double_slab");
} }
static NbtMap remapBlock(NbtMap tag) { static NbtMap remapBlock(NbtMap tag) {
String name = tag.getString("name").replace("minecraft:", "");
GeyserImpl.getInstance().getLogger().info(tag.toString()); if (PALE_WOODEN_BLOCKS.contains(name)) {
return withName(tag, name.replace("pale_oak", "birch"));
String name = tag.getString("name");
if (newBlockIds.contains(name)) {
bedrockIds.add(name);
// TODO
return tag.toBuilder()
.putCompound("states", NbtMap.builder().build())
.putString("name", "minecraft:unknown")
.build();
} }
if (name.contains("resin") || name.contains("creaking") || name.contains("pale")) { if (OTHER_NEW_BLOCKS.contains(name)) {
throw new RuntimeException("ya missed " + name); return switch (name) {
case "resin_brick_double_slab" -> withName(tag,"red_sandstone_double_slab");
case "pale_moss_block" -> withName(tag, "moss_block");
case "pale_moss_carpet" -> withoutStates("moss_carpet");
case "pale_hanging_moss" -> withoutStates("hanging_roots");
case "open_eyeblossom" -> withoutStates("oxeye_daisy");
case "closed_eyeblossom" -> withoutStates("white_tulip");
case "resin_clump" -> withoutStates("unknown");
case "resin_block" -> withoutStates("red_sandstone");
case "resin_bricks" -> withoutStates("cut_red_sandstone");
case "resin_brick_stairs" -> withName(tag, "red_sandstone_stairs");
case "resin_brick_slab" -> withName(tag, "red_sandstone_slab");
case "resin_brick_wall" -> withName(tag, "red_sandstone_wall");
case "chiseled_resin_bricks" -> withName(tag, "chiseled_red_sandstone");
case "creaking_heart" -> withoutStates("chiseled_polished_blackstone");
default -> throw new IllegalStateException("missing replacement for new block! " + name);
};
} }
return tag; return tag;
} }
static NbtMap withName(NbtMap tag, String name) {
NbtMapBuilder builder = tag.toBuilder();
builder.replace("name", "minecraft:" + name);
return builder.build();
}
static NbtMap withoutStates(String name) {
NbtMapBuilder tagBuilder = NbtMap.builder();
tagBuilder.putString("name", "minecraft:" + name);
tagBuilder.putCompound("states", NbtMap.builder().build());
return tagBuilder.build();
}
} }

View file

@ -112,7 +112,7 @@ public class MerchantInventoryTranslator extends BaseInventoryTranslator {
SetEntityLinkPacket linkPacket = new SetEntityLinkPacket(); SetEntityLinkPacket linkPacket = new SetEntityLinkPacket();
EntityLinkData.Type type = EntityLinkData.Type.PASSENGER; EntityLinkData.Type type = EntityLinkData.Type.PASSENGER;
linkPacket.setEntityLink(new EntityLinkData(session.getPlayerEntity().getGeyserId(), geyserId, type, true, false)); linkPacket.setEntityLink(new EntityLinkData(session.getPlayerEntity().getGeyserId(), geyserId, type, true, false, 0f));
session.sendUpstreamPacket(linkPacket); session.sendUpstreamPacket(linkPacket);
merchantInventory.setVillager(villager); merchantInventory.setVillager(villager);

View file

@ -91,7 +91,7 @@ public class BedrockInteractTranslator extends PacketTranslator<InteractPacket>
// If the server doesn't agree with our dismount (sends a packet saying we dismounted), // If the server doesn't agree with our dismount (sends a packet saying we dismounted),
// then remount the player. // then remount the player.
SetEntityLinkPacket linkPacket = new SetEntityLinkPacket(); SetEntityLinkPacket linkPacket = new SetEntityLinkPacket();
linkPacket.setEntityLink(new EntityLinkData(vehicleBedrockId, session.getPlayerEntity().getGeyserId(), EntityLinkData.Type.PASSENGER, true, false)); linkPacket.setEntityLink(new EntityLinkData(vehicleBedrockId, session.getPlayerEntity().getGeyserId(), EntityLinkData.Type.PASSENGER, true, false, 0f));
session.sendUpstreamPacket(linkPacket); session.sendUpstreamPacket(linkPacket);
} }
}, 1, TimeUnit.SECONDS)); }, 1, TimeUnit.SECONDS));

View file

@ -70,7 +70,7 @@ public class JavaSetPassengersTranslator extends PacketTranslator<ClientboundSet
boolean rider = packet.getPassengerIds()[0] == passengerId; boolean rider = packet.getPassengerIds()[0] == passengerId;
EntityLinkData.Type type = rider ? EntityLinkData.Type.RIDER : EntityLinkData.Type.PASSENGER; EntityLinkData.Type type = rider ? EntityLinkData.Type.RIDER : EntityLinkData.Type.PASSENGER;
SetEntityLinkPacket linkPacket = new SetEntityLinkPacket(); SetEntityLinkPacket linkPacket = new SetEntityLinkPacket();
linkPacket.setEntityLink(new EntityLinkData(entity.getGeyserId(), passenger.getGeyserId(), type, false, false)); linkPacket.setEntityLink(new EntityLinkData(entity.getGeyserId(), passenger.getGeyserId(), type, false, false, 0f));
session.sendUpstreamPacket(linkPacket); session.sendUpstreamPacket(linkPacket);
newPassengers.add(passenger); newPassengers.add(passenger);
@ -88,7 +88,7 @@ public class JavaSetPassengersTranslator extends PacketTranslator<ClientboundSet
} }
if (!newPassengers.contains(passenger)) { if (!newPassengers.contains(passenger)) {
SetEntityLinkPacket linkPacket = new SetEntityLinkPacket(); SetEntityLinkPacket linkPacket = new SetEntityLinkPacket();
linkPacket.setEntityLink(new EntityLinkData(entity.getGeyserId(), passenger.getGeyserId(), EntityLinkData.Type.REMOVE, false, false)); linkPacket.setEntityLink(new EntityLinkData(entity.getGeyserId(), passenger.getGeyserId(), EntityLinkData.Type.REMOVE, false, false, 0f));
session.sendUpstreamPacket(linkPacket); session.sendUpstreamPacket(linkPacket);
passenger.setVehicle(null); passenger.setVehicle(null);