diff --git a/.github/scripts/install-local-dependencies.sh b/.github/scripts/install-local-dependencies.sh
new file mode 100644
index 0000000..e4ddbdd
--- /dev/null
+++ b/.github/scripts/install-local-dependencies.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+set -euo pipefail
+# Run from the repository root after downloading the pinned JARs.
+# Hash-qualified versions prevent different private JARs sharing a Maven cache key.
+sha256sum --check .github/dependencies.sha256
+
+mvn -B --no-transfer-progress org.apache.maven.plugins:maven-install-plugin:3.1.4:install-file \
+ -Dfile="libs/ItemsAdder_3.5.0-r2.jar" -DgroupId="local" -DartifactId="LoneLibs" \
+ -Dversion="3.5.0-tfmc-0116d714822b" -Dpackaging=jar -DgeneratePom=true "$@"
+mvn -B --no-transfer-progress org.apache.maven.plugins:maven-install-plugin:3.1.4:install-file \
+ -Dfile="libs/json-simple-1.1.jar" -DgroupId="local" -DartifactId="json-simple" \
+ -Dversion="1.1-tfmc-2d9484f4c649" -Dpackaging=jar -DgeneratePom=true "$@"
+mvn -B --no-transfer-progress org.apache.maven.plugins:maven-install-plugin:3.1.4:install-file \
+ -Dfile="libs/gson-2.10.1.jar" -DgroupId="local" -DartifactId="gson" \
+ -Dversion="2.10.1-tfmc-4241c14a7727" -Dpackaging=jar -DgeneratePom=true "$@"
+mvn -B --no-transfer-progress org.apache.maven.plugins:maven-install-plugin:3.1.4:install-file \
+ -Dfile="libs/MMOCore-1.11.3.jar" -DgroupId="local" -DartifactId="MMOCore" \
+ -Dversion="1.11.3-tfmc-d52cc0c734a9" -Dpackaging=jar -DgeneratePom=true "$@"
+mvn -B --no-transfer-progress org.apache.maven.plugins:maven-install-plugin:3.1.4:install-file \
+ -Dfile="libs/MMOItems-6.10.jar" -DgroupId="local" -DartifactId="MMOItems" \
+ -Dversion="6.10-tfmc-c84700df5942" -Dpackaging=jar -DgeneratePom=true "$@"
+mvn -B --no-transfer-progress org.apache.maven.plugins:maven-install-plugin:3.1.4:install-file \
+ -Dfile="libs/MythicLib-1.7.jar" -DgroupId="local" -DartifactId="MythicLib" \
+ -Dversion="1.6.1-tfmc-660ff2a6ec86" -Dpackaging=jar -DgeneratePom=true "$@"
+mvn -B --no-transfer-progress org.apache.maven.plugins:maven-install-plugin:3.1.4:install-file \
+ -Dfile="libs/MythicMobs-5.8.0-SNAPSHOT.jar" -DgroupId="local" -DartifactId="MythicMobs" \
+ -Dversion="5.8.0-tfmc-575aa30aee8e" -Dpackaging=jar -DgeneratePom=true "$@"
diff --git a/.github/scripts/prepare-release.sh b/.github/scripts/prepare-release.sh
index 95503b5..d34b764 100644
--- a/.github/scripts/prepare-release.sh
+++ b/.github/scripts/prepare-release.sh
@@ -10,4 +10,4 @@ curl --fail --location --silent --show-error --retry 3 -H "Authorization: Bearer
curl --fail --location --silent --show-error --retry 3 -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github.raw+json" "https://api.github.com/repos/TF-Minecraft/ServerAssets/contents/jars/c84700df5942/MMOItems-6.10.jar?ref=$ref" > "libs/MMOItems-6.10.jar"
curl --fail --location --silent --show-error --retry 3 -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github.raw+json" "https://api.github.com/repos/TF-Minecraft/ServerAssets/contents/jars/660ff2a6ec86/MythicLib-1.7.jar?ref=$ref" > "libs/MythicLib-1.7.jar"
curl --fail --location --silent --show-error --retry 3 -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github.raw+json" "https://api.github.com/repos/TF-Minecraft/ServerAssets/contents/jars/575aa30aee8e/MythicMobs-5.8.0-SNAPSHOT.jar?ref=$ref" > "libs/MythicMobs-5.8.0-SNAPSHOT.jar"
-sha256sum --check .github/dependencies.sha256
+bash .github/scripts/install-local-dependencies.sh "$@"
diff --git a/pom.xml b/pom.xml
index f991443..c7c7cb2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,44 +17,38 @@
local
LoneLibs
- 3.5.0
- system
- ${project.basedir}/libs/ItemsAdder_3.5.0-r2.jar
+ 3.5.0-tfmc-0116d714822b
+ provided
local
json-simple
- 1.1
- system
- ${project.basedir}/libs/json-simple-1.1.jar
+ 1.1-tfmc-2d9484f4c649
+ provided
local
gson
- 2.10.1
- system
- ${project.basedir}/libs/gson-2.10.1.jar
+ 2.10.1-tfmc-4241c14a7727
+ provided
local
MMOCore
- 1.11.3
- system
- ${project.basedir}/libs/MMOCore-1.11.3.jar
+ 1.11.3-tfmc-d52cc0c734a9
+ provided
local
MMOItems
- 6.10
- system
- ${project.basedir}/libs/MMOItems-6.10.jar
+ 6.10-tfmc-c84700df5942
+ provided
local
MythicLib
- 1.6.1
- system
- ${project.basedir}/libs/MythicLib-1.7.jar
+ 1.6.1-tfmc-660ff2a6ec86
+ provided
org.spigotmc
@@ -65,9 +59,8 @@
local
MythicMobs
- 5.8.0
- system
- ${project.basedir}/libs/MythicMobs-5.8.0-SNAPSHOT.jar
+ 5.8.0-tfmc-575aa30aee8e
+ provided
diff --git a/src/main/java/net/tfminecraft/advancedresearch/InventoryManager.java b/src/main/java/net/tfminecraft/advancedresearch/InventoryManager.java
index e46b689..e83aa6b 100644
--- a/src/main/java/net/tfminecraft/advancedresearch/InventoryManager.java
+++ b/src/main/java/net/tfminecraft/advancedresearch/InventoryManager.java
@@ -1,5 +1,7 @@
package net.tfminecraft.advancedresearch;
+import net.tfminecraft.advancedresearch.util.LegacyModelData;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -28,7 +30,7 @@ public void MenuInventory(Player player, RStation rs) {
if(re.getId().equalsIgnoreCase(e.split("\\.")[0])) {
ItemStack eItem = new ItemStack(re.getMaterial(), 1);
ItemMeta m = eItem.getItemMeta();
- m.setCustomModelData(re.getModelData());
+ LegacyModelData.set(m, re.getModelData());
m.setDisplayName(re.getName());
List lore = new ArrayList();
for(String ce : rs.getCurrentElements()) {
@@ -148,7 +150,7 @@ public void UpdateInventory(Inventory i, Player p, RStation rs) {
if(re.getId().equalsIgnoreCase(e.split("\\.")[0])) {
ItemStack eItem = new ItemStack(re.getMaterial(), 1);
ItemMeta m = eItem.getItemMeta();
- m.setCustomModelData(re.getModelData());
+ LegacyModelData.set(m, re.getModelData());
m.setDisplayName(re.getName());
List lore = new ArrayList();
for(String ce : rs.getCurrentElements()) {
@@ -201,8 +203,7 @@ public ItemStack getItemsAdderItem(String path) {
}
@SuppressWarnings("deprecation")
public ItemStack getMMOItem(String path) {
- ItemManager itemManager = MMOItems.plugin.getItems();
- ItemStack item = itemManager.getMMOItem(MMOItems.plugin.getTypes().get(path.split("\\.")[1].toUpperCase()), path.split("\\.")[2].toUpperCase()).newBuilder().build(); //m.material.salt
+ ItemStack item = MMOItems.plugin.getMMOItem(MMOItems.plugin.getTypes().get(path.split("\\.")[1].toUpperCase()), path.split("\\.")[2].toUpperCase()).newBuilder().build(); //m.material.salt
return item;
}
@@ -230,7 +231,7 @@ public void completeResearch(Inventory i, Player p, RStation rs, Boolean open) {
if(re.getId().equalsIgnoreCase(e.split("\\.")[0])) {
ItemStack eItem = new ItemStack(re.getMaterial(), 1);
ItemMeta m = eItem.getItemMeta();
- m.setCustomModelData(re.getModelData());
+ LegacyModelData.set(m, re.getModelData());
m.setDisplayName(re.getName());
List lore = new ArrayList();
for(String ce : rs.getCurrentElements()) {
diff --git a/src/main/java/net/tfminecraft/advancedresearch/ResearchEvents.java b/src/main/java/net/tfminecraft/advancedresearch/ResearchEvents.java
index f08567b..69133b5 100644
--- a/src/main/java/net/tfminecraft/advancedresearch/ResearchEvents.java
+++ b/src/main/java/net/tfminecraft/advancedresearch/ResearchEvents.java
@@ -188,8 +188,7 @@ private void giveResult(Player p, RStation rs) {
}
String type = rs.getResult().split("\\.")[0]; //v.emerald
if(type.equalsIgnoreCase("m")) {
- ItemManager itemManager = MMOItems.plugin.getItems();
- ItemStack item = itemManager.getMMOItem(MMOItems.plugin.getTypes().get(rs.getResult().split("\\.")[1].toUpperCase()), rs.getResult().split("\\.")[2].toUpperCase()).newBuilder().build(); //m.material.salt
+ ItemStack item = MMOItems.plugin.getMMOItem(MMOItems.plugin.getTypes().get(rs.getResult().split("\\.")[1].toUpperCase()), rs.getResult().split("\\.")[2].toUpperCase()).newBuilder().build(); //m.material.salt
p.getInventory().addItem(item);
} else {
CustomStack stack = CustomStack.getInstance(rs.getResult().split("\\.")[1]);
diff --git a/src/main/java/net/tfminecraft/advancedresearch/util/LegacyModelData.java b/src/main/java/net/tfminecraft/advancedresearch/util/LegacyModelData.java
new file mode 100644
index 0000000..58de0eb
--- /dev/null
+++ b/src/main/java/net/tfminecraft/advancedresearch/util/LegacyModelData.java
@@ -0,0 +1,36 @@
+package net.tfminecraft.advancedresearch.util;
+
+import java.util.List;
+import org.bukkit.inventory.meta.ItemMeta;
+import org.bukkit.inventory.meta.components.CustomModelDataComponent;
+
+/** Preserves the integer model IDs used by existing configuration and resource packs. */
+public final class LegacyModelData {
+ private LegacyModelData() {}
+
+ public static boolean has(ItemMeta meta) {
+ return !meta.getCustomModelDataComponent().getFloats().isEmpty();
+ }
+
+ public static int get(ItemMeta meta) {
+ List floats = meta.getCustomModelDataComponent().getFloats();
+ if (floats.isEmpty()) {
+ throw new IllegalStateException("We don't have CustomModelData! Check hasCustomModelData first!");
+ }
+ return floats.get(0).intValue();
+ }
+
+ public static void set(ItemMeta meta, Integer value) {
+ if (value == null) {
+ meta.setCustomModelDataComponent(null);
+ return;
+ }
+ CustomModelDataComponent component = meta.getCustomModelDataComponent();
+ // The former integer setter replaced the entire component, not just its first float.
+ component.setFloats(List.of(value.floatValue()));
+ component.setFlags(List.of());
+ component.setStrings(List.of());
+ component.setColors(List.of());
+ meta.setCustomModelDataComponent(component);
+ }
+}