Skip to content

Commit

Permalink
Removed obfuscated nms in favor of mojang-mappings jars
Browse files Browse the repository at this point in the history
  • Loading branch information
OmerBenGera committed Sep 10, 2022
1 parent f688eb0 commit 7432606
Show file tree
Hide file tree
Showing 105 changed files with 5,546 additions and 5,620 deletions.
2 changes: 2 additions & 0 deletions build.gradle
Expand Up @@ -108,6 +108,8 @@ shadowJar {
exclude archiveName
}

exclude '*exclude.jar'

destinationDir = file("./target/")
from sourceSets.getByName("main").output
configurations = [project.configurations.getByName("runtimeClasspath")]
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
16 changes: 13 additions & 3 deletions settings.gradle
@@ -1,4 +1,12 @@
pluginManagement {
repositories {
gradlePluginPortal()
maven { url "https://repo.papermc.io/repository/maven-public/" }
}
}

rootProject.name = 'WildChests'

include 'API'
include 'Hook_ChestShop'
include 'Hook_CMI'
Expand All @@ -18,7 +26,9 @@ include 'v1_8_R3'
include 'v1_12_R1'
include 'v1_16_R3'
include 'v1_17_R1'
include 'v1_18_R1'
include 'v1_18_R2'
include 'v1_19_R1'
include 'v1181'
include 'v1182'
include 'v119'
include 'v1191'
include 'v1192'

61 changes: 37 additions & 24 deletions src/main/java/com/bgsoftware/wildchests/WildChestsPlugin.java
@@ -1,6 +1,6 @@
package com.bgsoftware.wildchests;

import com.bgsoftware.common.mappings.MappingsChecker;
import com.bgsoftware.common.reflection.ReflectMethod;
import com.bgsoftware.common.updater.Updater;
import com.bgsoftware.wildchests.api.WildChests;
import com.bgsoftware.wildchests.api.WildChestsAPI;
Expand All @@ -17,21 +17,23 @@
import com.bgsoftware.wildchests.listeners.PlayerListener;
import com.bgsoftware.wildchests.nms.NMSAdapter;
import com.bgsoftware.wildchests.nms.NMSInventory;
import com.bgsoftware.common.remaps.TestRemaps;
import com.bgsoftware.wildchests.task.NotifierTask;
import com.bgsoftware.wildchests.utils.Executor;
import com.bgsoftware.wildchests.utils.Pair;
import com.bgsoftware.wildchests.utils.ServerVersion;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
import org.bukkit.UnsafeValues;
import org.bukkit.World;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.plugin.java.JavaPlugin;

import java.io.File;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public final class WildChestsPlugin extends JavaPlugin implements WildChests {
Expand Down Expand Up @@ -148,37 +150,48 @@ private void loadAPI() {
}

private boolean loadNMSAdapter() {
String version = getServer().getClass().getPackage().getName().split("\\.")[3];
try {
nmsAdapter = (NMSAdapter) Class.forName(String.format("com.bgsoftware.wildchests.nms.%s.NMSAdapter", version)).newInstance();

String mappingVersionHash = nmsAdapter.getMappingsHash();

if (mappingVersionHash != null && !MappingsChecker.checkMappings(mappingVersionHash, version, error -> {
log("&cFailed to retrieve allowed mappings for your server, skipping...");
return true;
})) {
log("Error while loading adapter - your version mappings are not supported... Please contact @Ome_R");
log("Your mappings version: " + mappingVersionHash);
return false;
String version = null;

if (ServerVersion.isLessThan(ServerVersion.v1_18)) {
version = getServer().getClass().getPackage().getName().split("\\.")[3];
} else {
ReflectMethod<Integer> getDataVersion = new ReflectMethod<>(UnsafeValues.class, "getDataVersion");
int dataVersion = getDataVersion.invoke(Bukkit.getUnsafe());

List<Pair<Integer, String>> versions = Arrays.asList(
new Pair<>(2865, "v1181"),
new Pair<>(2975, "v1182"),
new Pair<>(3105, "v119"),
new Pair<>(3117, "v1191"),
new Pair<>(3120, "v1192")
);

for (Pair<Integer, String> versionData : versions) {
if (dataVersion <= versionData.key) {
version = versionData.value;
break;
}
}

nmsInventory = (NMSInventory) Class.forName(String.format("com.bgsoftware.wildchests.nms.%s.NMSInventory", version)).newInstance();
} catch (Exception ex) {
log("Error while loading adapter - unknown adapter " + version + "... Please contact @Ome_R");
return false;
if (version == null) {
log("Data version: " + dataVersion);
}
}

File mappingsFile = new File("mappings");
if (mappingsFile.exists()) {
if (version != null) {
try {
TestRemaps.testRemapsForClassesInPackage(mappingsFile,
plugin.getClassLoader(), "com.bgsoftware.wildchests.nms." + version);
nmsAdapter = (NMSAdapter) Class.forName(String.format("com.bgsoftware.wildchests.nms.%s.NMSAdapter", version)).newInstance();
nmsInventory = (NMSInventory) Class.forName(String.format("com.bgsoftware.wildchests.nms.%s.NMSInventory", version)).newInstance();

return true;
} catch (Exception error) {
error.printStackTrace();
}
}

log("&cThe plugin doesn't support your minecraft version.");
log("&cPlease try a different version.");

return true;
}

Expand Down
4 changes: 1 addition & 3 deletions src/main/java/com/bgsoftware/wildchests/nms/NMSAdapter.java
Expand Up @@ -11,9 +11,6 @@

public interface NMSAdapter {

@Nullable
String getMappingsHash();

String serialize(ItemStack itemStack);

String serialize(Inventory[] inventories);
Expand All @@ -28,6 +25,7 @@ public interface NMSAdapter {

ItemStack setChestName(ItemStack itemStack, String chestName);

@Nullable
String getChestName(ItemStack itemStack);

void dropItemAsPlayer(HumanEntity humanEntity, ItemStack bukkitItem);
Expand Down
59 changes: 59 additions & 0 deletions src/main/java/com/bgsoftware/wildchests/utils/ServerVersion.java
@@ -0,0 +1,59 @@
package com.bgsoftware.wildchests.utils;

import org.bukkit.Bukkit;

public enum ServerVersion {

v1_7(17),
v1_8(18),
v1_9(19),
v1_10(110),
v1_11(111),
v1_12(112),
v1_13(113),
v1_14(114),
v1_15(115),
v1_16(116),
v1_17(117),
v1_18(118),
v1_19(119);

private static final ServerVersion currentVersion;
private static final String bukkitVersion;
private static final boolean legacy;

static {
bukkitVersion = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
String[] sections = bukkitVersion.split("_");
currentVersion = ServerVersion.valueOf(sections[0] + "_" + sections[1]);
legacy = isLessThan(ServerVersion.v1_13);
}

private final int code;

ServerVersion(int code) {
this.code = code;
}


public static boolean isAtLeast(ServerVersion serverVersion) {
return currentVersion.code >= serverVersion.code;
}

public static boolean isLessThan(ServerVersion serverVersion) {
return currentVersion.code < serverVersion.code;
}

public static boolean isEquals(ServerVersion serverVersion) {
return currentVersion.code == serverVersion.code;
}

public static boolean isLegacy() {
return legacy;
}

public static String getBukkitVersion() {
return bukkitVersion;
}

}
34 changes: 34 additions & 0 deletions v1181/build.gradle
@@ -0,0 +1,34 @@
plugins {
id("io.papermc.paperweight.userdev") version "1.3.8"
}

java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}

dependencies {
paperweightDevelopmentBundle("io.papermc.paper:dev-bundle:1.18.1-R0.1-SNAPSHOT")
compileOnly project(":API")
compileOnly parent
}

shadowJar {
archiveFileName = "${project.name}-exclude.jar"
}

assemble {
dependsOn(reobfJar)
}

tasks {
reobfJar {
File outputFile = new File(parent.projectDir, "archive/reobf/${project.name}.jar")
outputJar.set(layout.buildDirectory.file(outputFile.getPath()))
}
}

if (project.hasProperty('nms.compile_v1_18') && !Boolean.valueOf(project.findProperty("nms.compile_v1_18").toString())) {
project.tasks.all { task -> task.enabled = false }
}

0 comments on commit 7432606

Please sign in to comment.