Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@
import com.denizenscript.denizen.scripts.containers.core.ItemScriptHelper;
import com.denizenscript.denizen.utilities.FormattedTextHelper;
import com.denizenscript.denizen.utilities.PaperAPITools;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizencore.DenizenCore;
import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.core.ListTag;
import com.denizenscript.denizencore.tags.TagContext;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import com.denizenscript.denizencore.utilities.ReflectionHelper;
Expand Down Expand Up @@ -421,12 +423,17 @@ public double[] getRecentTps() {
}

@Override
public String getCopperGolemState(CopperGolem copperGolem) {
public ListTag getCopperGolemVariants() {
return Utilities.listTypes(WeatheringCopperState.class);
}

@Override
public String getCopperGolemVariant(CopperGolem copperGolem) {
return copperGolem.getWeatheringState().name();
}

@Override
public void setCopperGolemState(ElementTag variant, CopperGolem copperGolem, Mechanism mechanism) {
public void setCopperGolemVariant(ElementTag variant, CopperGolem copperGolem, Mechanism mechanism) {
if (mechanism.requireEnum(WeatheringCopperState.class)) {
copperGolem.setWeatheringState(variant.asEnum(WeatheringCopperState.class));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,9 +197,7 @@ public static void registerMainProperties() {
PropertyParser.registerProperty(EntityTrapped.class, EntityTag.class);
PropertyParser.registerProperty(EntityTrapTime.class, EntityTag.class);
}
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_20)) {
PropertyParser.registerProperty(EntityVariant.class, EntityTag.class);
}
PropertyParser.registerProperty(EntityVariant.class, EntityTag.class);
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
PropertyParser.registerProperty(EntityViewRange.class, EntityTag.class);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.denizenscript.denizen.nms.NMSVersion;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.properties.bukkit.BukkitColorExtensions;
import com.denizenscript.denizen.utilities.BukkitImplDeprecations;
import com.denizenscript.denizen.utilities.MultiVersionHelper1_19;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizencore.objects.Mechanism;
Expand Down Expand Up @@ -112,12 +113,15 @@ else if (type == EntityType.OCELOT && mechanism.requireEnum(Ocelot.Type.class))
as(Ocelot.class).setCatType(color.asEnum(Ocelot.Type.class));
}
else if (type == EntityType.RABBIT && mechanism.requireEnum(Rabbit.Type.class)) {
BukkitImplDeprecations.colorToVariantProperty.warn(mechanism.context);
as(Rabbit.class).setRabbitType(color.asEnum(Rabbit.Type.class));
}
else if ((type == EntityType.LLAMA || type == EntityType.TRADER_LLAMA) && mechanism.requireEnum(Llama.Color.class)) {
BukkitImplDeprecations.colorToVariantProperty.warn(mechanism.context);
as(Llama.class).setColor(color.asEnum(Llama.Color.class));
}
else if (type == EntityType.PARROT && mechanism.requireEnum(Parrot.Variant.class)) {
BukkitImplDeprecations.colorToVariantProperty.warn(mechanism.context);
as(Parrot.class).setVariant(color.asEnum(Parrot.Variant.class));
}
else if (type == EntityType.SHULKER && mechanism.requireEnum(DyeColor.class)) {
Expand Down Expand Up @@ -156,6 +160,7 @@ else if (type == EntityType.TROPICAL_FISH && mechanism.requireObject(ListTag.cla
}
}
else if (type == EntityType.FOX && mechanism.requireEnum(Fox.Type.class)) {
BukkitImplDeprecations.colorToVariantProperty.warn(mechanism.context);
as(Fox.class).setFoxType(color.asEnum(Fox.Type.class));
}
else if (type == EntityType.CAT && mechanism.requireObject(ListTag.class)) {
Expand Down Expand Up @@ -201,9 +206,11 @@ else if (type == EntityType.PANDA && mechanism.requireObject(ListTag.class)) {
}
// TODO This technically has registries on all supported versions
else if (type == EntityType.VILLAGER && Utilities.requireEnumlike(mechanism, Villager.Type.class)) {
BukkitImplDeprecations.colorToVariantProperty.warn(mechanism.context);
as(Villager.class).setVillagerType(Utilities.elementToEnumlike(mechanism.getValue(), Villager.Type.class));
}
else if (type == EntityType.ZOMBIE_VILLAGER && Utilities.requireEnumlike(mechanism, Villager.Type.class)) {
BukkitImplDeprecations.colorToVariantProperty.warn(mechanism.context);
as(ZombieVillager.class).setVillagerType(Utilities.elementToEnumlike(mechanism.getValue(), Villager.Type.class));
}
else if (type == EntityType.ARROW && mechanism.requireObject(ColorTag.class)) {
Expand Down Expand Up @@ -244,18 +251,30 @@ public String getColor(boolean includeDeprecated) {
}
yield null;
}
case RABBIT -> as(Rabbit.class).getRabbitType().name();
case LLAMA, TRADER_LLAMA -> as(Llama.class).getColor().name();
case PARROT -> as(Parrot.class).getVariant().name();
case RABBIT -> {
BukkitImplDeprecations.colorToVariantProperty.warn();
yield as(Rabbit.class).getRabbitType().name();
}
case LLAMA, TRADER_LLAMA -> {
BukkitImplDeprecations.colorToVariantProperty.warn();
yield as(Llama.class).getColor().name();
}
case PARROT -> {
BukkitImplDeprecations.colorToVariantProperty.warn();
yield as(Parrot.class).getVariant().name();
}
case SHULKER -> {
DyeColor color = as(Shulker.class).getColor();
yield color == null ? null : color.name();
yield color == null ? null : color.name();
}
case TROPICAL_FISH -> {
TropicalFish fish = as(TropicalFish.class);
yield new ListTag(Arrays.asList(fish.getPattern().name(), fish.getBodyColor().name(), fish.getPatternColor().name())).identify();
}
case FOX -> as(Fox.class).getFoxType().name();
case FOX -> {
BukkitImplDeprecations.colorToVariantProperty.warn();
yield as(Fox.class).getFoxType().name();
}
case CAT -> {
Cat cat = as(Cat.class);
// TODO once 1.21 is the minimum supported version, replace with direct registry-based handling
Expand All @@ -266,8 +285,14 @@ public String getColor(boolean includeDeprecated) {
yield panda.getMainGene().name() + "|" + panda.getHiddenGene().name();
}
// TODO This technically has registries on all supported versions
case VILLAGER -> String.valueOf(as(Villager.class).getVillagerType());
case ZOMBIE_VILLAGER -> String.valueOf(as(ZombieVillager.class).getVillagerType());
case VILLAGER -> {
BukkitImplDeprecations.colorToVariantProperty.warn();
yield String.valueOf(as(Villager.class).getVillagerType());
}
case ZOMBIE_VILLAGER -> {
BukkitImplDeprecations.colorToVariantProperty.warn();
yield String.valueOf(as(ZombieVillager.class).getVillagerType());
}
case ARROW -> {
try {
yield BukkitColorExtensions.fromColor(as(Arrow.class).getColor()).identify();
Expand Down Expand Up @@ -298,19 +323,34 @@ public ListTag getAllowedColors() {
yield horseColors;
}
case SHEEP, WOLF, SHULKER -> Utilities.listTypes(DyeColor.class);
case RABBIT -> Utilities.listTypes(Rabbit.Type.class);
case LLAMA, TRADER_LLAMA -> Utilities.listTypes(Llama.Color.class);
case PARROT -> Utilities.listTypes(Parrot.Variant.class);
case RABBIT -> {
BukkitImplDeprecations.allowedColorsToVariants.warn();
yield Utilities.listTypes(Rabbit.Type.class);
}
case LLAMA, TRADER_LLAMA -> {
BukkitImplDeprecations.allowedColorsToVariants.warn();
yield Utilities.listTypes(Llama.Color.class);
}
case PARROT -> {
BukkitImplDeprecations.allowedColorsToVariants.warn();
yield Utilities.listTypes(Parrot.Variant.class);
}
case TROPICAL_FISH -> {
ListTag patterns = Utilities.listTypes(TropicalFish.Pattern.class);
patterns.addAll(Utilities.listTypes(DyeColor.class));
yield patterns;
}
case FOX -> Utilities.listTypes(Fox.Type.class);
case FOX -> {
BukkitImplDeprecations.allowedColorsToVariants.warn();
yield Utilities.listTypes(Fox.Type.class);
}
case CAT -> Utilities.listTypes(Cat.Type.class);
case PANDA -> Utilities.listTypes(Panda.Gene.class);
// TODO This technically has registries on all supported versions
case VILLAGER, ZOMBIE_VILLAGER -> Utilities.listTypes(Villager.Type.class);
case VILLAGER, ZOMBIE_VILLAGER -> {
BukkitImplDeprecations.allowedColorsToVariants.warn();
yield Utilities.listTypes(Villager.Type.class);
}
case GOAT -> {
ListTag result = new ListTag();
result.add("screaming");
Expand Down
Loading