restructure plugin and config

This commit is contained in:
xGinko 2023-10-03 01:39:37 +02:00
parent b30d4a259e
commit bb6cdf1b43
24 changed files with 87 additions and 93 deletions

View File

@ -60,13 +60,13 @@ public class Config {
config.addDefault("optimization-methods.nametag-optimization.enable", true);
createTitledSection("Villager Chunk Limit", "villager-chunk-limit");
createTitledSection("Gameplay", "gameplay");
config.addDefault("gameplay.restock-optimized-trades", null);
config.addDefault("gameplay.level-optimized-profession", null);
config.addDefault("gameplay.rename-optimized-villagers.enable", true);
config.addDefault("gameplay.villagers-spawn-as-adults.enable", false);
config.addDefault("gameplay.prevent-trading-with-unoptimized.enable", false);
config.addDefault("gameplay.prevent-damage.enable", true);
config.addDefault("gameplay.prevent-targeting.enable", true);
config.addDefault("gameplay.villager-leveling.enable", true);
config.addDefault("gameplay.trade-restocking.enable", true);
config.addDefault("gameplay.prevent-entities-from-targeting-optimized.enable", true);
config.addDefault("gameplay.prevent-damage-to-optimized.enable", true);
}
public void createTitledSection(@NotNull String title, @NotNull String path) {

View File

@ -1,12 +1,10 @@
package me.xginko.villageroptimizer.modules;
import me.xginko.villageroptimizer.VillagerOptimizer;
import me.xginko.villageroptimizer.modules.extras.*;
import me.xginko.villageroptimizer.modules.mechanics.LevelVillagers;
import me.xginko.villageroptimizer.modules.mechanics.RestockTrades;
import me.xginko.villageroptimizer.modules.optimizations.OptimizeByBlock;
import me.xginko.villageroptimizer.modules.optimizations.OptimizeByNametag;
import me.xginko.villageroptimizer.modules.optimizations.OptimizeByWorkstation;
import me.xginko.villageroptimizer.modules.gameplay.*;
import me.xginko.villageroptimizer.modules.optimization.OptimizeByBlock;
import me.xginko.villageroptimizer.modules.optimization.OptimizeByNametag;
import me.xginko.villageroptimizer.modules.optimization.OptimizeByWorkstation;
import org.bukkit.event.HandlerList;
import java.util.HashSet;
@ -28,14 +26,13 @@ public interface VillagerOptimizerModule {
modules.add(new OptimizeByBlock());
modules.add(new OptimizeByWorkstation());
modules.add(new RestockTrades());
modules.add(new LevelVillagers());
modules.add(new RestockOptimizedTrades());
modules.add(new LevelOptimizedVillagers());
modules.add(new RenameOptimizedVillagers());
modules.add(new MakeVillagersSpawnAdult());
modules.add(new PreventUnoptimizedTrading());
modules.add(new PreventVillagerDamage());
modules.add(new PreventVillagerTargetting());
modules.add(new RenameOptimizedVillagers());
modules.add(new PreventVillagerDamage());
modules.add(new VillagerChunkLimit());

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.mechanics;
package me.xginko.villageroptimizer.modules.gameplay;
import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer;
@ -17,25 +17,25 @@ import org.bukkit.event.inventory.InventoryType;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
public class LevelVillagers implements VillagerOptimizerModule, Listener {
public class LevelOptimizedVillagers implements VillagerOptimizerModule, Listener {
private final VillagerOptimizer plugin;
private final VillagerCache villagerCache;
private final boolean notify_player;
private final long cooldown;
public LevelVillagers() {
public LevelOptimizedVillagers() {
shouldEnable();
this.plugin = VillagerOptimizer.getInstance();
this.villagerCache = VillagerOptimizer.getCache();
Config config = VillagerOptimizer.getConfiguration();
config.addComment("gameplay.villager-leveling.enable", """
config.addComment("gameplay.level-optimized-profession", """
This is needed to allow optimized villagers to level up.\s
Temporarily enables the villagers AI to allow it to level up and then disables it again.""");
this.cooldown = config.getInt("gameplay.villager-leveling.level-check-cooldown-seconds", 5, """
this.cooldown = config.getInt("gameplay.level-optimized-profession.level-check-cooldown-seconds", 5, """
Cooldown in seconds until the level of a villager will be checked and updated again.\s
Recommended to leave as is.""") * 1000L;
this.notify_player = config.getBoolean("gameplay.villager-leveling.notify-player", true,
this.notify_player = config.getBoolean("gameplay.level-optimized-profession.notify-player", true,
"Tell players to wait when a villager is leveling up.");
}
@ -47,7 +47,7 @@ public class LevelVillagers implements VillagerOptimizerModule, Listener {
@Override
public boolean shouldEnable() {
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.villager-leveling.enable", true);
return true;
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.extras;
package me.xginko.villageroptimizer.modules.gameplay;
import me.xginko.villageroptimizer.VillagerOptimizer;
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.extras;
package me.xginko.villageroptimizer.modules.gameplay;
import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer;

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.extras;
package me.xginko.villageroptimizer.modules.gameplay;
import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer;
@ -23,15 +23,15 @@ public class PreventVillagerDamage implements VillagerOptimizerModule, Listener
shouldEnable();
this.villagerCache = VillagerOptimizer.getCache();
Config config = VillagerOptimizer.getConfiguration();
config.addComment("gameplay.prevent-damage.enable",
config.addComment("gameplay.prevent-damage-to-optimized.enable",
"Configure what kind of damage you want to cancel for optimized villagers here.");
this.block = config.getBoolean("gameplay.prevent-damage.damagers.block", false,
this.block = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.block", false,
"Prevents damage from blocks like lava, tnt, respawn anchors, etc.");
this.player = config.getBoolean("gameplay.prevent-damage.damagers.player", false,
this.player = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.player", false,
"Prevents damage from getting hit by players.");
this.mob = config.getBoolean("gameplay.prevent-damage.damagers.mob", true,
this.mob = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.mob", true,
"Prevents damage from hostile mobs.");
this.other = config.getBoolean("gameplay.prevent-damage.damagers.other", true,
this.other = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.other", true,
"Prevents damage from all other entities.");
}
@ -43,7 +43,7 @@ public class PreventVillagerDamage implements VillagerOptimizerModule, Listener
@Override
public boolean shouldEnable() {
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.prevent-damage.enable", true);
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.prevent-damage-to-optimized.enable", true);
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.extras;
package me.xginko.villageroptimizer.modules.gameplay;
import com.destroystokyo.paper.event.entity.EntityPathfindEvent;
import me.xginko.villageroptimizer.VillagerCache;
@ -30,7 +30,7 @@ public class PreventVillagerTargetting implements VillagerOptimizerModule, Liste
@Override
public boolean shouldEnable() {
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.prevent-targeting.enable", true,
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.prevent-entities-from-targeting-optimized.enable", true,
"Prevents hostile entities from targeting optimized villagers.");
}

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.extras;
package me.xginko.villageroptimizer.modules.gameplay;
import me.xginko.villageroptimizer.VillagerOptimizer;
import me.xginko.villageroptimizer.WrappedVillager;

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.mechanics;
package me.xginko.villageroptimizer.modules.gameplay;
import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer;
@ -16,24 +16,24 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent;
public class RestockTrades implements VillagerOptimizerModule, Listener {
public class RestockOptimizedTrades implements VillagerOptimizerModule, Listener {
private final VillagerCache villagerCache;
private final long restock_delay_millis;
private final boolean log_enabled, notify_player;
public RestockTrades() {
public RestockOptimizedTrades() {
shouldEnable();
this.villagerCache = VillagerOptimizer.getCache();
Config config = VillagerOptimizer.getConfiguration();
config.addComment("gameplay.trade-restocking.enable", """
config.addComment("gameplay.restock-optimized-trades", """
This is for automatic restocking of trades for optimized villagers. Optimized Villagers\s
Don't have enough AI to do trade restocks themselves, so this needs to always be enabled.""");
this.restock_delay_millis = config.getInt("gameplay.trade-restocking.delay-in-ticks", 1000,
don't have enough AI to restock their trades naturally, so this is here as a workaround.""");
this.restock_delay_millis = config.getInt("gameplay.restock-optimized-trades.delay-in-ticks", 1000,
"1 second = 20 ticks. There are 24.000 ticks in a single minecraft day.") * 50L;
this.notify_player = config.getBoolean("gameplay.trade-restocking.notify-player", true,
this.notify_player = config.getBoolean("gameplay.restock-optimized-trades.notify-player", true,
"Sends the player a message when the trades were restocked on a clicked villager.");
this.log_enabled = config.getBoolean("gameplay.trade-restocking.log", false);
this.log_enabled = config.getBoolean("gameplay.restock-optimized-trades.log", false);
}
@Override
@ -44,7 +44,7 @@ public class RestockTrades implements VillagerOptimizerModule, Listener {
@Override
public boolean shouldEnable() {
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.trade-restocking.enable", true);
return true;
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.optimizations;
package me.xginko.villageroptimizer.modules.optimization;
import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer;

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.optimizations;
package me.xginko.villageroptimizer.modules.optimization;
import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer;

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.optimizations;
package me.xginko.villageroptimizer.modules.optimization;
import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer;

View File

@ -60,13 +60,13 @@ public class Config {
config.addDefault("optimization-methods.nametag-optimization.enable", true);
createTitledSection("Villager Chunk Limit", "villager-chunk-limit");
createTitledSection("Gameplay", "gameplay");
config.addDefault("gameplay.restock-optimized-trades", null);
config.addDefault("gameplay.level-optimized-profession", null);
config.addDefault("gameplay.rename-optimized-villagers.enable", true);
config.addDefault("gameplay.villagers-spawn-as-adults.enable", false);
config.addDefault("gameplay.prevent-trading-with-unoptimized.enable", false);
config.addDefault("gameplay.prevent-damage.enable", true);
config.addDefault("gameplay.prevent-targeting.enable", true);
config.addDefault("gameplay.villager-leveling.enable", true);
config.addDefault("gameplay.trade-restocking.enable", true);
config.addDefault("gameplay.prevent-entities-from-targeting-optimized.enable", true);
config.addDefault("gameplay.prevent-damage-to-optimized.enable", true);
}
public void createTitledSection(@NotNull String title, @NotNull String path) {

View File

@ -1,11 +1,9 @@
package me.xginko.villageroptimizer.modules;
import me.xginko.villageroptimizer.modules.extras.*;
import me.xginko.villageroptimizer.modules.mechanics.LevelVillagers;
import me.xginko.villageroptimizer.modules.mechanics.RestockTrades;
import me.xginko.villageroptimizer.modules.optimizations.OptimizeByBlock;
import me.xginko.villageroptimizer.modules.optimizations.OptimizeByNametag;
import me.xginko.villageroptimizer.modules.optimizations.OptimizeByWorkstation;
import me.xginko.villageroptimizer.modules.gameplay.*;
import me.xginko.villageroptimizer.modules.optimization.OptimizeByBlock;
import me.xginko.villageroptimizer.modules.optimization.OptimizeByNametag;
import me.xginko.villageroptimizer.modules.optimization.OptimizeByWorkstation;
import java.util.HashSet;
@ -25,14 +23,13 @@ public interface VillagerOptimizerModule {
modules.add(new OptimizeByBlock());
modules.add(new OptimizeByWorkstation());
modules.add(new RestockTrades());
modules.add(new LevelVillagers());
modules.add(new RestockOptimizedTrades());
modules.add(new LevelOptimizedVillagers());
modules.add(new RenameOptimizedVillagers());
modules.add(new MakeVillagersSpawnAdult());
modules.add(new PreventUnoptimizedTrading());
modules.add(new PreventVillagerDamage());
modules.add(new PreventVillagerTargetting());
modules.add(new RenameOptimizedVillagers());
modules.add(new PreventVillagerDamage());
modules.add(new VillagerChunkLimit());

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.mechanics;
package me.xginko.villageroptimizer.modules.gameplay;
import me.xginko.villageroptimizer.VillagerOptimizer;
import me.xginko.villageroptimizer.VillagerCache;
@ -18,25 +18,25 @@ import org.bukkit.event.inventory.InventoryType;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
public class LevelVillagers implements VillagerOptimizerModule, Listener {
public class LevelOptimizedVillagers implements VillagerOptimizerModule, Listener {
private final VillagerOptimizer plugin;
private final VillagerCache villagerCache;
private final boolean notify_player;
private final long cooldown;
public LevelVillagers() {
public LevelOptimizedVillagers() {
shouldEnable();
this.plugin = VillagerOptimizer.getInstance();
this.villagerCache = VillagerOptimizer.getCache();
Config config = VillagerOptimizer.getConfiguration();
config.addComment("gameplay.villager-leveling.enable", """
config.addComment("gameplay.level-optimized-profession", """
This is needed to allow optimized villagers to level up.\s
Temporarily enables the villagers AI to allow it to level up and then disables it again.""");
this.cooldown = config.getInt("gameplay.villager-leveling.level-check-cooldown-seconds", 5, """
this.cooldown = config.getInt("gameplay.level-optimized-profession.level-check-cooldown-seconds", 5, """
Cooldown in seconds until the level of a villager will be checked and updated again.\s
Recommended to leave as is.""") * 1000L;
this.notify_player = config.getBoolean("gameplay.villager-leveling.notify-player", true,
this.notify_player = config.getBoolean("gameplay.level-optimized-profession.notify-player", true,
"Tell players to wait when a villager is leveling up.");
}
@ -53,7 +53,7 @@ public class LevelVillagers implements VillagerOptimizerModule, Listener {
@Override
public boolean shouldEnable() {
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.villager-leveling.enable", true);
return true;
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.extras;
package me.xginko.villageroptimizer.modules.gameplay;
import me.xginko.villageroptimizer.VillagerOptimizer;
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.extras;
package me.xginko.villageroptimizer.modules.gameplay;
import me.xginko.villageroptimizer.VillagerOptimizer;
import me.xginko.villageroptimizer.VillagerCache;

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.extras;
package me.xginko.villageroptimizer.modules.gameplay;
import io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent;
import me.xginko.villageroptimizer.VillagerOptimizer;
@ -25,17 +25,17 @@ public class PreventVillagerDamage implements VillagerOptimizerModule, Listener
shouldEnable();
this.villagerCache = VillagerOptimizer.getCache();
Config config = VillagerOptimizer.getConfiguration();
config.addComment("gameplay.prevent-damage.enable",
config.addComment("gameplay.prevent-damage-to-optimized.enable",
"Configure what kind of damage you want to cancel for optimized villagers here.");
this.push = config.getBoolean("gameplay.prevent-damage.prevent-push-from-attack", true,
this.push = config.getBoolean("gameplay.prevent-damage-to-optimized.prevent-push-from-attack", true,
"Prevents optimized villagers from getting pushed by an attacking entity");
this.block = config.getBoolean("gameplay.prevent-damage.damagers.block", false,
this.block = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.block", false,
"Prevents damage from blocks like lava, tnt, respawn anchors, etc.");
this.player = config.getBoolean("gameplay.prevent-damage.damagers.player", false,
this.player = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.player", false,
"Prevents damage from getting hit by players.");
this.mob = config.getBoolean("gameplay.prevent-damage.damagers.mob", true,
this.mob = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.mob", true,
"Prevents damage from hostile mobs.");
this.other = config.getBoolean("gameplay.prevent-damage.damagers.other", true,
this.other = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.other", true,
"Prevents damage from all other entities.");
}
@ -52,7 +52,7 @@ public class PreventVillagerDamage implements VillagerOptimizerModule, Listener
@Override
public boolean shouldEnable() {
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.prevent-damage.enable", true);
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.prevent-damage-to-optimized.enable", true);
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.extras;
package me.xginko.villageroptimizer.modules.gameplay;
import com.destroystokyo.paper.event.entity.EntityPathfindEvent;
import me.xginko.villageroptimizer.VillagerOptimizer;
@ -36,7 +36,7 @@ public class PreventVillagerTargetting implements VillagerOptimizerModule, Liste
@Override
public boolean shouldEnable() {
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.prevent-targeting.enable", true,
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.prevent-entities-from-targeting-optimized.enable", true,
"Prevents hostile entities from targeting optimized villagers.");
}

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.extras;
package me.xginko.villageroptimizer.modules.gameplay;
import me.xginko.villageroptimizer.VillagerOptimizer;
import me.xginko.villageroptimizer.WrappedVillager;

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.mechanics;
package me.xginko.villageroptimizer.modules.gameplay;
import me.xginko.villageroptimizer.VillagerOptimizer;
import me.xginko.villageroptimizer.VillagerCache;
@ -17,24 +17,24 @@ import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent;
public class RestockTrades implements VillagerOptimizerModule, Listener {
public class RestockOptimizedTrades implements VillagerOptimizerModule, Listener {
private final VillagerCache villagerCache;
private final long restock_delay_millis;
private final boolean log_enabled, notify_player;
public RestockTrades() {
public RestockOptimizedTrades() {
shouldEnable();
this.villagerCache = VillagerOptimizer.getCache();
Config config = VillagerOptimizer.getConfiguration();
config.addComment("gameplay.trade-restocking.enable", """
config.addComment("gameplay.restock-optimized-trades", """
This is for automatic restocking of trades for optimized villagers. Optimized Villagers\s
Don't have enough AI to do trade restocks themselves, so this needs to always be enabled.""");
this.restock_delay_millis = config.getInt("gameplay.trade-restocking.delay-in-ticks", 1000,
don't have enough AI to restock their trades naturally, so this is here as a workaround.""");
this.restock_delay_millis = config.getInt("gameplay.restock-optimized-trades.delay-in-ticks", 1000,
"1 second = 20 ticks. There are 24.000 ticks in a single minecraft day.") * 50L;
this.notify_player = config.getBoolean("gameplay.trade-restocking.notify-player", true,
this.notify_player = config.getBoolean("gameplay.restock-optimized-trades.notify-player", true,
"Sends the player a message when the trades were restocked on a clicked villager.");
this.log_enabled = config.getBoolean("gameplay.trade-restocking.log", false);
this.log_enabled = config.getBoolean("gameplay.restock-optimized-trades.log", false);
}
@Override
@ -50,7 +50,7 @@ public class RestockTrades implements VillagerOptimizerModule, Listener {
@Override
public boolean shouldEnable() {
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.trade-restocking.enable", true);
return true;
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.optimizations;
package me.xginko.villageroptimizer.modules.optimization;
import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer;

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.optimizations;
package me.xginko.villageroptimizer.modules.optimization;
import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer;

View File

@ -1,4 +1,4 @@
package me.xginko.villageroptimizer.modules.optimizations;
package me.xginko.villageroptimizer.modules.optimization;
import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer;