improve damage and target preventions
This commit is contained in:
parent
cb8c694f6b
commit
da78a94a8d
@ -23,7 +23,7 @@ public class MakeVillagersSpawnAdult implements VillagerOptimizerModule, Listene
|
|||||||
public boolean shouldEnable() {
|
public boolean shouldEnable() {
|
||||||
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.villagers-spawn-as-adults.enable", false, """
|
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.villagers-spawn-as-adults.enable", false, """
|
||||||
Spawned villagers will immediately be adults.\s
|
Spawned villagers will immediately be adults.\s
|
||||||
This is to save some more performance as players don't have to keep unoptimized\s
|
This is to save some more resources as players don't have to keep unoptimized\s
|
||||||
villagers loaded because they have to wait for them to turn into adults before they can\s
|
villagers loaded because they have to wait for them to turn into adults before they can\s
|
||||||
optimize them.""");
|
optimize them.""");
|
||||||
}
|
}
|
||||||
|
@ -4,20 +4,21 @@ import me.xginko.villageroptimizer.VillagerCache;
|
|||||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||||
import me.xginko.villageroptimizer.config.Config;
|
import me.xginko.villageroptimizer.config.Config;
|
||||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||||
import org.bukkit.entity.Entity;
|
import me.xginko.villageroptimizer.utils.LogUtil;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Mob;
|
|
||||||
import org.bukkit.entity.Villager;
|
import org.bukkit.entity.Villager;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDamageByBlockEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
public class PreventOptimizedDamage implements VillagerOptimizerModule, Listener {
|
public class PreventOptimizedDamage implements VillagerOptimizerModule, Listener {
|
||||||
|
|
||||||
private final VillagerCache villagerCache;
|
private final VillagerCache villagerCache;
|
||||||
private final boolean block, player, mob, other;
|
private final HashSet<EntityDamageEvent.DamageCause> damage_causes_to_cancel = new HashSet<>();
|
||||||
|
|
||||||
public PreventOptimizedDamage() {
|
public PreventOptimizedDamage() {
|
||||||
shouldEnable();
|
shouldEnable();
|
||||||
@ -25,14 +26,18 @@ public class PreventOptimizedDamage implements VillagerOptimizerModule, Listener
|
|||||||
Config config = VillagerOptimizer.getConfiguration();
|
Config config = VillagerOptimizer.getConfiguration();
|
||||||
config.addComment("gameplay.prevent-damage-to-optimized.enable",
|
config.addComment("gameplay.prevent-damage-to-optimized.enable",
|
||||||
"Configure what kind of damage you want to cancel for optimized villagers here.");
|
"Configure what kind of damage you want to cancel for optimized villagers here.");
|
||||||
this.block = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.block", false,
|
config.getList("gameplay.prevent-damage-to-optimized.damage-causes-to-cancel",
|
||||||
"Prevents damage from blocks like lava, tnt, respawn anchors, etc.");
|
Arrays.stream(EntityDamageEvent.DamageCause.values()).map(Enum::name).toList(), """
|
||||||
this.player = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.player", false,
|
These are all current entries in the game. Remove what you do not want blocked. Remember sometimes players need to dispose of villagers.
|
||||||
"Prevents damage from getting hit by players.");
|
Refer to https://jd.papermc.io/paper/1.20/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html for correct names and a description.\s"""
|
||||||
this.mob = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.mob", true,
|
).forEach(configuredDamageCause -> {
|
||||||
"Prevents damage from hostile mobs.");
|
try {
|
||||||
this.other = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.other", true,
|
EntityDamageEvent.DamageCause damageCause = EntityDamageEvent.DamageCause.valueOf(configuredDamageCause);
|
||||||
"Prevents damage from all other entities.");
|
this.damage_causes_to_cancel.add(damageCause);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
LogUtil.damageCauseNotRecognized("prevent-damage-to-optimized", configuredDamageCause);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -47,33 +52,10 @@ public class PreventOptimizedDamage implements VillagerOptimizerModule, Listener
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
private void onDamageByEntity(EntityDamageByEntityEvent event) {
|
private void onDamageByEntity(EntityDamageEvent event) {
|
||||||
if (
|
if (
|
||||||
event.getEntityType().equals(EntityType.VILLAGER)
|
event.getEntityType().equals(EntityType.VILLAGER)
|
||||||
&& villagerCache.getOrAdd((Villager) event.getEntity()).isOptimized()
|
&& damage_causes_to_cancel.contains(event.getCause())
|
||||||
) {
|
|
||||||
Entity damager = event.getDamager();
|
|
||||||
if (damager.getType().equals(EntityType.PLAYER)) {
|
|
||||||
if (player) event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (damager instanceof Mob) {
|
|
||||||
if (mob) event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (other) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
|
||||||
private void onDamageByBlock(EntityDamageByBlockEvent event) {
|
|
||||||
if (
|
|
||||||
block
|
|
||||||
&& event.getEntityType().equals(EntityType.VILLAGER)
|
|
||||||
&& villagerCache.getOrAdd((Villager) event.getEntity()).isOptimized()
|
&& villagerCache.getOrAdd((Villager) event.getEntity()).isOptimized()
|
||||||
) {
|
) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -12,7 +12,7 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
|
import org.bukkit.event.entity.EntityTargetEvent;
|
||||||
|
|
||||||
public class PreventOptimizedTargeting implements VillagerOptimizerModule, Listener {
|
public class PreventOptimizedTargeting implements VillagerOptimizerModule, Listener {
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ public class PreventOptimizedTargeting implements VillagerOptimizerModule, Liste
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
private void onTarget(EntityTargetLivingEntityEvent event) {
|
private void onTarget(EntityTargetEvent event) {
|
||||||
// Yes, instanceof checks would look way more beautiful here but checking type is much faster
|
// Yes, instanceof checks would look way more beautiful here but checking type is much faster
|
||||||
Entity target = event.getTarget();
|
Entity target = event.getTarget();
|
||||||
if (
|
if (
|
||||||
@ -43,6 +43,7 @@ public class PreventOptimizedTargeting implements VillagerOptimizerModule, Liste
|
|||||||
&& target.getType().equals(EntityType.VILLAGER)
|
&& target.getType().equals(EntityType.VILLAGER)
|
||||||
&& villagerCache.getOrAdd((Villager) target).isOptimized()
|
&& villagerCache.getOrAdd((Villager) target).isOptimized()
|
||||||
) {
|
) {
|
||||||
|
event.setTarget(null);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,18 +11,16 @@ public class LogUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void materialNotRecognized(String path, String material) {
|
public static void materialNotRecognized(String path, String material) {
|
||||||
moduleLog(Level.WARNING, path, "Material '" + material + "' not recognized. Please use correct Spigot Material enums for your Minecraft version!");
|
moduleLog(Level.WARNING, path, "Material '" + material + "' not recognized. Please use correct Material enums from: " +
|
||||||
|
"https://jd.papermc.io/paper/1.20/org/bukkit/Material.html");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void damageCauseNotRecognized(String path, String cause) {
|
||||||
|
moduleLog(Level.WARNING, path, "DamageCause '" + cause + "' not recognized. Please use correct DamageCause enums from: " +
|
||||||
|
"https://jd.papermc.io/paper/1.20/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void entityTypeNotRecognized(String path, String entityType) {
|
public static void entityTypeNotRecognized(String path, String entityType) {
|
||||||
moduleLog(Level.WARNING, path, "EntityType '" + entityType + "' not recognized. Please use correct Spigot EntityType enums for your Minecraft version!");
|
moduleLog(Level.WARNING, path, "EntityType '" + entityType + "' not recognized. Please use correct Spigot EntityType enums for your Minecraft version!");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void enchantmentNotRecognized(String path, String enchantment) {
|
|
||||||
moduleLog(Level.WARNING, path, "Enchantment '" + enchantment + "' not recognized. Please use correct Spigot Enchantment enums for your Minecraft version!");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void integerNotRecognized(String path, String element) {
|
|
||||||
moduleLog(Level.WARNING, path, "The configured amount for "+element+" is not an integer.");
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -29,7 +29,7 @@ public class MakeVillagersSpawnAdult implements VillagerOptimizerModule, Listene
|
|||||||
public boolean shouldEnable() {
|
public boolean shouldEnable() {
|
||||||
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.villagers-spawn-as-adults.enable", false, """
|
return VillagerOptimizer.getConfiguration().getBoolean("gameplay.villagers-spawn-as-adults.enable", false, """
|
||||||
Spawned villagers will immediately be adults.\s
|
Spawned villagers will immediately be adults.\s
|
||||||
This is to save some more performance as players don't have to keep unoptimized\s
|
This is to save some more resources as players don't have to keep unoptimized\s
|
||||||
villagers loaded because they have to wait for them to turn into adults before they can\s
|
villagers loaded because they have to wait for them to turn into adults before they can\s
|
||||||
optimize them.""");
|
optimize them.""");
|
||||||
}
|
}
|
||||||
|
@ -1,25 +1,27 @@
|
|||||||
package me.xginko.villageroptimizer.modules.gameplay;
|
package me.xginko.villageroptimizer.modules.gameplay;
|
||||||
|
|
||||||
import io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent;
|
import io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent;
|
||||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
|
||||||
import me.xginko.villageroptimizer.VillagerCache;
|
import me.xginko.villageroptimizer.VillagerCache;
|
||||||
|
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||||
import me.xginko.villageroptimizer.config.Config;
|
import me.xginko.villageroptimizer.config.Config;
|
||||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||||
import org.bukkit.entity.Entity;
|
import me.xginko.villageroptimizer.utils.LogUtil;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Mob;
|
|
||||||
import org.bukkit.entity.Villager;
|
import org.bukkit.entity.Villager;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDamageByBlockEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
public class PreventOptimizedDamage implements VillagerOptimizerModule, Listener {
|
public class PreventOptimizedDamage implements VillagerOptimizerModule, Listener {
|
||||||
|
|
||||||
private final VillagerCache villagerCache;
|
private final VillagerCache villagerCache;
|
||||||
private final boolean block, player, mob, other, push;
|
private final HashSet<EntityDamageEvent.DamageCause> damage_causes_to_cancel = new HashSet<>();
|
||||||
|
private final boolean push;
|
||||||
|
|
||||||
public PreventOptimizedDamage() {
|
public PreventOptimizedDamage() {
|
||||||
shouldEnable();
|
shouldEnable();
|
||||||
@ -29,14 +31,18 @@ public class PreventOptimizedDamage implements VillagerOptimizerModule, Listener
|
|||||||
"Configure what kind of damage you want to cancel for optimized villagers here.");
|
"Configure what kind of damage you want to cancel for optimized villagers here.");
|
||||||
this.push = config.getBoolean("gameplay.prevent-damage-to-optimized.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");
|
"Prevents optimized villagers from getting pushed by an attacking entity");
|
||||||
this.block = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.block", false,
|
config.getList("gameplay.prevent-damage-to-optimized.damage-causes-to-cancel",
|
||||||
"Prevents damage from blocks like lava, tnt, respawn anchors, etc.");
|
Arrays.stream(EntityDamageEvent.DamageCause.values()).map(Enum::name).toList(), """
|
||||||
this.player = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.player", false,
|
These are all current entries in the game. Remove what you do not need blocked. Remember sometimes players need to dispose of villagers.
|
||||||
"Prevents damage from getting hit by players.");
|
Refer to https://jd.papermc.io/paper/1.20/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html for correct names and a description.\s"""
|
||||||
this.mob = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.mob", true,
|
).forEach(configuredDamageCause -> {
|
||||||
"Prevents damage from hostile mobs.");
|
try {
|
||||||
this.other = config.getBoolean("gameplay.prevent-damage-to-optimized.damagers.other", true,
|
EntityDamageEvent.DamageCause damageCause = EntityDamageEvent.DamageCause.valueOf(configuredDamageCause);
|
||||||
"Prevents damage from all other entities.");
|
this.damage_causes_to_cancel.add(damageCause);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
LogUtil.damageCauseNotRecognized("prevent-damage-to-optimized", configuredDamageCause);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -56,33 +62,10 @@ public class PreventOptimizedDamage implements VillagerOptimizerModule, Listener
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
private void onDamageByEntity(EntityDamageByEntityEvent event) {
|
private void onDamageByEntity(EntityDamageEvent event) {
|
||||||
if (
|
if (
|
||||||
event.getEntityType().equals(EntityType.VILLAGER)
|
event.getEntityType().equals(EntityType.VILLAGER)
|
||||||
&& villagerCache.getOrAdd((Villager) event.getEntity()).isOptimized()
|
&& damage_causes_to_cancel.contains(event.getCause())
|
||||||
) {
|
|
||||||
Entity damager = event.getDamager();
|
|
||||||
if (damager.getType().equals(EntityType.PLAYER)) {
|
|
||||||
if (player) event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (damager instanceof Mob) {
|
|
||||||
if (mob) event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (other) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
|
||||||
private void onDamageByBlock(EntityDamageByBlockEvent event) {
|
|
||||||
if (
|
|
||||||
block
|
|
||||||
&& event.getEntityType().equals(EntityType.VILLAGER)
|
|
||||||
&& villagerCache.getOrAdd((Villager) event.getEntity()).isOptimized()
|
&& villagerCache.getOrAdd((Villager) event.getEntity()).isOptimized()
|
||||||
) {
|
) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package me.xginko.villageroptimizer.modules.gameplay;
|
package me.xginko.villageroptimizer.modules.gameplay;
|
||||||
|
|
||||||
import com.destroystokyo.paper.event.entity.EntityPathfindEvent;
|
import com.destroystokyo.paper.event.entity.EntityPathfindEvent;
|
||||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
|
||||||
import me.xginko.villageroptimizer.VillagerCache;
|
import me.xginko.villageroptimizer.VillagerCache;
|
||||||
|
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
@ -13,7 +13,7 @@ import org.bukkit.event.EventPriority;
|
|||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
|
import org.bukkit.event.entity.EntityTargetEvent;
|
||||||
|
|
||||||
public class PreventOptimizedTargeting implements VillagerOptimizerModule, Listener {
|
public class PreventOptimizedTargeting implements VillagerOptimizerModule, Listener {
|
||||||
|
|
||||||
@ -41,7 +41,7 @@ public class PreventOptimizedTargeting implements VillagerOptimizerModule, Liste
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
private void onTarget(EntityTargetLivingEntityEvent event) {
|
private void onTarget(EntityTargetEvent event) {
|
||||||
// Yes, instanceof checks would look way more beautiful here but checking type is much faster
|
// Yes, instanceof checks would look way more beautiful here but checking type is much faster
|
||||||
Entity target = event.getTarget();
|
Entity target = event.getTarget();
|
||||||
if (
|
if (
|
||||||
@ -49,6 +49,7 @@ public class PreventOptimizedTargeting implements VillagerOptimizerModule, Liste
|
|||||||
&& target.getType().equals(EntityType.VILLAGER)
|
&& target.getType().equals(EntityType.VILLAGER)
|
||||||
&& villagerCache.getOrAdd((Villager) target).isOptimized()
|
&& villagerCache.getOrAdd((Villager) target).isOptimized()
|
||||||
) {
|
) {
|
||||||
|
event.setTarget(null);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,18 +11,16 @@ public class LogUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void materialNotRecognized(String path, String material) {
|
public static void materialNotRecognized(String path, String material) {
|
||||||
moduleLog(Level.WARNING, path, "Material '" + material + "' not recognized. Please use correct Spigot Material enums for your Minecraft version!");
|
moduleLog(Level.WARNING, path, "Material '" + material + "' not recognized. Please use correct Material enums from: " +
|
||||||
|
"https://jd.papermc.io/paper/1.20/org/bukkit/Material.html");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void damageCauseNotRecognized(String path, String cause) {
|
||||||
|
moduleLog(Level.WARNING, path, "DamageCause '" + cause + "' not recognized. Please use correct DamageCause enums from: " +
|
||||||
|
"https://jd.papermc.io/paper/1.20/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void entityTypeNotRecognized(String path, String entityType) {
|
public static void entityTypeNotRecognized(String path, String entityType) {
|
||||||
moduleLog(Level.WARNING, path, "EntityType '" + entityType + "' not recognized. Please use correct Spigot EntityType enums for your Minecraft version!");
|
moduleLog(Level.WARNING, path, "EntityType '" + entityType + "' not recognized. Please use correct Spigot EntityType enums for your Minecraft version!");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void enchantmentNotRecognized(String path, String enchantment) {
|
|
||||||
moduleLog(Level.WARNING, path, "Enchantment '" + enchantment + "' not recognized. Please use correct Spigot Enchantment enums for your Minecraft version!");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void integerNotRecognized(String path, String element) {
|
|
||||||
moduleLog(Level.WARNING, path, "The configured amount for "+element+" is not an integer.");
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user