Skip to content

Commit e0537fe

Browse files
committed
Item Models Support (Experimental)
1 parent a0902bf commit e0537fe

File tree

5 files changed

+62
-20
lines changed

5 files changed

+62
-20
lines changed

build.gradle.kts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
}
55

66
group = "me.geyserextensionists"
7-
version = "1.0-SNAPSHOT"
7+
version = "1.0.2"
88

99
repositories {
1010
mavenCentral()
@@ -36,3 +36,12 @@ tasks.shadowJar {
3636
tasks.build {
3737
dependsOn("shadowJar")
3838
}
39+
40+
tasks.processResources {
41+
val props = mapOf("version" to version)
42+
inputs.properties(props)
43+
filteringCharset = "UTF-8"
44+
filesMatching("extension.yml") {
45+
expand(props)
46+
}
47+
}

src/main/java/me/geyserextensionists/geyserdisplayentity/entity/ItemDisplayEntity.java

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,6 @@ public void setDisplayedItem(EntityMetadata<ItemStack, ?> entityMetadata) {
6767

6868
String type = session.getItemMappings().getMapping(stack.getId()).getJavaItem().javaIdentifier();
6969

70-
71-
CustomModelData modelData = null;
72-
DataComponents components = stack.getDataComponentsPatch();
73-
74-
if (components != null) modelData = components.get(DataComponentTypes.CUSTOM_MODEL_DATA);
75-
7670
for (FileConfiguration mappingsConfig : GeyserDisplayEntity.getExtension().getConfigManager().getConfigMappingsCache().values()) {
7771
for (Object mappingKey : mappingsConfig.getRootNode().childrenMap().keySet()) {
7872
String mappingString = mappingKey.toString();
@@ -81,19 +75,13 @@ public void setDisplayedItem(EntityMetadata<ItemStack, ?> entityMetadata) {
8175
if (mappingConfig == null) continue;
8276
if (!mappingConfig.getString("type").equals(type)) continue;
8377

84-
if (mappingConfig.getInt("model-data") == -1) {
85-
config = mappingConfig.getConfigurationSection("displayentityoptions");
86-
setOffset(config.getDouble("y-offset"));
87-
if (config.getBoolean("vanilla-scale")) applyScale();
78+
if (GeyserDisplayEntity.getExtension().getConfigManager().getConfig().getBoolean("general.use-legacy-models")) {
79+
applyLegacyModelData(stack, mappingConfig);
8880
break;
8981
}
9082

91-
if (modelData != null && Math.abs(mappingConfig.getInt("model-data") - modelData.floats().get(0)) < 0.5) {
92-
config = mappingConfig.getConfigurationSection("displayentityoptions");
93-
setOffset(config.getDouble("y-offset"));
94-
if (config.getBoolean("vanilla-scale")) applyScale();
95-
break;
96-
}
83+
applyModernItemModels(item, mappingConfig);
84+
break;
9785
}
9886
}
9987

@@ -120,6 +108,43 @@ public void setDisplayedItem(EntityMetadata<ItemStack, ?> entityMetadata) {
120108
updateMainHand(session);
121109
}
122110

111+
private void applyLegacyModelData(ItemStack item, FileConfiguration mappingConfig) {
112+
CustomModelData modelData = null;
113+
DataComponents components = item.getDataComponentsPatch();
114+
115+
if (components != null) modelData = components.get(DataComponentTypes.CUSTOM_MODEL_DATA);
116+
117+
if (mappingConfig.getInt("model-data") == -1) {
118+
entityApplyDisplayConfig(mappingConfig);
119+
return;
120+
}
121+
122+
if (modelData == null) return;
123+
124+
if (Math.abs(mappingConfig.getInt("model-data") - modelData.floats().get(0)) < 0.5) {
125+
entityApplyDisplayConfig(mappingConfig);
126+
}
127+
}
128+
129+
private void applyModernItemModels(ItemData itemData, FileConfiguration mappingConfig) {
130+
String itemBedrockIdentifier = itemData.getDefinition().getIdentifier().replace("geyser_custom:", "");
131+
132+
if (mappingConfig.getString("item-identifier").equals("none")) {
133+
entityApplyDisplayConfig(mappingConfig);
134+
return;
135+
}
136+
137+
if (mappingConfig.getString("item-identifier").equalsIgnoreCase(itemBedrockIdentifier)) {
138+
entityApplyDisplayConfig(mappingConfig);
139+
}
140+
}
141+
142+
private void entityApplyDisplayConfig(FileConfiguration mappingConfig) {
143+
config = mappingConfig.getConfigurationSection("displayentityoptions");
144+
setOffset(config.getDouble("y-offset"));
145+
if (config.getBoolean("vanilla-scale")) applyScale();
146+
}
147+
123148
@Override
124149
protected void applyScale() {
125150
if (needHide) {

src/main/resources/Extension/Mappings/example.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
1+
# Legacy Model format:
2+
# model-data: -1
3+
4+
# Modern Model format:
5+
# item-identifier: "none"
6+
17
mappings:
28
example:
39
# Item type
410
type: "minecraft:iron_sword"
5-
# Custom model data, -1 represent ignore custom model data
6-
model-data: -1
11+
# Item identifier, Set to "none" to ignore the item model
12+
item-identifier: "none"
713
# options
814
displayentityoptions:
915
# The y-offset of display entity

src/main/resources/Extension/config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# General display options
22
general:
3+
# Uses the custom data model numbers (please switch to item models)
4+
use-legacy-models: false
35
# The height of display entity
46
height: 1.7
57
# The y-offset of display entity

src/main/resources/extension.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: GeyserDisplayEntity
22
id: geyserdisplayentity
33
main: me.geyserextensionists.geyserdisplayentity.GeyserDisplayEntity
44
api: 2.7.0
5-
version: 1.0.0
5+
version: "${version}"
66
authors:
77
- zimzaza4
88
- xSquishyLiam

0 commit comments

Comments
 (0)