From 4c40a255a99118b4dc97f096d55b790a23eeb235 Mon Sep 17 00:00:00 2001 From: lijinhong11 <tygfhk@outlook.com> Date: Fri, 19 Jul 2024 09:42:35 +0800 Subject: [PATCH] 1.1 --- pom.xml | 2 +- .../me/mmmjjkx/bbox/moreflags/FlagNames.java | 1 + .../bbox/moreflags/MoreFlagsAddon.java | 9 +++--- .../bbox/moreflags/config/FlagSet.java | 18 +++++++---- .../moreflags/config/FlagSetSerializer.java | 13 ++++++-- .../bbox/moreflags/config/Settings.java | 15 ++++++---- .../moreflags/listener/EntityListener.java | 13 ++++++++ src/main/resources/addon.yml | 2 +- src/main/resources/config.yml | 30 ++++++++++++------- src/main/resources/locales/en-US.yml | 5 +++- src/main/resources/locales/zh-CN.yml | 5 +++- src/main/resources/locales/zh-HK.yml | 5 +++- 12 files changed, 85 insertions(+), 33 deletions(-) diff --git a/pom.xml b/pom.xml index d8d7a5d..b624ea6 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ <groupId>me.mmmjjkx.bbox</groupId> <artifactId>MoreFlags</artifactId> - <version>1.0.2</version> + <version>1.1</version> <packaging>jar</packaging> <name>MoreFlags</name> diff --git a/src/main/java/me/mmmjjkx/bbox/moreflags/FlagNames.java b/src/main/java/me/mmmjjkx/bbox/moreflags/FlagNames.java index 4a924a3..39874fa 100644 --- a/src/main/java/me/mmmjjkx/bbox/moreflags/FlagNames.java +++ b/src/main/java/me/mmmjjkx/bbox/moreflags/FlagNames.java @@ -4,4 +4,5 @@ public class FlagNames { public static final String CREEPER_EXPLOSION = "creeper_explosion"; public static final String WITHER_EXPLOSION = "wither_explosion"; public static final String PHANTOM_SPAWNING = "phantom_spawning"; + public static final String WITCH_POTION_THROWING = "witch_potion_throwing"; } diff --git a/src/main/java/me/mmmjjkx/bbox/moreflags/MoreFlagsAddon.java b/src/main/java/me/mmmjjkx/bbox/moreflags/MoreFlagsAddon.java index c7bb75b..1228474 100644 --- a/src/main/java/me/mmmjjkx/bbox/moreflags/MoreFlagsAddon.java +++ b/src/main/java/me/mmmjjkx/bbox/moreflags/MoreFlagsAddon.java @@ -17,11 +17,11 @@ public class MoreFlagsAddon extends Addon { @Override public void onEnable() { saveDefaultConfig(); + saveConfig(); settings = new Config<>(this, Settings.class).loadConfigObject(); - Settings save = new Settings(); - new Config<>(this, Settings.class).saveConfigObject(save); + new Config<>(this, Settings.class).saveConfigObject(settings); EntityListener entityListener = new EntityListener(settings); @@ -32,6 +32,7 @@ private void registerFlags(EntityListener entityListener) { registerFlagSet(FlagNames.CREEPER_EXPLOSION, Material.CREEPER_HEAD, settings.getCreeperExplosions(), entityListener); registerFlagSet(FlagNames.WITHER_EXPLOSION, Material.WITHER_SKELETON_SKULL, settings.getWitherExplosions(), entityListener); registerFlagSet(FlagNames.PHANTOM_SPAWNING, Material.PHANTOM_SPAWN_EGG, settings.getPhantomSpawning(), entityListener); + registerFlagSet(FlagNames.WITCH_POTION_THROWING, Material.SPLASH_POTION, settings.getWitchPotionThrowing(), entityListener); } @Override @@ -41,8 +42,7 @@ public void onReload() { settings = new Config<>(this, Settings.class).loadConfigObject(); - Settings save = new Settings(); - new Config<>(this, Settings.class).saveConfigObject(save); + new Config<>(this, Settings.class).saveConfigObject(settings); } @Override @@ -57,6 +57,7 @@ private void registerFlagSet(String id, Material icon, FlagSet flagSet, Listener .listener(listener) .type(Flag.Type.SETTING) .cooldown(flagSet.getChangeCooldown()) + .defaultSetting(flagSet.getDefaultValue()) .build(); registerFlag(flag); } diff --git a/src/main/java/me/mmmjjkx/bbox/moreflags/config/FlagSet.java b/src/main/java/me/mmmjjkx/bbox/moreflags/config/FlagSet.java index aeec4e1..25c3238 100644 --- a/src/main/java/me/mmmjjkx/bbox/moreflags/config/FlagSet.java +++ b/src/main/java/me/mmmjjkx/bbox/moreflags/config/FlagSet.java @@ -2,16 +2,22 @@ import lombok.Getter; import lombok.Setter; -import world.bentobox.bentobox.api.configuration.ConfigEntry; -@Getter @Setter public class FlagSet { public FlagSet() { + enabled = true; + changeCooldown = 0; + defaultValue = true; } - @ConfigEntry(path = "enabled") - private boolean enabled = true; - @ConfigEntry(path = "change-cooldown") - private int changeCooldown = 0; + @Getter + private boolean enabled; + private boolean defaultValue; + @Getter + private int changeCooldown; + + public boolean getDefaultValue() { + return defaultValue; + } } diff --git a/src/main/java/me/mmmjjkx/bbox/moreflags/config/FlagSetSerializer.java b/src/main/java/me/mmmjjkx/bbox/moreflags/config/FlagSetSerializer.java index 8f875c0..411fba5 100644 --- a/src/main/java/me/mmmjjkx/bbox/moreflags/config/FlagSetSerializer.java +++ b/src/main/java/me/mmmjjkx/bbox/moreflags/config/FlagSetSerializer.java @@ -14,8 +14,14 @@ public FlagSetSerializer() { public FlagSet deserialize(Object o) { FlagSet flagSet = new FlagSet(); if (o instanceof MemorySection ms) { - flagSet.setEnabled(ms.getBoolean("enabled")); - flagSet.setChangeCooldown(ms.getInt("change-cooldown")); + flagSet.setEnabled(ms.getBoolean("enabled", true)); + flagSet.setChangeCooldown(ms.getInt("change-cooldown", 0)); + flagSet.setDefaultValue(ms.getBoolean("default-value", true)); + } else if (o instanceof Map<?, ?> m) { + Map<String, Object> map = (Map<String, Object>) m; + flagSet.setEnabled((boolean) map.getOrDefault("enabled", true)); + flagSet.setChangeCooldown((int) map.getOrDefault("change-cooldown", 0)); + flagSet.setDefaultValue((boolean) map.getOrDefault("default-value", true)); } return flagSet; } @@ -25,7 +31,8 @@ public Map<String, Object> serialize(Object o) { if (o instanceof FlagSet fs) { boolean enabled = fs.isEnabled(); int changeCooldown = fs.getChangeCooldown(); - return Map.of("enabled", enabled, "change-cooldown", changeCooldown); + boolean defaultValue = fs.getDefaultValue(); + return Map.of("enabled", enabled, "change-cooldown", changeCooldown, "default-value", defaultValue); } else { return null; } diff --git a/src/main/java/me/mmmjjkx/bbox/moreflags/config/Settings.java b/src/main/java/me/mmmjjkx/bbox/moreflags/config/Settings.java index 06cb5fb..25865d3 100644 --- a/src/main/java/me/mmmjjkx/bbox/moreflags/config/Settings.java +++ b/src/main/java/me/mmmjjkx/bbox/moreflags/config/Settings.java @@ -5,22 +5,27 @@ import world.bentobox.bentobox.api.configuration.*; import world.bentobox.bentobox.database.objects.adapters.Adapter; -@StoreAt(filename = "config.yml", path = "flags") +@StoreAt(filename = "config.yml", path = "addons/MoreFlags") @Getter @Setter public class Settings implements ConfigObject { @ConfigEntry(path = "creeper_explosion") @ConfigComment("It can control creeper explosions.") @Adapter(FlagSetSerializer.class) - private FlagSet creeperExplosions = new FlagSet(); + private FlagSet creeperExplosions; - @ConfigEntry(path = ".wither_explosion") + @ConfigEntry(path = "wither_explosion") @ConfigComment("It can control wither explosions.") @Adapter(FlagSetSerializer.class) - private FlagSet witherExplosions = new FlagSet(); + private FlagSet witherExplosions; @ConfigEntry(path = "phantom_spawning") @ConfigComment("It can control phantom spawning.") @Adapter(FlagSetSerializer.class) - private FlagSet phantomSpawning = new FlagSet(); + private FlagSet phantomSpawning; + + @ConfigEntry(path = "witch_potion_throwing", since = "1.1") + @ConfigComment("It can control witch potion throwing.") + @Adapter(FlagSetSerializer.class) + private FlagSet witchPotionThrowing; } \ No newline at end of file diff --git a/src/main/java/me/mmmjjkx/bbox/moreflags/listener/EntityListener.java b/src/main/java/me/mmmjjkx/bbox/moreflags/listener/EntityListener.java index 79c95b3..623bf76 100644 --- a/src/main/java/me/mmmjjkx/bbox/moreflags/listener/EntityListener.java +++ b/src/main/java/me/mmmjjkx/bbox/moreflags/listener/EntityListener.java @@ -5,10 +5,13 @@ import me.mmmjjkx.bbox.moreflags.config.Settings; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; +import org.bukkit.entity.Witch; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntitySpawnEvent; +import org.bukkit.event.entity.PotionSplashEvent; +import org.bukkit.projectiles.ProjectileSource; import world.bentobox.bentobox.BentoBox; import world.bentobox.bentobox.api.flags.Flag; import world.bentobox.bentobox.database.objects.Island; @@ -54,6 +57,16 @@ public void spawn(EntitySpawnEvent e) { } } + @EventHandler + public void potionDrop(PotionSplashEvent e) { + ProjectileSource source = e.getPotion().getShooter(); + if (source instanceof Witch witch) { + if (settings.getWitchPotionThrowing().isEnabled() && !inIsland(witch, FlagNames.WITCH_POTION_THROWING, true)) { + e.setCancelled(true); + } + } + } + private boolean inIsland(Entity en, String id, boolean destExpression) { IslandsManager im = BentoBox.getInstance().getIslands(); Optional<Island> island = im.getIslandAt(en.getLocation()); diff --git a/src/main/resources/addon.yml b/src/main/resources/addon.yml index 7bb469e..e71d28b 100644 --- a/src/main/resources/addon.yml +++ b/src/main/resources/addon.yml @@ -1,6 +1,6 @@ name: MoreFlags main: me.mmmjjkx.bbox.moreflags.MoreFlagsAddon -version: 1.0.0 +version: "${project.version}" api-version: 1.16.4 authors: mmmjjkx description: Adds more flags to the game mode addon. \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 6b1bd6e..c15b2b2 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,10 +1,20 @@ -flags: - creeper_explosion: - enabled: true - change-cooldown: 0 - wither_explosion: - enabled: true - change-cooldown: 0 - phantom_spawning: - enabled: true - change-cooldown: 0 \ No newline at end of file +#It can control creeper explosions. +creeper_explosion: + enabled: true + change-cooldown: 0 + default-value: true +#It can control wither explosions. +wither_explosion: + enabled: true + change-cooldown: 0 + default-value: true +#It can control phantom spawning. +phantom_spawning: + enabled: true + change-cooldown: 0 + default-value: true +#It can control witch potion throwing. +witch_potion_throwing: + enabled: true + change-cooldown: 0 + default-value: true \ No newline at end of file diff --git a/src/main/resources/locales/en-US.yml b/src/main/resources/locales/en-US.yml index e47b959..3aa05ac 100644 --- a/src/main/resources/locales/en-US.yml +++ b/src/main/resources/locales/en-US.yml @@ -8,4 +8,7 @@ protection: description: "&aAllow &7/ &c Prevent &awither explosions destroying blocks" phantom_spawning: name: Phantom spawning - description: "&aAllow &7/ &c Prevent &aphantoms spawning" \ No newline at end of file + description: "&aAllow &7/ &c Prevent &aphantoms spawning" + witch_potion_throwing: + name: Witch potion throwing + description: "&aAllow &7/ &c Prevent &awitches throwing potions" \ No newline at end of file diff --git a/src/main/resources/locales/zh-CN.yml b/src/main/resources/locales/zh-CN.yml index b159a20..13431ef 100644 --- a/src/main/resources/locales/zh-CN.yml +++ b/src/main/resources/locales/zh-CN.yml @@ -8,4 +8,7 @@ protection: description: "&a允许&7/&c禁止 &a凋零爆炸破坏方块" phantom_spawning: name: 幻翼生成 - description: "&a允许&7/&c禁止 &a幻翼生成" \ No newline at end of file + description: "&a允许&7/&c禁止 &a幻翼生成" + witch_potion_throwing: + name: 女巫药水投掷 + description: "&a允许&7/&c禁止 &a女巫药水投掷" \ No newline at end of file diff --git a/src/main/resources/locales/zh-HK.yml b/src/main/resources/locales/zh-HK.yml index b159a20..13431ef 100644 --- a/src/main/resources/locales/zh-HK.yml +++ b/src/main/resources/locales/zh-HK.yml @@ -8,4 +8,7 @@ protection: description: "&a允许&7/&c禁止 &a凋零爆炸破坏方块" phantom_spawning: name: 幻翼生成 - description: "&a允许&7/&c禁止 &a幻翼生成" \ No newline at end of file + description: "&a允许&7/&c禁止 &a幻翼生成" + witch_potion_throwing: + name: 女巫药水投掷 + description: "&a允许&7/&c禁止 &a女巫药水投掷" \ No newline at end of file