Skip to content

Commit

Permalink
feat: support 1.21
Browse files Browse the repository at this point in the history
Fixes attribute modifier syncing, adjust apache dep
  • Loading branch information
WiIIiam278 committed Jun 14, 2024
1 parent 05d588f commit 24ba209
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import de.tr7zw.changeme.nbtapi.NBTPersistentDataContainer;
import lombok.*;
import net.william278.desertwell.util.ThrowingConsumer;
import net.william278.desertwell.util.Version;
import net.william278.husksync.BukkitHuskSync;
import net.william278.husksync.HuskSync;
import net.william278.husksync.adapter.Adaptable;
Expand Down Expand Up @@ -572,7 +573,7 @@ public static BukkitData.Attributes adapt(@NotNull Player player, @NotNull HuskS
// We don't sync unmodified or disabled attributes
return;
}
attributes.add(adapt(instance));
attributes.add(adapt(instance, plugin.getMinecraftVersion()));
});
return new BukkitData.Attributes(attributes);
}
Expand All @@ -591,18 +592,18 @@ public Optional<Attribute> getAttribute(@NotNull String key) {
}

@NotNull
private static Attribute adapt(@NotNull AttributeInstance instance) {
private static Attribute adapt(@NotNull AttributeInstance instance, @NotNull Version version) {
return new Attribute(
instance.getAttribute().getKey().toString(),
instance.getBaseValue(),
instance.getModifiers().stream().map(BukkitData.Attributes::adapt).collect(Collectors.toSet())
instance.getModifiers().stream().map(m -> adapt(m, version)).collect(Collectors.toSet())
);
}

@NotNull
private static Modifier adapt(@NotNull AttributeModifier modifier) {
private static Modifier adapt(@NotNull AttributeModifier modifier, @NotNull Version version) {
return new Modifier(
modifier.getUniqueId(),
version.compareTo(Version.fromString("1.21")) >= 0 ? null : modifier.getUniqueId(),
modifier.getName(),
modifier.getAmount(),
modifier.getOperation().ordinal(),
Expand Down
1 change: 0 additions & 1 deletion common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ plugins {
dependencies {
api 'commons-io:commons-io:2.16.1'
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 'org.json:json:20240303'
api 'com.google.code.gson:gson:2.11.0'
Expand Down
72 changes: 50 additions & 22 deletions common/src/main/java/net/william278/husksync/data/Data.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@

import com.google.common.collect.Sets;
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.william278.husksync.HuskSync;
import net.william278.husksync.user.OnlineUser;
Expand Down Expand Up @@ -156,8 +161,8 @@ interface Advancements extends Data {
@NotNull
default List<Advancement> getCompletedExcludingRecipes() {
return getCompleted().stream()
.filter(advancement -> !advancement.getKey().startsWith("minecraft:recipe"))
.collect(Collectors.toList());
.filter(advancement -> !advancement.getKey().startsWith("minecraft:recipe"))
.collect(Collectors.toList());
}

void setCompleted(@NotNull List<Advancement> completed);
Expand Down Expand Up @@ -186,13 +191,13 @@ public static Advancement adapt(@NotNull String key, @NotNull Map<String, Date>
@NotNull
private static Map<String, Long> adaptDateMap(@NotNull Map<String, Date> dateMap) {
return dateMap.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().getTime()));
.collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().getTime()));
}

@NotNull
private static Map<String, Date> adaptLongMap(@NotNull Map<String, Long> dateMap) {
return dateMap.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, e -> new Date(e.getValue())));
.collect(Collectors.toMap(Map.Entry::getKey, e -> new Date(e.getValue())));
}

@NotNull
Expand Down Expand Up @@ -245,9 +250,9 @@ interface Location extends Data {
void setWorld(@NotNull World world);

record World(
@SerializedName("name") @NotNull String name,
@SerializedName("uuid") @NotNull UUID uuid,
@SerializedName("environment") @NotNull String environment
@SerializedName("name") @NotNull String name,
@SerializedName("uuid") @NotNull UUID uuid,
@SerializedName("environment") @NotNull String environment
) {
}
}
Expand Down Expand Up @@ -319,9 +324,9 @@ interface Attributes extends Data {
List<Attribute> getAttributes();

record Attribute(
@NotNull String name,
double baseValue,
@NotNull Set<Modifier> modifiers
@NotNull String name,
double baseValue,
@NotNull Set<Modifier> modifiers
) {

public double getValue() {
Expand All @@ -334,17 +339,34 @@ public double getValue() {

}

record Modifier(
@NotNull UUID uuid,
@NotNull String name,
double amount,
@SerializedName("operation") int operationType,
@SerializedName("equipment_slot") int equipmentSlot
) {
@Getter
@Accessors(fluent = true)
@AllArgsConstructor
@NoArgsConstructor
final class Modifier {
@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
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) {
Expand All @@ -355,12 +377,18 @@ public double modify(double value) {
default -> value;
};
}

@NotNull
public UUID uuid() {
return uuid != null ? uuid : UUID.nameUUIDFromBytes(name.getBytes());
}

}

default Optional<Attribute> getAttribute(@NotNull Key key) {
return getAttributes().stream()
.filter(attribute -> attribute.name().equals(key.asString()))
.findFirst();
.filter(attribute -> attribute.name().equals(key.asString()))
.findFirst();
}

default void removeAttribute(@NotNull Key key) {
Expand All @@ -369,8 +397,8 @@ default void removeAttribute(@NotNull Key key) {

default double getMaxHealth() {
return getAttribute(MAX_HEALTH_KEY)
.map(Attribute::getValue)
.orElse(20.0);
.map(Attribute::getValue)
.orElse(20.0);
}

default void setMaxHealth(double maxHealth) {
Expand Down
1 change: 1 addition & 0 deletions fabric/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ dependencies {
modCompileOnly "net.fabricmc.fabric-api:fabric-api:${fabric_api_version}"

// 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("com.mysql:mysql-connector-j:$mysql_driver_version")
implementation include("org.mariadb.jdbc:mariadb-java-client:$mariadb_driver_version")
Expand Down
8 changes: 4 additions & 4 deletions test/spin_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@
# Parameters for starting a network of Minecraft servers
class Parameters:
root_dir = './servers/'
proxy_version = "1.20"
minecraft_version = '1.20.6'
proxy_version = "1.21"
minecraft_version = '1.21'
eula_agreement = 'true'

backend_names = ['alpha', 'beta']
backend_ports = [25567, 25568]
backend_type = 'paper'
backend_ram = 2048
backend_plugins = ['../target/HuskSync-Paper-*.jar', './ProtocolLib/ProtocolLib.jar']
backend_plugins = ['../target/HuskSync-Paper-*.jar']
backend_plugin_folders = ['./HuskSync']
operator_names = ['William278']
operator_uuids = ['5dfb0558-e306-44f4-bb9a-f9218d4eb787']
Expand All @@ -33,7 +33,7 @@ class Parameters:
proxy_plugins = []
proxy_plugin_folders = []

just_update_plugins = False
just_update_plugins = True


def main(update=False):
Expand Down

0 comments on commit 24ba209

Please sign in to comment.