diff --git a/src/main/java/ch/njol/skript/bukkitutil/HealthUtils.java b/src/main/java/ch/njol/skript/bukkitutil/HealthUtils.java index be8675ccabb..aae3224b409 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/HealthUtils.java +++ b/src/main/java/ch/njol/skript/bukkitutil/HealthUtils.java @@ -1,21 +1,3 @@ -/** - * This file is part of Skript. - * - * Skript is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Skript is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Skript. If not, see . - * - * Copyright Peter Güttinger, SkriptLang team and contributors - */ package ch.njol.skript.bukkitutil; import ch.njol.skript.Skript; @@ -36,6 +18,15 @@ public class HealthUtils { + private static final Attribute MAX_HEALTH; + static { + if (Skript.isRunningMinecraft(1, 21, 3)) { // In 1.21.3, Attribute became an Interface + MAX_HEALTH = Attribute.valueOf("MAX_HEALTH"); + } else { + MAX_HEALTH = (Attribute) Enum.valueOf((Class) Attribute.class, "GENERIC_MAX_HEALTH"); + } + } + /** * Get the health of an entity * @param e Entity to get health from @@ -62,7 +53,7 @@ public static void setHealth(Damageable e, double health) { * @return How many hearts the entity can have at most */ public static double getMaxHealth(Damageable e) { - AttributeInstance attributeInstance = ((Attributable) e).getAttribute(Attribute.GENERIC_MAX_HEALTH); + AttributeInstance attributeInstance = ((Attributable) e).getAttribute(MAX_HEALTH); assert attributeInstance != null; return attributeInstance.getValue() / 2; } @@ -73,7 +64,7 @@ public static double getMaxHealth(Damageable e) { * @param health How many hearts the entity can have at most */ public static void setMaxHealth(Damageable e, double health) { - AttributeInstance attributeInstance = ((Attributable) e).getAttribute(Attribute.GENERIC_MAX_HEALTH); + AttributeInstance attributeInstance = ((Attributable) e).getAttribute(MAX_HEALTH); assert attributeInstance != null; attributeInstance.setBaseValue(health * 2); } diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java index ba0a66a1f41..98d072893ce 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java @@ -18,18 +18,32 @@ */ package ch.njol.skript.classes.data; -import java.io.StreamCorruptedException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Locale; -import java.util.Map.Entry; -import java.util.UUID; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - +import ch.njol.skript.Skript; +import ch.njol.skript.SkriptConfig; +import ch.njol.skript.aliases.Aliases; +import ch.njol.skript.aliases.ItemType; import ch.njol.skript.bukkitutil.BukkitUtils; +import ch.njol.skript.bukkitutil.EnchantmentUtils; +import ch.njol.skript.bukkitutil.ItemUtils; +import ch.njol.skript.classes.ClassInfo; +import ch.njol.skript.classes.ConfigurationSerializer; +import ch.njol.skript.classes.EnumClassInfo; +import ch.njol.skript.classes.Parser; +import ch.njol.skript.classes.Serializer; +import ch.njol.skript.classes.registry.RegistryClassInfo; +import ch.njol.skript.entity.EntityData; +import ch.njol.skript.expressions.ExprDamageCause; +import ch.njol.skript.expressions.base.EventValueExpression; +import ch.njol.skript.lang.ParseContext; +import ch.njol.skript.lang.util.SimpleLiteral; +import ch.njol.skript.localization.Language; +import ch.njol.skript.registrations.Classes; +import ch.njol.skript.util.BlockUtils; +import ch.njol.skript.util.PotionEffectUtils; +import ch.njol.skript.util.StringMode; +import ch.njol.util.StringUtils; +import ch.njol.yggdrasil.Fields; +import io.papermc.paper.world.MoonPhase; import org.bukkit.Bukkit; import org.bukkit.Chunk; import org.bukkit.Difficulty; @@ -79,34 +93,19 @@ import org.bukkit.potion.PotionEffectType; import org.bukkit.util.CachedServerIcon; import org.bukkit.util.Vector; - -import ch.njol.skript.Skript; -import ch.njol.skript.SkriptConfig; -import ch.njol.skript.aliases.Aliases; -import ch.njol.skript.aliases.ItemType; -import ch.njol.skript.bukkitutil.EnchantmentUtils; -import ch.njol.skript.bukkitutil.ItemUtils; -import ch.njol.skript.classes.ClassInfo; -import ch.njol.skript.classes.ConfigurationSerializer; -import ch.njol.skript.classes.EnumClassInfo; -import ch.njol.skript.classes.Parser; -import ch.njol.skript.classes.Serializer; -import ch.njol.skript.classes.registry.RegistryClassInfo; -import ch.njol.skript.entity.EntityData; -import ch.njol.skript.expressions.ExprDamageCause; -import ch.njol.skript.expressions.base.EventValueExpression; -import ch.njol.skript.lang.ParseContext; -import ch.njol.skript.lang.util.SimpleLiteral; -import ch.njol.skript.localization.Language; -import ch.njol.skript.registrations.Classes; -import ch.njol.skript.util.BlockUtils; -import ch.njol.skript.util.PotionEffectUtils; -import ch.njol.skript.util.StringMode; -import ch.njol.util.StringUtils; -import ch.njol.yggdrasil.Fields; -import io.papermc.paper.world.MoonPhase; import org.jetbrains.annotations.Nullable; +import java.io.StreamCorruptedException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; +import java.util.Map.Entry; +import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + /** * @author Peter Güttinger */ @@ -987,7 +986,8 @@ public String toVariableNameString(final ItemStack i) { if (BukkitUtils.registryExists("BIOME")) { biomeClassInfo = new RegistryClassInfo<>(Biome.class, Registry.BIOME, "biome", "biomes"); } else { - biomeClassInfo = new EnumClassInfo<>(Biome.class, "biome", "biomes"); + //noinspection rawtypes,unchecked + biomeClassInfo = new EnumClassInfo<>((Class) Biome.class, "biome", "biomes"); } Classes.registerClass(biomeClassInfo .user("biomes?") @@ -1481,7 +1481,8 @@ public String toVariableNameString(EnchantmentOffer eo) { if (BukkitUtils.registryExists("ATTRIBUTE")) { attributeClassInfo = new RegistryClassInfo<>(Attribute.class, Registry.ATTRIBUTE, "attributetype", "attribute types"); } else { - attributeClassInfo = new EnumClassInfo<>(Attribute.class, "attributetype", "attribute types"); + //noinspection rawtypes,unchecked + attributeClassInfo = new EnumClassInfo<>((Class) Attribute.class, "attributetype", "attribute types"); } Classes.registerClass(attributeClassInfo .user("attribute ?types?") diff --git a/src/main/java/ch/njol/skript/entity/SimpleEntityData.java b/src/main/java/ch/njol/skript/entity/SimpleEntityData.java index 24b8620a608..7b6c48c3001 100644 --- a/src/main/java/ch/njol/skript/entity/SimpleEntityData.java +++ b/src/main/java/ch/njol/skript/entity/SimpleEntityData.java @@ -18,138 +18,19 @@ */ package ch.njol.skript.entity; -import java.io.NotSerializableException; -import java.io.StreamCorruptedException; -import java.util.ArrayList; -import java.util.List; - -import ch.njol.util.Kleenean; -import org.bukkit.World; -import org.bukkit.entity.AbstractHorse; -import org.bukkit.entity.Allay; -import org.bukkit.entity.Animals; -import org.bukkit.entity.AreaEffectCloud; -import org.bukkit.entity.Armadillo; -import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.Arrow; -import org.bukkit.entity.Bat; -import org.bukkit.entity.Blaze; -import org.bukkit.entity.BlockDisplay; -import org.bukkit.entity.Bogged; -import org.bukkit.entity.Breeze; -import org.bukkit.entity.Camel; -import org.bukkit.entity.CaveSpider; -import org.bukkit.entity.ChestedHorse; -import org.bukkit.entity.Chicken; -import org.bukkit.entity.Cod; -import org.bukkit.entity.Cow; -import org.bukkit.entity.Creature; -import org.bukkit.entity.Damageable; -import org.bukkit.entity.Display; -import org.bukkit.entity.Dolphin; -import org.bukkit.entity.Donkey; -import org.bukkit.entity.DragonFireball; -import org.bukkit.entity.Drowned; -import org.bukkit.entity.Egg; -import org.bukkit.entity.ElderGuardian; -import org.bukkit.entity.EnderCrystal; -import org.bukkit.entity.EnderDragon; -import org.bukkit.entity.EnderPearl; -import org.bukkit.entity.EnderSignal; -import org.bukkit.entity.Endermite; -import org.bukkit.entity.Enemy; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Evoker; -import org.bukkit.entity.EvokerFangs; -import org.bukkit.entity.Fireball; -import org.bukkit.entity.Firework; -import org.bukkit.entity.Fish; -import org.bukkit.entity.FishHook; -import org.bukkit.entity.Ghast; -import org.bukkit.entity.Giant; -import org.bukkit.entity.GlowItemFrame; -import org.bukkit.entity.GlowSquid; -import org.bukkit.entity.Golem; -import org.bukkit.entity.Guardian; -import org.bukkit.entity.Hoglin; -import org.bukkit.entity.Horse; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Husk; -import org.bukkit.entity.Illager; -import org.bukkit.entity.Illusioner; -import org.bukkit.entity.Interaction; -import org.bukkit.entity.IronGolem; -import org.bukkit.entity.ItemDisplay; -import org.bukkit.entity.ItemFrame; -import org.bukkit.entity.LargeFireball; -import org.bukkit.entity.LeashHitch; -import org.bukkit.entity.LightningStrike; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Llama; -import org.bukkit.entity.LlamaSpit; -import org.bukkit.entity.MagmaCube; -import org.bukkit.entity.Marker; -import org.bukkit.entity.Mob; -import org.bukkit.entity.Monster; -import org.bukkit.entity.Mule; -import org.bukkit.entity.MushroomCow; -import org.bukkit.entity.Painting; -import org.bukkit.entity.Phantom; -import org.bukkit.entity.PigZombie; -import org.bukkit.entity.Piglin; -import org.bukkit.entity.PiglinBrute; -import org.bukkit.entity.Pillager; -import org.bukkit.entity.Player; -import org.bukkit.entity.PolarBear; -import org.bukkit.entity.Projectile; -import org.bukkit.entity.PufferFish; -import org.bukkit.entity.Raider; -import org.bukkit.entity.Ravager; -import org.bukkit.entity.Salmon; -import org.bukkit.entity.Shulker; -import org.bukkit.entity.ShulkerBullet; -import org.bukkit.entity.Silverfish; -import org.bukkit.entity.Skeleton; -import org.bukkit.entity.SkeletonHorse; -import org.bukkit.entity.Slime; -import org.bukkit.entity.SmallFireball; -import org.bukkit.entity.Sniffer; -import org.bukkit.entity.Snowball; -import org.bukkit.entity.Snowman; -import org.bukkit.entity.SpectralArrow; -import org.bukkit.entity.Spellcaster; -import org.bukkit.entity.Spider; -import org.bukkit.entity.Squid; -import org.bukkit.entity.Stray; -import org.bukkit.entity.Strider; -import org.bukkit.entity.TNTPrimed; -import org.bukkit.entity.Tadpole; -import org.bukkit.entity.TextDisplay; -import org.bukkit.entity.ThrownExpBottle; -import org.bukkit.entity.TippedArrow; -import org.bukkit.entity.Trident; -import org.bukkit.entity.TropicalFish; -import org.bukkit.entity.Turtle; -import org.bukkit.entity.Vex; -import org.bukkit.entity.Vindicator; -import org.bukkit.entity.WanderingTrader; -import org.bukkit.entity.Warden; -import org.bukkit.entity.WaterMob; -import org.bukkit.entity.WindCharge; -import org.bukkit.entity.Witch; -import org.bukkit.entity.Wither; -import org.bukkit.entity.WitherSkeleton; -import org.bukkit.entity.WitherSkull; -import org.bukkit.entity.Zoglin; -import org.bukkit.entity.Zombie; -import org.bukkit.entity.ZombieHorse; - -import org.jetbrains.annotations.Nullable; - import ch.njol.skript.Skript; import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptParser.ParseResult; +import ch.njol.util.Kleenean; import ch.njol.yggdrasil.Fields; +import org.bukkit.World; +import org.bukkit.entity.*; +import org.jetbrains.annotations.Nullable; + +import java.io.NotSerializableException; +import java.io.StreamCorruptedException; +import java.util.ArrayList; +import java.util.List; public class SimpleEntityData extends EntityData { @@ -333,6 +214,10 @@ private static void addSuperEntity(String codeName, Class enti addSimpleEntity("bogged", Bogged.class); } + if (Skript.isRunningMinecraft(1,21,3)) { + addSimpleEntity("creaking", Creaking.class); + } + // Register zombie after Husk and Drowned to make sure both work addSimpleEntity("zombie", Zombie.class); // Register squid after glow squid to make sure both work diff --git a/src/main/resources/lang/default.lang b/src/main/resources/lang/default.lang index 61cdfe3f909..4ae3049a85a 100644 --- a/src/main/resources/lang/default.lang +++ b/src/main/resources/lang/default.lang @@ -722,7 +722,7 @@ entities: pattern: spider(|1¦s) squid: name: squid¦s - pattern: squid(|1¦s) + pattern: squid(|1¦s) bottle of enchanting: name: bottle¦ of enchanting¦s of enchanting pattern: [thrown] bottle(|1¦s) o(f|') enchanting|[e]xp[erience] bottle(|1¦s) @@ -1072,7 +1072,7 @@ entities: pattern: drowned(|1¦s)|(4¦)drowned (kid(|1¦s)|child(|1¦ren)) dolphin: name: dolphin¦s - pattern: dolphin(|1¦s) + pattern: dolphin(|1¦s) phantom: name: phantom¦s pattern: phantom(|1¦s) @@ -1158,7 +1158,7 @@ entities: pattern: quiet goat(|1¦s)|(4¦)quiet goat (kid(|1¦s)|child(|1¦ren)) glow squid: name: glow squid¦s - pattern: glow squid(|1¦s) + pattern: glow squid(|1¦s) axolotl: name: axolotl¦s @an pattern: axolotl(|1¦s)|(4¦)axolotl (kid(|1¦s)|child(|1¦ren)) @@ -1267,8 +1267,12 @@ entities: name: armadillo¦s @an pattern: armadillo(|1¦s)|(4¦)armadillo (kid(|1¦s)|child(|1¦ren)) bogged: - name: bogged - pattern: bogged + name: bogged¦s + pattern: bogged[1:s] + # 1.21.3 Entities + creaking: + name: creaking¦s + pattern: creaking[1:s] # -- Heal Reasons -- heal reasons: