Implement GodModeFeature
This commit is contained in:
parent
d4f33b8c2e
commit
612a0281d6
|
|
@ -0,0 +1,49 @@
|
||||||
|
package com.alttd.essentia.feature.godmode;
|
||||||
|
|
||||||
|
import com.alttd.essentia.EssentiaPlugin;
|
||||||
|
import com.alttd.essentia.api.model.UserSettings;
|
||||||
|
import com.alttd.essentia.api.user.User;
|
||||||
|
import com.alttd.essentia.api.user.UserManager;
|
||||||
|
import com.alttd.essentia.feature.EssentiaFeature;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
|
||||||
|
public class GodModeFeature implements EssentiaFeature {
|
||||||
|
|
||||||
|
private final EssentiaPlugin plugin;
|
||||||
|
|
||||||
|
private boolean enabled = false;
|
||||||
|
|
||||||
|
public GodModeFeature() {
|
||||||
|
this.plugin = EssentiaPlugin.instance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String featureName() {
|
||||||
|
return "GodMode";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register() {
|
||||||
|
final PluginManager pluginManager = plugin.getServer().getPluginManager();
|
||||||
|
pluginManager.registerEvents(new GodModeListener(this), plugin);
|
||||||
|
|
||||||
|
this.enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean isGodModeEnabled(Player player) {
|
||||||
|
UserManager userManager = plugin.userManager();
|
||||||
|
User user = userManager.getUser(player);
|
||||||
|
if (user == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
UserSettings userSettings = user.getUserSettings();
|
||||||
|
return userSettings.godMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,114 @@
|
||||||
|
package com.alttd.essentia.feature.godmode;
|
||||||
|
|
||||||
|
import com.destroystokyo.paper.event.entity.PhantomPreSpawnEvent;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.entity.*;
|
||||||
|
|
||||||
|
public class GodModeListener implements Listener {
|
||||||
|
|
||||||
|
private GodModeFeature godModeFeature;
|
||||||
|
public GodModeListener(GodModeFeature godModeFeature) {
|
||||||
|
this.godModeFeature = godModeFeature;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onFoodLevelChange(FoodLevelChangeEvent event) {
|
||||||
|
if (!(event.getEntity() instanceof Player player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!isGodModeEnabled(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPhantomPreSpawn(PhantomPreSpawnEvent event) {
|
||||||
|
if (!(event.getSpawningEntity() instanceof Player player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!isGodModeEnabled(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
event.setShouldAbortSpawn(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onEntityTargetLivingEntity(EntityTargetLivingEntityEvent event) {
|
||||||
|
if (!(event.getEntity() instanceof Player player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!isGodModeEnabled(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) {
|
||||||
|
if (!(event.getEntity() instanceof Player player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!isGodModeEnabled(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPotionSplashEvent(PotionSplashEvent event) {
|
||||||
|
for (LivingEntity entity : event.getAffectedEntities()) {
|
||||||
|
if (!(entity instanceof Player player))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!isGodModeEnabled(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setIntensity(player, 0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
public void onEntityCombustByEntityEvent(EntityCombustByEntityEvent event) {
|
||||||
|
if (!(event.getEntity() instanceof Player player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!isGodModeEnabled(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
||||||
|
public void onEntityCombust(final EntityCombustEvent event) {
|
||||||
|
if (!(event.getEntity() instanceof Player player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!isGodModeEnabled(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
||||||
|
public void onEntityDamage(final EntityDamageEvent event) {
|
||||||
|
if (!(event.getEntity() instanceof Player player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!isGodModeEnabled(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isGodModeEnabled(Player player) {
|
||||||
|
return godModeFeature.isGodModeEnabled(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
package com.alttd.essentia.listeners;
|
|
||||||
|
|
||||||
import com.alttd.essentia.EssentiaPlugin;
|
|
||||||
import com.alttd.essentia.api.model.UserSettings;
|
|
||||||
import com.alttd.essentia.api.user.User;
|
|
||||||
import com.alttd.essentia.api.user.UserManager;
|
|
||||||
import com.destroystokyo.paper.event.entity.PhantomPreSpawnEvent;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
|
|
||||||
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
|
||||||
|
|
||||||
public class GodModeListener implements Listener {
|
|
||||||
|
|
||||||
private final EssentiaPlugin plugin;
|
|
||||||
|
|
||||||
public GodModeListener() {
|
|
||||||
this.plugin = EssentiaPlugin.instance();
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onFoodLevelChange(FoodLevelChangeEvent event) {
|
|
||||||
if (!(event.getEntity() instanceof Player player))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!hasGodMode(player))
|
|
||||||
return;
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onPhantomPreSpawn(PhantomPreSpawnEvent event) {
|
|
||||||
if (!(event.getSpawningEntity() instanceof Player player))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!hasGodMode(player))
|
|
||||||
return;
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
event.setShouldAbortSpawn(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onEntityTargetLivingEntity(EntityTargetLivingEntityEvent event) {
|
|
||||||
if (!(event.getEntity() instanceof Player player))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!hasGodMode(player))
|
|
||||||
return;
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean hasGodMode(Player player) {
|
|
||||||
UserManager userManager = plugin.userManager();
|
|
||||||
User user = userManager.getUser(player);
|
|
||||||
if (user == null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
UserSettings userSettings = user.getUserSettings();
|
|
||||||
return userSettings.godMode();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue
Block a user