feat: support 1.21

Fixes attribute modifier syncing, adjust apache dep
feat/data-edit-commands 3.6
William 5 months ago
parent 05d588f681
commit 24ba209f8f
No known key found for this signature in database

@ -26,6 +26,7 @@ import de.tr7zw.changeme.nbtapi.NBTCompound;
import de.tr7zw.changeme.nbtapi.NBTPersistentDataContainer; import de.tr7zw.changeme.nbtapi.NBTPersistentDataContainer;
import lombok.*; import lombok.*;
import net.william278.desertwell.util.ThrowingConsumer; import net.william278.desertwell.util.ThrowingConsumer;
import net.william278.desertwell.util.Version;
import net.william278.husksync.BukkitHuskSync; import net.william278.husksync.BukkitHuskSync;
import net.william278.husksync.HuskSync; import net.william278.husksync.HuskSync;
import net.william278.husksync.adapter.Adaptable; import net.william278.husksync.adapter.Adaptable;
@ -572,7 +573,7 @@ public abstract class BukkitData implements Data {
// We don't sync unmodified or disabled attributes // We don't sync unmodified or disabled attributes
return; return;
} }
attributes.add(adapt(instance)); attributes.add(adapt(instance, plugin.getMinecraftVersion()));
}); });
return new BukkitData.Attributes(attributes); return new BukkitData.Attributes(attributes);
} }
@ -591,18 +592,18 @@ public abstract class BukkitData implements Data {
} }
@NotNull @NotNull
private static Attribute adapt(@NotNull AttributeInstance instance) { private static Attribute adapt(@NotNull AttributeInstance instance, @NotNull Version version) {
return new Attribute( return new Attribute(
instance.getAttribute().getKey().toString(), instance.getAttribute().getKey().toString(),
instance.getBaseValue(), instance.getBaseValue(),
instance.getModifiers().stream().map(BukkitData.Attributes::adapt).collect(Collectors.toSet()) instance.getModifiers().stream().map(m -> adapt(m, version)).collect(Collectors.toSet())
); );
} }
@NotNull @NotNull
private static Modifier adapt(@NotNull AttributeModifier modifier) { private static Modifier adapt(@NotNull AttributeModifier modifier, @NotNull Version version) {
return new Modifier( return new Modifier(
modifier.getUniqueId(), version.compareTo(Version.fromString("1.21")) >= 0 ? null : modifier.getUniqueId(),
modifier.getName(), modifier.getName(),
modifier.getAmount(), modifier.getAmount(),
modifier.getOperation().ordinal(), modifier.getOperation().ordinal(),

@ -5,7 +5,6 @@ plugins {
dependencies { dependencies {
api 'commons-io:commons-io:2.16.1' api 'commons-io:commons-io:2.16.1'
api 'org.apache.commons:commons-text:1.12.0' api 'org.apache.commons:commons-text:1.12.0'
api 'org.apache.commons:commons-pool2:2.12.0'
api 'net.william278:minedown:1.8.2' api 'net.william278:minedown:1.8.2'
api 'org.json:json:20240303' api 'org.json:json:20240303'
api 'com.google.code.gson:gson:2.11.0' api 'com.google.code.gson:gson:2.11.0'

@ -21,6 +21,11 @@ package net.william278.husksync.data;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import net.kyori.adventure.key.Key; import net.kyori.adventure.key.Key;
import net.william278.husksync.HuskSync; import net.william278.husksync.HuskSync;
import net.william278.husksync.user.OnlineUser; import net.william278.husksync.user.OnlineUser;
@ -334,17 +339,34 @@ public interface Data {
} }
record Modifier( @Getter
@NotNull UUID uuid, @Accessors(fluent = true)
@NotNull String name, @AllArgsConstructor
double amount, @NoArgsConstructor
@SerializedName("operation") int operationType, final class Modifier {
@SerializedName("equipment_slot") int equipmentSlot @Getter(AccessLevel.NONE)
) { @Nullable
@SerializedName("uuid")
private UUID uuid;
@SerializedName("name")
private String name;
@SerializedName("amount")
private double amount;
@SerializedName("operation")
private int operationType;
@SerializedName("equipment_slot")
private int equipmentSlot;
public Modifier(@NotNull String name, double amount, int operationType, int equipmentSlot) {
this.name = name;
this.amount = amount;
this.operationType = operationType;
this.equipmentSlot = equipmentSlot;
}
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
return obj instanceof Modifier modifier && modifier.uuid.equals(uuid); return obj instanceof Modifier modifier && modifier.uuid().equals(uuid());
} }
public double modify(double value) { public double modify(double value) {
@ -355,6 +377,12 @@ public interface Data {
default -> value; default -> value;
}; };
} }
@NotNull
public UUID uuid() {
return uuid != null ? uuid : UUID.nameUUIDFromBytes(name.getBytes());
}
} }
default Optional<Attribute> getAttribute(@NotNull Key key) { default Optional<Attribute> getAttribute(@NotNull Key key) {

@ -21,6 +21,7 @@ dependencies {
modCompileOnly "net.fabricmc.fabric-api:fabric-api:${fabric_api_version}" modCompileOnly "net.fabricmc.fabric-api:fabric-api:${fabric_api_version}"
// Runtime dependencies on Bukkit; "include" them on Fabric. (todo: minify JAR?) // Runtime dependencies on Bukkit; "include" them on Fabric. (todo: minify JAR?)
implementation include('org.apache.commons:commons-pool2:2.12.0')
implementation include("redis.clients:jedis:$jedis_version") implementation include("redis.clients:jedis:$jedis_version")
implementation include("com.mysql:mysql-connector-j:$mysql_driver_version") implementation include("com.mysql:mysql-connector-j:$mysql_driver_version")
implementation include("org.mariadb.jdbc:mariadb-java-client:$mariadb_driver_version") implementation include("org.mariadb.jdbc:mariadb-java-client:$mariadb_driver_version")

@ -12,15 +12,15 @@ from tqdm import tqdm
# Parameters for starting a network of Minecraft servers # Parameters for starting a network of Minecraft servers
class Parameters: class Parameters:
root_dir = './servers/' root_dir = './servers/'
proxy_version = "1.20" proxy_version = "1.21"
minecraft_version = '1.20.6' minecraft_version = '1.21'
eula_agreement = 'true' eula_agreement = 'true'
backend_names = ['alpha', 'beta'] backend_names = ['alpha', 'beta']
backend_ports = [25567, 25568] backend_ports = [25567, 25568]
backend_type = 'paper' backend_type = 'paper'
backend_ram = 2048 backend_ram = 2048
backend_plugins = ['../target/HuskSync-Paper-*.jar', './ProtocolLib/ProtocolLib.jar'] backend_plugins = ['../target/HuskSync-Paper-*.jar']
backend_plugin_folders = ['./HuskSync'] backend_plugin_folders = ['./HuskSync']
operator_names = ['William278'] operator_names = ['William278']
operator_uuids = ['5dfb0558-e306-44f4-bb9a-f9218d4eb787'] operator_uuids = ['5dfb0558-e306-44f4-bb9a-f9218d4eb787']
@ -33,7 +33,7 @@ class Parameters:
proxy_plugins = [] proxy_plugins = []
proxy_plugin_folders = [] proxy_plugin_folders = []
just_update_plugins = False just_update_plugins = True
def main(update=False): def main(update=False):

Loading…
Cancel
Save