Skip to content

Commit 4a88117

Browse files
committed
Update to latest MCPL changes, fix issues with the force-player-inventory workaround
1 parent 7448a99 commit 4a88117

File tree

61 files changed

+346
-340
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+346
-340
lines changed

core/src/main/java/org/geysermc/geyser/entity/EntityDefinition.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@
2626
package org.geysermc.geyser.entity;
2727

2828
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
29-
import java.util.List;
30-
import java.util.Locale;
31-
import java.util.function.BiConsumer;
3229
import lombok.Setter;
3330
import lombok.experimental.Accessors;
3431
import org.geysermc.geyser.GeyserImpl;
@@ -41,6 +38,10 @@
4138
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
4239
import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
4340

41+
import java.util.List;
42+
import java.util.Locale;
43+
import java.util.function.BiConsumer;
44+
4445
/**
4546
* Represents data for an entity. This includes properties such as height and width, as well as the list of entity
4647
* metadata translators needed to translate the properties sent from the server. The translators are structured in such

core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java

Lines changed: 157 additions & 157 deletions
Large diffs are not rendered by default.

core/src/main/java/org/geysermc/geyser/entity/type/FireworkEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void setFireworkItem(EntityMetadata<ItemStack, ?> entityMetadata) {
5151
if (item == null) {
5252
return;
5353
}
54-
DataComponents components = item.getDataComponents();
54+
DataComponents components = item.getDataComponentsPatch();
5555
if (components == null) {
5656
return;
5757
}

core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public void setItemInFrame(EntityMetadata<ItemStack, ?> entityMetadata) {
120120
NbtMap itemDataTag = itemData.getTag();
121121
if (itemDataTag != null) {
122122
// Remove custom name that Geyser sets for items due to translating non-"custom_name" components
123-
String customName = ItemTranslator.getCustomName(session, heldItem.getDataComponents(),
123+
String customName = ItemTranslator.getCustomName(session, heldItem.getDataComponentsPatch(),
124124
session.getItemMappings().getMapping(heldItem), 'f', true, false);
125125
if (customName == null) {
126126
// No custom name found, must modify tag if custom name exists

core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ObjectEntityMetadata;
6262
import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
6363
import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
64-
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
64+
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
6565
import org.geysermc.mcprotocollib.protocol.data.game.level.particle.EntityEffectParticleData;
6666
import org.geysermc.mcprotocollib.protocol.data.game.level.particle.Particle;
6767
import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ParticleType;
@@ -344,7 +344,7 @@ public void setBoundingBoxWidth(float width) {
344344
*/
345345
// Implementation note for 1.20.5: this code was moved to the NameTag item.
346346
protected final InteractionResult checkInteractWithNameTag(GeyserItemStack itemStack) {
347-
if (itemStack.getComponent(DataComponentType.CUSTOM_NAME) != null) {
347+
if (itemStack.getComponent(DataComponentTypes.CUSTOM_NAME) != null) {
348348
// The mob shall be named
349349
return InteractionResult.SUCCESS;
350350
}

core/src/main/java/org/geysermc/geyser/entity/type/ThrownPotionEntity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
import org.geysermc.geyser.session.GeyserSession;
3737
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
3838
import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
39-
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
39+
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
4040
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
4141
import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
4242

@@ -59,9 +59,9 @@ public void setItem(EntityMetadata<ItemStack, ?> entityMetadata) {
5959
setFlag(EntityFlag.LINGERING, false);
6060
} else {
6161
// As of Java 1.19.3, the server/client doesn't seem to care of the item is actually a potion?
62-
DataComponents components = itemStack.getDataComponents();
62+
DataComponents components = itemStack.getDataComponentsPatch();
6363
if (components != null) {
64-
PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
64+
PotionContents potionContents = components.get(DataComponentTypes.POTION_CONTENTS);
6565
if (potionContents != null) {
6666
Potion potion = Potion.getByJavaId(potionContents.getPotionId());
6767
if (potion != null) {

core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
5252
import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
5353
import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
54-
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
54+
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
5555
import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
5656

5757
import java.util.Collections;
@@ -129,7 +129,7 @@ public void setBody(ItemStack stack) {
129129
super.setBody(stack);
130130
isCurseOfBinding = ItemUtils.hasEffect(session, stack, EnchantmentComponent.PREVENT_ARMOR_CHANGE);
131131
// Not using ItemStack#getDataComponents as that wouldn't include default item components
132-
repairableItems = GeyserItemStack.from(stack).getComponent(DataComponentType.REPAIRABLE);
132+
repairableItems = GeyserItemStack.from(stack).getComponent(DataComponentTypes.REPAIRABLE);
133133
}
134134

135135
@Override

core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import org.geysermc.geyser.session.GeyserSession;
3333
import org.geysermc.geyser.translator.text.MessageTranslator;
3434
import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
35-
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
35+
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
3636
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRenameItemPacket;
3737

3838
/**
@@ -73,7 +73,7 @@ public String checkForRename(GeyserSession session, String rename) {
7373
String correctRename;
7474
newName = rename;
7575

76-
Component originalName = getInput().getComponent(DataComponentType.CUSTOM_NAME);
76+
Component originalName = getInput().getComponent(DataComponentTypes.CUSTOM_NAME);
7777

7878
String plainOriginalName = MessageTranslator.convertToPlainText(originalName, session.locale());
7979
String plainNewName = MessageTranslator.convertToPlainText(rename);

core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.geysermc.geyser.translator.item.ItemTranslator;
4444
import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
4545
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
46+
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
4647
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
4748
import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
4849
import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemSlotDisplay;
@@ -89,7 +90,7 @@ private GeyserItemStack(int javaId, int amount, DataComponents components, int n
8990
}
9091

9192
public static @NonNull GeyserItemStack from(@Nullable ItemStack itemStack) {
92-
return itemStack == null ? EMPTY : new GeyserItemStack(itemStack.getId(), itemStack.getAmount(), itemStack.getDataComponents());
93+
return itemStack == null ? EMPTY : new GeyserItemStack(itemStack.getId(), itemStack.getAmount(), itemStack.getDataComponentsPatch());
9394
}
9495

9596
public static @NonNull GeyserItemStack from(@NonNull SlotDisplay slotDisplay) {
@@ -217,11 +218,11 @@ public ItemStack getItemStack() {
217218
// Not fresh from server? Then we have changes to apply!~
218219
if (bundleData != null && !bundleData.freshFromServer()) {
219220
if (!bundleData.contents().isEmpty()) {
220-
getOrCreateComponents().put(DataComponentType.BUNDLE_CONTENTS, bundleData.toComponent());
221+
getOrCreateComponents().put(DataComponentTypes.BUNDLE_CONTENTS, bundleData.toComponent());
221222
} else {
222223
if (components != null) {
223224
// Empty list = no component = should delete
224-
components.getDataComponents().remove(DataComponentType.BUNDLE_CONTENTS);
225+
components.getDataComponents().remove(DataComponentTypes.BUNDLE_CONTENTS);
225226
}
226227
}
227228
}

core/src/main/java/org/geysermc/geyser/inventory/Inventory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
import org.geysermc.geyser.session.GeyserSession;
3737
import org.geysermc.geyser.translator.item.ItemTranslator;
3838
import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
39-
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
39+
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
4040
import org.jetbrains.annotations.Range;
4141

4242
import java.util.Arrays;
@@ -135,7 +135,7 @@ public void setItem(int slot, @NonNull GeyserItemStack newItem, GeyserSession se
135135

136136
// Lodestone caching
137137
if (newItem.asItem() == Items.COMPASS) {
138-
var tracker = newItem.getComponent(DataComponentType.LODESTONE_TRACKER);
138+
var tracker = newItem.getComponent(DataComponentTypes.LODESTONE_TRACKER);
139139
if (tracker != null) {
140140
session.getLodestoneCache().cacheInventoryItem(newItem, tracker);
141141
}

core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import org.geysermc.geyser.translator.inventory.InventoryTranslator;
4545
import org.geysermc.geyser.translator.text.MessageTranslator;
4646
import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
47-
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
47+
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
4848
import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
4949
import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemEnchantments;
5050
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRenameItemPacket;
@@ -117,7 +117,7 @@ private void updateInventoryState(GeyserSession session, AnvilContainer anvilCon
117117

118118
// Changing the item in the input slot resets the name field on Bedrock, but
119119
// does not result in a FilterTextPacket
120-
String originalName = MessageTranslator.convertToPlainText(input.getComponent(DataComponentType.CUSTOM_NAME), session.locale());
120+
String originalName = MessageTranslator.convertToPlainText(input.getComponent(DataComponentTypes.CUSTOM_NAME), session.locale());
121121
ServerboundRenameItemPacket renameItemPacket = new ServerboundRenameItemPacket(originalName);
122122
session.sendDownstreamGamePacket(renameItemPacket);
123123

@@ -367,9 +367,9 @@ private int calcMergeEnchantmentCost(GeyserSession session, GeyserItemStack inpu
367367
private Object2IntMap<Enchantment> getEnchantments(GeyserSession session, GeyserItemStack itemStack) {
368368
ItemEnchantments enchantmentComponent;
369369
if (isEnchantedBook(itemStack)) {
370-
enchantmentComponent = itemStack.getComponent(DataComponentType.STORED_ENCHANTMENTS);
370+
enchantmentComponent = itemStack.getComponent(DataComponentTypes.STORED_ENCHANTMENTS);
371371
} else {
372-
enchantmentComponent = itemStack.getComponent(DataComponentType.ENCHANTMENTS);
372+
enchantmentComponent = itemStack.getComponent(DataComponentTypes.ENCHANTMENTS);
373373
}
374374
if (enchantmentComponent != null) {
375375
Object2IntMap<Enchantment> enchantments = new Object2IntOpenHashMap<>();
@@ -395,7 +395,7 @@ private boolean isCombining(GeyserItemStack input, GeyserItemStack material) {
395395
}
396396

397397
private boolean isRepairing(GeyserItemStack input, GeyserItemStack material, GeyserSession session) {
398-
HolderSet repairable = input.getComponent(DataComponentType.REPAIRABLE);
398+
HolderSet repairable = input.getComponent(DataComponentTypes.REPAIRABLE);
399399
if (repairable == null) {
400400
return false;
401401
}
@@ -409,27 +409,27 @@ private boolean isRenaming(GeyserSession session, AnvilContainer anvilContainer,
409409
}
410410
// This should really check the name field in all cases, but that requires the localized name
411411
// of the item which can change depending on NBT and Minecraft Edition
412-
Component originalName = anvilContainer.getInput().getComponent(DataComponentType.CUSTOM_NAME);
412+
Component originalName = anvilContainer.getInput().getComponent(DataComponentTypes.CUSTOM_NAME);
413413
if (bedrock && originalName != null && anvilContainer.getNewName() != null) {
414414
// Check text and formatting
415415
String legacyOriginalName = MessageTranslator.convertMessage(originalName, session.locale());
416416
return !legacyOriginalName.equals(anvilContainer.getNewName());
417417
}
418-
return !Objects.equals(originalName, anvilContainer.getResult().getComponent(DataComponentType.CUSTOM_NAME));
418+
return !Objects.equals(originalName, anvilContainer.getResult().getComponent(DataComponentTypes.CUSTOM_NAME));
419419
}
420420

421421
private int getRepairCost(GeyserItemStack itemStack) {
422-
return itemStack.getComponentElseGet(DataComponentType.REPAIR_COST, () -> 0);
422+
return itemStack.getComponentElseGet(DataComponentTypes.REPAIR_COST, () -> 0);
423423
}
424424

425425
private boolean hasDurability(GeyserItemStack itemStack) {
426426
if (itemStack.asItem().defaultMaxDamage() > 0) {
427-
return itemStack.getComponent(DataComponentType.UNBREAKABLE) != null;
427+
return itemStack.getComponent(DataComponentTypes.UNBREAKABLE) != null;
428428
}
429429
return false;
430430
}
431431

432432
private int getDamage(GeyserItemStack itemStack) {
433-
return itemStack.getComponentElseGet(DataComponentType.DAMAGE, () -> 0);
433+
return itemStack.getComponentElseGet(DataComponentTypes.DAMAGE, () -> 0);
434434
}
435435
}

core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.geysermc.geyser.session.GeyserSession;
3434
import org.geysermc.geyser.translator.item.BedrockItemBuilder;
3535
import org.geysermc.mcprotocollib.protocol.data.game.item.component.ArmorTrim;
36-
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
36+
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
3737
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
3838

3939
public class ArmorItem extends Item {
@@ -46,7 +46,7 @@ public ArmorItem(String javaIdentifier, Builder builder) {
4646
public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
4747
super.translateComponentsToBedrock(session, components, builder);
4848

49-
ArmorTrim trim = components.get(DataComponentType.TRIM);
49+
ArmorTrim trim = components.get(DataComponentTypes.TRIM);
5050
if (trim != null) {
5151
TrimMaterial material = session.getRegistryCache().trimMaterials().byId(trim.material().id());
5252
TrimPattern pattern = session.getRegistryCache().trimPatterns().byId(trim.pattern().id());

core/src/main/java/org/geysermc/geyser/item/type/ArrowItem.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.geysermc.geyser.registry.type.ItemMapping;
3434
import org.geysermc.geyser.registry.type.ItemMappings;
3535
import org.geysermc.geyser.session.GeyserSession;
36-
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
36+
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
3737
import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
3838

3939
public class ArrowItem extends Item {
@@ -48,7 +48,7 @@ public ArrowItem(String javaIdentifier, Builder builder) {
4848
if (potion != null) {
4949
itemStack = Items.TIPPED_ARROW.newItemStack(itemStack.getAmount(), itemStack.getComponents());
5050
PotionContents contents = potion.toComponent();
51-
itemStack.getOrCreateComponents().put(DataComponentType.POTION_CONTENTS, contents);
51+
itemStack.getOrCreateComponents().put(DataComponentTypes.POTION_CONTENTS, contents);
5252
}
5353
return itemStack;
5454
}

core/src/main/java/org/geysermc/geyser/item/type/BannerItem.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import org.geysermc.geyser.util.MinecraftKey;
4545
import org.geysermc.mcprotocollib.protocol.data.game.Holder;
4646
import org.geysermc.mcprotocollib.protocol.data.game.item.component.BannerPatternLayer;
47-
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
47+
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
4848
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
4949
import org.geysermc.mcprotocollib.protocol.data.game.item.component.Unit;
5050

@@ -206,7 +206,7 @@ public BannerItem(Builder builder, Block block, Block... otherBlocks) {
206206
public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
207207
super.translateComponentsToBedrock(session, components, builder);
208208

209-
List<BannerPatternLayer> patterns = components.get(DataComponentType.BANNER_PATTERNS);
209+
List<BannerPatternLayer> patterns = components.get(DataComponentTypes.BANNER_PATTERNS);
210210
if (patterns != null) {
211211
convertBannerPattern(session, patterns, builder);
212212
}
@@ -225,9 +225,9 @@ public void translateNbtToJava(@NonNull GeyserSession session, @NonNull NbtMap b
225225
pair.right().ordinal()));
226226
}
227227

228-
components.put(DataComponentType.BANNER_PATTERNS, patternLayers);
229-
components.put(DataComponentType.HIDE_ADDITIONAL_TOOLTIP, Unit.INSTANCE);
230-
components.put(DataComponentType.ITEM_NAME, Component
228+
components.put(DataComponentTypes.BANNER_PATTERNS, patternLayers);
229+
components.put(DataComponentTypes.HIDE_ADDITIONAL_TOOLTIP, Unit.INSTANCE);
230+
components.put(DataComponentTypes.ITEM_NAME, Component
231231
.translatable("block.minecraft.ominous_banner")
232232
.style(Style.style(TextColor.color(16755200)))
233233
);

core/src/main/java/org/geysermc/geyser/item/type/CompassItem.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.geysermc.geyser.registry.type.ItemMappings;
3434
import org.geysermc.geyser.session.GeyserSession;
3535
import org.geysermc.geyser.translator.item.BedrockItemBuilder;
36-
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
36+
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
3737
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
3838
import org.geysermc.mcprotocollib.protocol.data.game.item.component.LodestoneTracker;
3939

@@ -62,7 +62,7 @@ public ItemMapping toBedrockDefinition(DataComponents components, ItemMappings m
6262
public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
6363
super.translateComponentsToBedrock(session, components, builder);
6464

65-
LodestoneTracker tracker = components.get(DataComponentType.LODESTONE_TRACKER);
65+
LodestoneTracker tracker = components.get(DataComponentTypes.LODESTONE_TRACKER);
6666
if (tracker != null) {
6767
int trackId = session.getLodestoneCache().store(tracker);
6868
// Set the bedrock tracking id - will return 0 if invalid
@@ -72,7 +72,7 @@ public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNul
7272

7373
private boolean isLodestoneCompass(@Nullable DataComponents components) {
7474
if (components != null) {
75-
return components.getDataComponents().containsKey(DataComponentType.LODESTONE_TRACKER);
75+
return components.getDataComponents().containsKey(DataComponentTypes.LODESTONE_TRACKER);
7676
}
7777
return false;
7878
}

0 commit comments

Comments
 (0)