diff --git a/patches/server/0001-new-fork-who-dis-Rebrand-to-SparklyPaper-and-Build-C.patch b/patches/server/0001-new-fork-who-dis-Rebrand-to-SparklyPaper-and-Build-C.patch index 18e191a..74db2a2 100644 --- a/patches/server/0001-new-fork-who-dis-Rebrand-to-SparklyPaper-and-Build-C.patch +++ b/patches/server/0001-new-fork-who-dis-Rebrand-to-SparklyPaper-and-Build-C.patch @@ -5,7 +5,7 @@ Subject: [PATCH] new fork who dis - Rebrand to SparklyPaper and Build Changes diff --git a/build.gradle.kts b/build.gradle.kts -index 4998aff0b7cb084dcda15c6a18bbe45e99b6000a..260a00dc826dcb5132d620ac324c44079436cdff 100644 +index 4998aff0b7cb084dcda15c6a18bbe45e99b6000a..b2003e125fb923f531bf3777ebe39be0889601e4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,6 +3,8 @@ import java.time.Instant @@ -45,6 +45,17 @@ index 4998aff0b7cb084dcda15c6a18bbe45e99b6000a..260a00dc826dcb5132d620ac324c4407 val date = git("show", "-s", "--format=%ci", gitHash).getText().trim() // Paper val gitBranch = git("rev-parse", "--abbrev-ref", "HEAD").getText().trim() // Paper attributes( +@@ -86,8 +98,8 @@ tasks.jar { + "Specification-Title" to "Paper", + "Specification-Version" to project.version, + "Specification-Vendor" to "Paper Team", +- "Brand-Id" to "papermc:paper", +- "Brand-Name" to "Paper", ++ "Brand-Id" to "sparklypower:sparklypaper", // SparklyPaper ++ "Brand-Name" to "SparklyPaper", // SparklyPaper + "Build-Number" to (build ?: ""), + "Build-Time" to Instant.now().toString(), + "Git-Branch" to gitBranch, // Paper diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java index 774556a62eb240da42e84db4502e2ed43495be17..9bc7b99b5b39a8ffe4118b8d86f5b8065c4fe460 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java diff --git a/patches/server/0019-Remap-SparklyPower-hacky-legacy-NBT-tags.patch b/patches/server/0019-Remap-SparklyPower-hacky-legacy-NBT-tags.patch new file mode 100644 index 0000000..3c2ed6b --- /dev/null +++ b/patches/server/0019-Remap-SparklyPower-hacky-legacy-NBT-tags.patch @@ -0,0 +1,129 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: MrPowerGamerBR +Date: Sat, 1 Jun 2024 01:22:41 -0300 +Subject: [PATCH] Remap SparklyPower hacky legacy NBT tags + +This is only useful for us in SparklyPower, but yeah... + +diff --git a/src/main/java/ca/spottedleaf/dataconverter/minecraft/converters/itemstack/ConverterItemStackToDataComponents.java b/src/main/java/ca/spottedleaf/dataconverter/minecraft/converters/itemstack/ConverterItemStackToDataComponents.java +index a5a21d1c7579e45b78eae4b42a9f023db74acc0a..921947048648ff4555b80be4ef669a6dd53b12af 100644 +--- a/src/main/java/ca/spottedleaf/dataconverter/minecraft/converters/itemstack/ConverterItemStackToDataComponents.java ++++ b/src/main/java/ca/spottedleaf/dataconverter/minecraft/converters/itemstack/ConverterItemStackToDataComponents.java +@@ -9,6 +9,7 @@ import ca.spottedleaf.dataconverter.types.ObjectType; + import ca.spottedleaf.dataconverter.types.TypeUtil; + import ca.spottedleaf.dataconverter.util.NamespaceUtil; + import net.minecraft.util.Mth; ++ + import java.util.Arrays; + import java.util.HashSet; + import java.util.Set; +@@ -1220,6 +1221,7 @@ public final class ConverterItemStackToDataComponents { + ret.setString("id", this.id); + ret.setInt("count", this.count); + if (!this.tag.isEmpty()) { ++ net.sparklypower.sparklypaper.LegacyNBTRemapper.INSTANCE.remap(this.tag); // SparklyPaper - Remap SparklyPower hacky legacy NBT tags + this.components.setMap("minecraft:custom_data", this.tag); + } + +diff --git a/src/main/kotlin/net/sparklypower/sparklypaper/LegacyNBTRemapper.kt b/src/main/kotlin/net/sparklypower/sparklypaper/LegacyNBTRemapper.kt +new file mode 100644 +index 0000000000000000000000000000000000000000..194d1ed887c389dc50648d0c05c2d71de2691c09 +--- /dev/null ++++ b/src/main/kotlin/net/sparklypower/sparklypaper/LegacyNBTRemapper.kt +@@ -0,0 +1,95 @@ ++package net.sparklypower.sparklypaper ++ ++import ca.spottedleaf.dataconverter.types.MapType ++ ++object LegacyNBTRemapper { ++ /** ++ * Remaps hacky direct NBT storage used in SparklyPower to proper PersistentDataContainer data ++ */ ++ fun remap(tag: MapType) { ++ val perfectDreamsMap = tag.getMap("PerfectDreams") ++ ++ if (perfectDreamsMap != null) { ++ val publicBukkitValuesMap = tag.getOrCreateMap("PublicBukkitValues") ++ ++ // The "setBoolean" functions do set bytes behind the scenes, just like how we do the things in SparklyPower ++ perfectDreamsMap.getStringAndRemove("isJetpack")?.let { ++ publicBukkitValuesMap.setBoolean("sparklypower:is_jetpack", it.toBoolean()) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("disallowCrafting")?.let { ++ publicBukkitValuesMap.setBoolean("sparklypower:disallow_crafting", it.toBoolean()) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("poop")?.let { ++ publicBukkitValuesMap.setBoolean("sparklypower:is_poop", it.toBoolean()) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("renamedBySeuZe")?.let { ++ publicBukkitValuesMap.setBoolean("sparklypower:is_renamed_by_seu_ze", it.toBoolean()) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("isMonsterPickaxe")?.let { ++ publicBukkitValuesMap.setBoolean("sparklypower:is_monster_tool", it.toBoolean()) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("itemOwner")?.let { ++ publicBukkitValuesMap.setString("sparklypower:item_owner", it) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("DreamFusca")?.let { ++ publicBukkitValuesMap.setString("sparklypower:fusca_info", it) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("isFusca")?.let { ++ publicBukkitValuesMap.setBoolean("sparklypower:is_fusca", it.toBoolean()) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("fancyLeatherArmor")?.let { ++ publicBukkitValuesMap.setBoolean("sparklypower:is_fancy_leather_armor", it.toBoolean()) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("caixaSecretaLevel")?.let { ++ publicBukkitValuesMap.setInt("sparklypower:caixa_secreta_level", it.toInt()) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("caixaSecretaWorld")?.let { ++ publicBukkitValuesMap.setString("sparklypower:caixa_secreta_world", it) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("isMoveSpawners")?.let { ++ publicBukkitValuesMap.setBoolean("sparklypower:is_move_spawners_tool", it.toBoolean()) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("spawnerType")?.let { ++ publicBukkitValuesMap.setString("sparklypower:spawner_type", it) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("isMochila")?.let { ++ publicBukkitValuesMap.setBoolean("is_mochila", it.toBoolean()) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("mochilaId")?.let { ++ publicBukkitValuesMap.setLong("mochila_id", it.toLong()) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("customMapOwner")?.let { ++ publicBukkitValuesMap.setString("map_custom_owner", it) ++ } ++ ++ perfectDreamsMap.getStringAndRemove("quickTeleport")?.let { ++ publicBukkitValuesMap.setBoolean("is_quick_resources_teleport", it.toBoolean()) ++ } ++ ++ // If it is empty, then it means that we have migrated everything and we can remove the old PerfectDreams tag, yay! ++ if (perfectDreamsMap.isEmpty) ++ tag.remove("PerfectDreams") ++ } ++ } ++ ++ private fun MapType.getStringAndRemove(key: String): String? { ++ val v = getString(key) ++ remove(key) ++ return v ++ } ++} +\ No newline at end of file