Skip to content

Commit

Permalink
Clean a bunch of random stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
imDaniX committed Jun 28, 2024
1 parent a9a2304 commit d7d1303
Show file tree
Hide file tree
Showing 10 changed files with 97 additions and 168 deletions.
5 changes: 1 addition & 4 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
name: Java CI

on:
push:
branches:
- master
on: push

jobs:
build:
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>org.hurricanegames</groupId>
<artifactId>wgextender</artifactId>
<version>3.1.1-fork</version>
<version>3.2.0-fork-SNAPSHOT</version>
<packaging>jar</packaging>

<name>WGExtender</name>
Expand Down
8 changes: 6 additions & 2 deletions src/wgextender/WGExtender.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@ public WGExtender() {
private PvPHandlingListener pvplistener;
private OldPVPFlagsHandler oldpvphandler;

@Override
public void onLoad() {
WGExtenderFlags.registerFlags(getLogger());
}

@Override
public void onEnable() {
VaultIntegration.getInstance().initialize(this);
Expand All @@ -68,11 +73,10 @@ public void onEnable() {
try {
WGRegionCommandWrapper.inject(config);
WEWandCommandWrapper.inject(config);
WGExtenderFlags.registerFlags();
pvplistener = new PvPHandlingListener(config);
pvplistener.inject();
oldpvphandler = new OldPVPFlagsHandler();
oldpvphandler.start();
oldpvphandler.start(this);
} catch (Throwable t) {
getLogger().log(Level.SEVERE, "Unable to inject, shutting down", t);
t.printStackTrace();
Expand Down
51 changes: 22 additions & 29 deletions src/wgextender/commands/Commands.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,13 @@
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.domains.DefaultDomain;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.BooleanFlag;
import com.sk89q.worldguard.protection.flags.EnumFlag;
import com.sk89q.worldguard.protection.flags.Flag;
import com.sk89q.worldguard.protection.flags.Flags;
import com.sk89q.worldguard.protection.flags.StateFlag;
import com.sk89q.worldguard.protection.flags.*;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.GlobalProtectedRegion;
import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.command.Command;
Expand All @@ -48,66 +43,64 @@
import wgextender.utils.WEUtils;
import wgextender.utils.WGRegionUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

import static org.bukkit.ChatColor.BLUE;
import static org.bukkit.ChatColor.RED;
import static org.bukkit.util.StringUtil.copyPartialMatches;

//TODO: refactor
public class Commands implements CommandExecutor, TabCompleter {

protected final Config config;

public Commands(Config config) {
this.config = config;
}

protected static List<String> getRegionsInPlayerSelection(Player player) throws IncompleteRegionException {
private static List<String> getRegionsInPlayerSelection(Player player) throws IncompleteRegionException {
Region psel = WEUtils.getSelection(player);
ProtectedRegion fakerg = new ProtectedCuboidRegion("wgexfakerg", psel.getMaximumPoint(), psel.getMinimumPoint());
ApplicableRegionSet ars = WGRegionUtils.getRegionManager(player.getWorld()).getApplicableRegions(fakerg);
return
StreamSupport.stream(ars.spliterator(), false)
return StreamSupport.stream(ars.spliterator(), false)
.map(ProtectedRegion::getId)
.collect(Collectors.toList());
}

@Override
public boolean onCommand(CommandSender sender, Command arg1, String label, String[] args) {
if (!sender.hasPermission("wgextender.admin")) {
sender.sendMessage(ChatColor.RED+"Недостаточно прав");
sender.sendMessage(RED + "Недостаточно прав");
return true;
}
if (args.length >= 1) {
switch (args[0].toLowerCase()) {
case "help" -> {
sender.sendMessage(ChatColor.BLUE + "wgex reload - перезагрузить конфиг");
sender.sendMessage(ChatColor.BLUE + "wgex search - ищет регионы в выделенной области");
sender.sendMessage(ChatColor.BLUE + "wgex setflag {world} {flag} {value} - устанавливает флаг {flag} со значением {value} на все регионы в мире {world}");
sender.sendMessage(ChatColor.BLUE + "wgex removeowner {name} - удаляет игрока из списков владельцев всех регионов");
sender.sendMessage(ChatColor.BLUE + "wgex removemember {name} - удаляет игрока из списков членов всех регионов");
sender.sendMessage(BLUE + "wgex reload - перезагрузить конфиг");
sender.sendMessage(BLUE + "wgex search - ищет регионы в выделенной области");
sender.sendMessage(BLUE + "wgex setflag {world} {flag} {value} - устанавливает флаг {flag} со значением {value} на все регионы в мире {world}");
sender.sendMessage(BLUE + "wgex removeowner {name} - удаляет игрока из списков владельцев всех регионов");
sender.sendMessage(BLUE + "wgex removemember {name} - удаляет игрока из списков членов всех регионов");
return true;
}
case "reload" -> {
config.loadConfig();
sender.sendMessage(ChatColor.BLUE + "Конфиг перезагружен");
sender.sendMessage(BLUE + "Конфиг перезагружен");
return true;
}
case "search" -> {
if (sender instanceof Player player) {
try {
List<String> regions = getRegionsInPlayerSelection(player);
if (regions.isEmpty()) {
sender.sendMessage(ChatColor.BLUE + "Регионов пересекающихся с выделенной зоной не найдено");
sender.sendMessage(BLUE + "Регионов пересекающихся с выделенной зоной не найдено");
} else {
sender.sendMessage(ChatColor.BLUE + "Найдены регионы пересекающиеся с выделенной зоной: " + regions);
sender.sendMessage(BLUE + "Найдены регионы пересекающиеся с выделенной зоной: " + regions);
}
} catch (IncompleteRegionException e) {
sender.sendMessage(ChatColor.BLUE + "Сначала выделите зону поиска");
sender.sendMessage(BLUE + "Сначала выделите зону поиска");
}
return true;
}
Expand All @@ -119,12 +112,12 @@ public boolean onCommand(CommandSender sender, Command arg1, String label, Strin
}
World world = Bukkit.getWorld(args[1]);
if (world == null) {
sender.sendMessage(ChatColor.BLUE + "Мир не найден");
sender.sendMessage(BLUE + "Мир не найден");
return true;
}
Flag<?> flag = Flags.fuzzyMatchFlag(WorldGuard.getInstance().getFlagRegistry(), args[2]);
if (flag == null) {
sender.sendMessage(ChatColor.BLUE + "Флаг не найден");
sender.sendMessage(BLUE + "Флаг не найден");
return true;
}
try {
Expand All @@ -135,9 +128,9 @@ public boolean onCommand(CommandSender sender, Command arg1, String label, Strin
}
AutoFlags.setFlag(WGRegionUtils.wrapAsPrivileged(sender), world, region, flag, value);
}
sender.sendMessage(ChatColor.BLUE + "Флаги установлены");
sender.sendMessage(BLUE + "Флаги установлены");
} catch (CommandException e) {
sender.sendMessage(ChatColor.BLUE + "Неправильный формат флага " + flag.getName() + ": " + e.getMessage());
sender.sendMessage(BLUE + "Неправильный формат флага " + flag.getName() + ": " + e.getMessage());
}
return true;
}
Expand All @@ -157,7 +150,7 @@ public boolean onCommand(CommandSender sender, Command arg1, String label, Strin
region.setMembers(members);
}
}
sender.sendMessage(ChatColor.BLUE + "Игрок удалён из списков " + (owner ? "владельцев" : "участников") + " всех регионов");
sender.sendMessage(BLUE + "Игрок удалён из списков " + (owner ? "владельцев" : "участников") + " всех регионов");
return true;
}
}
Expand Down
24 changes: 13 additions & 11 deletions src/wgextender/features/claimcommand/WGRegionCommandWrapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
package wgextender.features.claimcommand;

import com.sk89q.minecraft.util.commands.CommandException;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
Expand All @@ -27,6 +26,9 @@
import wgextender.utils.WEUtils;
import wgextender.utils.WGRegionUtils;

import static org.bukkit.ChatColor.RED;
import static org.bukkit.ChatColor.YELLOW;

public class WGRegionCommandWrapper extends Command {

public static void inject(Config config) {
Expand Down Expand Up @@ -57,7 +59,7 @@ public boolean execute(CommandSender sender, String label, String[] args) {
if (config.claimExpandSelectionVertical) {
boolean result = WEUtils.expandVert((Player) sender);
if (result) {
player.sendMessage(ChatColor.YELLOW + "Регион автоматически расширен по вертикали");
player.sendMessage(YELLOW + "Регион автоматически расширен по вертикали");
}
}
if (!process(player)) {
Expand All @@ -70,7 +72,7 @@ public boolean execute(CommandSender sender, String label, String[] args) {
AutoFlags.setFlagsForRegion(WGRegionUtils.wrapAsPrivileged(player), player.getWorld(), config, regionName);
}
} catch (CommandException ex) {
sender.sendMessage(ChatColor.RED + ex.getMessage());
sender.sendMessage(RED + ex.getMessage());
}
return true;
} else {
Expand All @@ -83,23 +85,23 @@ private boolean process(Player player) {
switch (info.result()) {
default: return true;
case DENY_MAX_VOLUME: {
player.sendMessage(ChatColor.RED + "Вы не можете заприватить такой большой регион");
player.sendMessage(ChatColor.RED + "Ваш лимит: "+info.assignedLimit()+", вы попытались заприватить: "+info.assignedSize());
player.sendMessage(RED + "Вы не можете заприватить такой большой регион");
player.sendMessage(RED + "Ваш лимит: "+info.assignedLimit()+", вы попытались заприватить: "+info.assignedSize());
return false;
}
case DENY_MIN_VOLUME: {
player.sendMessage(ChatColor.RED + "Вы не можете заприватить такой маленький регион");
player.sendMessage(ChatColor.RED + "Минимальный объем: "+info.assignedLimit()+", вы попытались заприватить: "+info.assignedSize());
player.sendMessage(RED + "Вы не можете заприватить такой маленький регион");
player.sendMessage(RED + "Минимальный объем: "+info.assignedLimit()+", вы попытались заприватить: "+info.assignedSize());
return false;
}
case DENY_HORIZONTAL: {
player.sendMessage(ChatColor.RED + "Вы не можете заприватить такой маленький регион");
player.sendMessage(ChatColor.RED + "Минимальная ширина: "+info.assignedLimit()+", вы попытались заприватить: "+info.assignedSize());
player.sendMessage(RED + "Вы не можете заприватить такой маленький регион");
player.sendMessage(RED + "Минимальная ширина: "+info.assignedLimit()+", вы попытались заприватить: "+info.assignedSize());
return false;
}
case DENY_VERTICAL: {
player.sendMessage(ChatColor.RED + "Вы не можете заприватить такой низкий регион");
player.sendMessage(ChatColor.RED + "Минимальная высота: "+info.assignedLimit()+", вы попытались заприватить: "+info.assignedSize());
player.sendMessage(RED + "Вы не можете заприватить такой низкий регион");
player.sendMessage(RED + "Минимальная высота: "+info.assignedLimit()+", вы попытались заприватить: "+info.assignedSize());
return false;
}
}
Expand Down
44 changes: 26 additions & 18 deletions src/wgextender/features/flags/OldPVPFlagsHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.google.common.base.Function;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeInstance;
import org.bukkit.entity.Entity;
Expand All @@ -16,30 +17,38 @@
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.plugin.Plugin;
import wgextender.WGExtender;
import wgextender.utils.ReflectionUtils;
import wgextender.utils.WGRegionUtils;

import java.lang.reflect.Field;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.*;
import java.util.logging.Level;

public class OldPVPFlagsHandler implements Listener {
@SuppressWarnings("deprecation")
private static final Set<EntityDamageEvent.DamageModifier> PVP_MODIFIERS = EnumSet.of(
DamageModifier.ARMOR, DamageModifier.RESISTANCE, DamageModifier.MAGIC, DamageModifier.ABSORPTION
);
protected final Map<UUID, Double> oldValues = new HashMap<>();
protected Field functionsField;
private final Map<UUID, Double> oldValues = new HashMap<>();
private Field functionsField;

public void start() {
functionsField = ReflectionUtils.getField(EntityDamageEvent.class, "modifierFunctions");
Bukkit.getPluginManager().registerEvents(this, WGExtender.getInstance());
Bukkit.getScheduler().runTaskTimer(WGExtender.getInstance(), () -> {
public void start(Plugin plugin) {
try {
functionsField = EntityDamageEvent.class.getDeclaredField("modifierFunctions");
functionsField.setAccessible(true);
} catch (Exception ex) {
plugin.getLogger().log(
Level.SEVERE,
"Couldn't get access to 'modifierFunctions' field. Old PvP flags will not be enabled",
ex
);
return;
}

Server server = plugin.getServer();
server.getPluginManager().registerEvents(this, plugin);
server.getScheduler().runTaskTimer(WGExtender.getInstance(), () -> {
for (Player player : Bukkit.getOnlinePlayers()) {
if (WGRegionUtils.isFlagTrue(player.getLocation(), WGExtenderFlags.OLDPVP_ATTACKSPEED)) {
if (!oldValues.containsKey(player.getUniqueId())) {
Expand All @@ -60,18 +69,18 @@ public void stop() {
}
}

@EventHandler(priority = EventPriority.LOWEST)
public void onQuit(PlayerQuitEvent event) {
reset(event.getPlayer());
}

private void reset(Player player) {
Double oldValue = oldValues.remove(player.getUniqueId());
if (oldValue != null) {
player.getAttribute(Attribute.GENERIC_ATTACK_SPEED).setBaseValue(oldValue);
}
}

@EventHandler(priority = EventPriority.LOWEST)
public void onQuit(PlayerQuitEvent event) {
reset(event.getPlayer());
}

@SuppressWarnings({"unchecked", "deprecation"})
@EventHandler(priority = EventPriority.LOWEST)
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
Expand Down Expand Up @@ -109,5 +118,4 @@ public void onInteract(PlayerInteractEvent event) {
event.setCancelled(true);
}
}

}
Loading

0 comments on commit d7d1303

Please sign in to comment.