mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-29 03:49:15 +00:00
Merge remote-tracking branch 'upstream/dev' into dev
# Conflicts: # bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java # gradle.properties
This commit is contained in:
@@ -27,6 +27,7 @@ import net.momirealms.craftengine.core.registry.WritableRegistry;
|
||||
import net.momirealms.craftengine.core.util.*;
|
||||
import org.incendo.cloud.suggestion.Suggestion;
|
||||
import org.incendo.cloud.type.Either;
|
||||
import org.joml.Vector3f;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
@@ -459,6 +460,14 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
|
||||
}
|
||||
return new DynamicLoreModifier<>(dynamicLore);
|
||||
}, "dynamic-lore");
|
||||
registerDataFunction((obj) -> {
|
||||
if (obj instanceof Integer integer) {
|
||||
return new DyedColorModifier<>(integer);
|
||||
} else {
|
||||
Vector3f vector3f = MiscUtils.getAsVector3f(obj, "dyed-color");
|
||||
return new DyedColorModifier<>(MCUtils.fastFloor(vector3f.x) << 16 + MCUtils.fastFloor(vector3f.y) << 8 + MCUtils.fastFloor(vector3f.z));
|
||||
}
|
||||
}, "dyed-color");
|
||||
registerDataFunction((obj) -> {
|
||||
Map<String, Object> data = MiscUtils.castToMap(obj, false);
|
||||
return new TagsModifier<>(data);
|
||||
|
||||
@@ -36,6 +36,7 @@ public class ItemSettings {
|
||||
boolean dyeable = true;
|
||||
Helmet helmet = null;
|
||||
FoodData foodData = null;
|
||||
Key consumeReplacement = null;
|
||||
|
||||
private ItemSettings() {}
|
||||
|
||||
@@ -72,6 +73,7 @@ public class ItemSettings {
|
||||
newSettings.dyeable = settings.dyeable;
|
||||
newSettings.helmet = settings.helmet;
|
||||
newSettings.foodData = settings.foodData;
|
||||
newSettings.consumeReplacement = settings.consumeReplacement;
|
||||
return newSettings;
|
||||
}
|
||||
|
||||
@@ -124,6 +126,11 @@ public class ItemSettings {
|
||||
return foodData;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Key consumeReplacement() {
|
||||
return consumeReplacement;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Helmet helmet() {
|
||||
return helmet;
|
||||
@@ -139,6 +146,11 @@ public class ItemSettings {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemSettings consumeReplacement(Key key) {
|
||||
this.consumeReplacement = key;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemSettings canRepair(boolean canRepair) {
|
||||
this.canRepair = canRepair;
|
||||
return this;
|
||||
@@ -228,6 +240,7 @@ public class ItemSettings {
|
||||
int intValue = ResourceConfigUtils.getAsInt(value, "fuel-time");
|
||||
return settings -> settings.fuelTime(intValue);
|
||||
}));
|
||||
registerFactory("consume-replacement", (value -> settings -> settings.consumeReplacement(Key.of(value.toString()))));
|
||||
registerFactory("tags", (value -> {
|
||||
List<String> tags = MiscUtils.getAsStringList(value);
|
||||
return settings -> settings.tags(tags.stream().map(Key::of).collect(Collectors.toSet()));
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package net.momirealms.craftengine.core.item.modifier;
|
||||
|
||||
import net.momirealms.craftengine.core.item.ComponentKeys;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||
import net.momirealms.craftengine.core.item.NetworkItemHandler;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
import net.momirealms.sparrow.nbt.CompoundTag;
|
||||
import net.momirealms.sparrow.nbt.Tag;
|
||||
|
||||
public class DyedColorModifier<I> implements ItemDataModifier<I> {
|
||||
private final int color;
|
||||
|
||||
public DyedColorModifier(int color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String name() {
|
||||
return "dyed-color";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(Item<I> item, ItemBuildContext context) {
|
||||
item.dyedColor(this.color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareNetworkItem(Item<I> item, ItemBuildContext context, CompoundTag networkData) {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
Tag previous = item.getNBTComponent(ComponentKeys.DYED_COLOR);
|
||||
if (previous != null) {
|
||||
networkData.put(ComponentKeys.DYED_COLOR.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.ADD, previous));
|
||||
} else {
|
||||
networkData.put(ComponentKeys.DYED_COLOR.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.REMOVE));
|
||||
}
|
||||
} else {
|
||||
Tag previous = item.getNBTTag("display", "color");
|
||||
if (previous != null) {
|
||||
networkData.put("display.color", NetworkItemHandler.pack(NetworkItemHandler.Operation.ADD, previous));
|
||||
} else {
|
||||
networkData.put("display.color", NetworkItemHandler.pack(NetworkItemHandler.Operation.REMOVE));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user