commit a1f3a5985d941524e0d5df0eddef5aeea1891081 Author: YouHaveTrouble Date: Thu May 12 18:47:53 2022 +0200 Downhill from here diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4788b4b --- /dev/null +++ b/.gitignore @@ -0,0 +1,113 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +target/ + +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next + +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.flattened-pom.xml + +# Common working directory +run/ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..5e86301 --- /dev/null +++ b/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + + me.youhavetrouble + EnTiddy + 1.0 + jar + + EnTiddy + + A very serious library concerning entities + + 1.8 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${java.version} + ${java.version} + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + false + + + + + + + + src/main/resources + true + + + + + + + papermc-repo + https://papermc.io/repo/repository/maven-public/ + + + + + + io.papermc.paper + paper-api + 1.18.1-R0.1-SNAPSHOT + provided + + + diff --git a/src/main/java/me/youhavetrouble/entiddy/Entiddy.java b/src/main/java/me/youhavetrouble/entiddy/Entiddy.java new file mode 100644 index 0000000..96096cf --- /dev/null +++ b/src/main/java/me/youhavetrouble/entiddy/Entiddy.java @@ -0,0 +1,51 @@ +package me.youhavetrouble.entiddy; + + +import me.youhavetrouble.entiddy.SpecialEntities.JebSheep; +import me.youhavetrouble.entiddy.SpecialEntities.Johnny; +import me.youhavetrouble.entiddy.SpecialEntities.KillerBunny; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +public enum Entiddy { + + KILLER_BUNNY(EntityType.RABBIT, new KillerBunny()), + JEB_SHEEP(EntityType.SHEEP, new JebSheep()), + JOHNNY(EntityType.VINDICATOR, new Johnny()); + + private final EntityType entityType; + private final EntiddyInterface entiddy; + + Entiddy(EntityType entityType, EntiddyInterface entiddy) { + this.entityType = entityType; + this.entiddy = entiddy; + } + + public EntityType getEntityType() { + return entityType; + } + + public EntiddyInterface entiddy() { + return entiddy; + } + + /** + * Turn entity upside down. Doesn't work on players. + * WARNING This overwrites entities name tag! + */ + public static void upsideDown(@NotNull LivingEntity entity) { + if (entity instanceof Player) return; + entity.setCustomName("Grumm"); + } + + public static boolean isSpecialEntity(@NotNull LivingEntity entity) { + if (entity instanceof Player) return false; + for (Entiddy enTiddy: Entiddy.values()) { + if (enTiddy.entiddy().isInstance(entity)) return true; + } + return false; + } + +} diff --git a/src/main/java/me/youhavetrouble/entiddy/EntiddyInterface.java b/src/main/java/me/youhavetrouble/entiddy/EntiddyInterface.java new file mode 100644 index 0000000..5f20ec1 --- /dev/null +++ b/src/main/java/me/youhavetrouble/entiddy/EntiddyInterface.java @@ -0,0 +1,20 @@ +package me.youhavetrouble.entiddy; + +import org.bukkit.Location; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.event.entity.CreatureSpawnEvent; +import org.jetbrains.annotations.NotNull; + +public interface EntiddyInterface { + + /** + * @param location Location to spawn the entity at + * @param spawnReason SpawnReason to set + * @return Spawned entity + */ + Entity spawn(@NotNull Location location, @NotNull CreatureSpawnEvent.SpawnReason spawnReason); + + boolean isInstance(LivingEntity entity); + +} diff --git a/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/JebSheep.java b/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/JebSheep.java new file mode 100644 index 0000000..708529a --- /dev/null +++ b/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/JebSheep.java @@ -0,0 +1,27 @@ +package me.youhavetrouble.entiddy.SpecialEntities; + +import me.youhavetrouble.entiddy.EntiddyInterface; +import org.bukkit.Location; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Rabbit; +import org.bukkit.event.entity.CreatureSpawnEvent; +import org.jetbrains.annotations.NotNull; + +public class JebSheep implements EntiddyInterface { + + @Override + public Entity spawn(@NotNull Location location, @NotNull CreatureSpawnEvent.SpawnReason spawnReason) { + if (location.getWorld() == null) { + throw new NullPointerException("World cannot be null"); + } + return location.getWorld().spawnEntity(location, EntityType.SHEEP, spawnReason, (entity) -> entity.setCustomName("jeb_")); + } + + @Override + public boolean isInstance(LivingEntity entity) { + if (!(entity instanceof Rabbit)) return false; + return entity.getCustomName() != null && entity.getCustomName().equals("jeb_"); + } +} diff --git a/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/Johnny.java b/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/Johnny.java new file mode 100644 index 0000000..0d874ef --- /dev/null +++ b/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/Johnny.java @@ -0,0 +1,29 @@ +package me.youhavetrouble.entiddy.SpecialEntities; + +import me.youhavetrouble.entiddy.EntiddyInterface; +import org.bukkit.Location; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Vindicator; +import org.bukkit.event.entity.CreatureSpawnEvent; +import org.jetbrains.annotations.NotNull; + +public class Johnny implements EntiddyInterface { + @Override + public Entity spawn(@NotNull Location location, @NotNull CreatureSpawnEvent.SpawnReason spawnReason) { + if (location.getWorld() == null) { + throw new NullPointerException("World cannot be null"); + } + return location.getWorld().spawnEntity(location, EntityType.VINDICATOR, spawnReason, (entity) -> { + Vindicator johnny = (Vindicator) entity; + johnny.setJohnny(true); + }); + } + + @Override + public boolean isInstance(LivingEntity entity) { + if (!(entity instanceof Vindicator)) return false; + return ((Vindicator) entity).isJohnny(); + } +} diff --git a/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/KillerBunny.java b/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/KillerBunny.java new file mode 100644 index 0000000..8389a4a --- /dev/null +++ b/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/KillerBunny.java @@ -0,0 +1,30 @@ +package me.youhavetrouble.entiddy.SpecialEntities; + +import me.youhavetrouble.entiddy.EntiddyInterface; +import org.bukkit.Location; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Rabbit; +import org.bukkit.event.entity.CreatureSpawnEvent; +import org.jetbrains.annotations.NotNull; + +public class KillerBunny implements EntiddyInterface { + + @Override + public Entity spawn(@NotNull Location location, @NotNull CreatureSpawnEvent.SpawnReason spawnReason) { + if (location.getWorld() == null) { + throw new NullPointerException("World cannot be null"); + } + return location.getWorld().spawnEntity(location, EntityType.RABBIT, spawnReason, (entity) -> { + Rabbit rabbit = (Rabbit) entity; + rabbit.setRabbitType(Rabbit.Type.THE_KILLER_BUNNY); + }); + } + + @Override + public boolean isInstance(LivingEntity entity) { + if (!(entity instanceof Rabbit)) return false; + return ((Rabbit) entity).getRabbitType().equals(Rabbit.Type.THE_KILLER_BUNNY); + } +} diff --git a/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/Toast.java b/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/Toast.java new file mode 100644 index 0000000..d327197 --- /dev/null +++ b/src/main/java/me/youhavetrouble/entiddy/SpecialEntities/Toast.java @@ -0,0 +1,27 @@ +package me.youhavetrouble.entiddy.SpecialEntities; + +import me.youhavetrouble.entiddy.EntiddyInterface; +import org.bukkit.Location; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Rabbit; +import org.bukkit.event.entity.CreatureSpawnEvent; +import org.jetbrains.annotations.NotNull; + +public class Toast implements EntiddyInterface { + + @Override + public Entity spawn(@NotNull Location location, CreatureSpawnEvent.@NotNull SpawnReason spawnReason) { + if (location.getWorld() == null) { + throw new NullPointerException("World cannot be null"); + } + return location.getWorld().spawnEntity(location, EntityType.RABBIT, spawnReason, (entity) -> entity.setCustomName("Toast")); + } + + @Override + public boolean isInstance(LivingEntity entity) { + if (!(entity instanceof Rabbit)) return false; + return entity.getCustomName() != null && entity.getCustomName().equals("Toast"); + } +}