Major command changes that don't work yet.

This commit is contained in:
MattBDev
2019-07-05 20:46:48 -04:00
parent ffc2092d93
commit 8108d0a936
399 changed files with 13558 additions and 7985 deletions

View File

@ -3,22 +3,10 @@ package com.boydti.fawe.bukkit;
import com.boydti.fawe.Fawe;
import com.boydti.fawe.IFawe;
import com.boydti.fawe.bukkit.chat.BukkitChatManager;
import com.boydti.fawe.bukkit.listener.AsyncTabCompleteListener;
import com.boydti.fawe.bukkit.listener.BrushListener;
import com.boydti.fawe.bukkit.listener.BukkitImageListener;
import com.boydti.fawe.bukkit.listener.RenderListener;
import com.boydti.fawe.bukkit.listener.SyncTabCompleteListener;
import com.boydti.fawe.bukkit.regions.ASkyBlockHook;
import com.boydti.fawe.bukkit.regions.FactionsFeature;
import com.boydti.fawe.bukkit.regions.FactionsOneFeature;
import com.boydti.fawe.bukkit.regions.FactionsUUIDFeature;
import com.boydti.fawe.bukkit.regions.FreeBuildRegion;
import com.boydti.fawe.bukkit.regions.GriefPreventionFeature;
import com.boydti.fawe.bukkit.regions.PreciousStonesFeature;
import com.boydti.fawe.bukkit.regions.ResidenceFeature;
import com.boydti.fawe.bukkit.regions.TownyFeature;
import com.boydti.fawe.bukkit.regions.Worldguard;
import com.boydti.fawe.bukkit.regions.WorldguardFlag;
import com.boydti.fawe.bukkit.regions.*;
import com.boydti.fawe.bukkit.util.BukkitReflectionUtils;
import com.boydti.fawe.bukkit.util.BukkitTaskMan;
import com.boydti.fawe.bukkit.util.ItemUtil;
@ -39,7 +27,7 @@ import com.boydti.fawe.util.Jars;
import com.boydti.fawe.util.MainUtil;
import com.boydti.fawe.util.TaskManager;
import com.boydti.fawe.util.image.ImageViewer;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.world.World;
import org.bukkit.Bukkit;
import org.bukkit.command.ConsoleCommandSender;
@ -127,18 +115,6 @@ public class FaweBukkit implements IFawe, Listener {
new ChunkListener_9();
}
try {
Class.forName("com.destroystokyo.paper.event.server.AsyncTabCompleteEvent");
Bukkit.getPluginManager().registerEvents(new AsyncTabCompleteListener(WorldEditPlugin.getInstance()), plugin);
} catch (Throwable ignore) {
debug("====== USE PAPER ======");
debug("DOWNLOAD: https://papermc.io/ci/job/Paper-1.13/");
debug("GUIDE: https://www.spigotmc.org/threads/21726/");
debug(" - This is only a recommendation");
debug(" - Allows the use of Async Tab Completetion as provided by Paper");
debug("==============================");
Bukkit.getPluginManager().registerEvents(new SyncTabCompleteListener(WorldEditPlugin.getInstance()), plugin);
}
});
}
@ -405,7 +381,7 @@ public class FaweBukkit implements IFawe, Listener {
public Collection<FaweMaskManager> getMaskManagers() {
final Plugin worldguardPlugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
final ArrayList<FaweMaskManager> managers = new ArrayList<>();
if ((worldguardPlugin != null) && worldguardPlugin.isEnabled()) {
if (worldguardPlugin != null && worldguardPlugin.isEnabled()) {
try {
managers.add(new Worldguard(worldguardPlugin, this));
managers.add(new WorldguardFlag(worldguardPlugin, this));
@ -415,7 +391,7 @@ public class FaweBukkit implements IFawe, Listener {
}
}
final Plugin townyPlugin = Bukkit.getServer().getPluginManager().getPlugin("Towny");
if ((townyPlugin != null) && townyPlugin.isEnabled()) {
if (townyPlugin != null && townyPlugin.isEnabled()) {
try {
managers.add(new TownyFeature(townyPlugin, this));
Fawe.debug("Plugin 'Towny' found. Using it now.");
@ -424,7 +400,7 @@ public class FaweBukkit implements IFawe, Listener {
}
}
final Plugin factionsPlugin = Bukkit.getServer().getPluginManager().getPlugin("Factions");
if ((factionsPlugin != null) && factionsPlugin.isEnabled()) {
if (factionsPlugin != null && factionsPlugin.isEnabled()) {
try {
managers.add(new FactionsFeature(factionsPlugin));
Fawe.debug("Plugin 'Factions' found. Using it now.");
@ -444,7 +420,7 @@ public class FaweBukkit implements IFawe, Listener {
}
}
final Plugin residencePlugin = Bukkit.getServer().getPluginManager().getPlugin("Residence");
if ((residencePlugin != null) && residencePlugin.isEnabled()) {
if (residencePlugin != null && residencePlugin.isEnabled()) {
try {
managers.add(new ResidenceFeature(residencePlugin, this));
Fawe.debug("Plugin 'Residence' found. Using it now.");
@ -453,7 +429,7 @@ public class FaweBukkit implements IFawe, Listener {
}
}
final Plugin griefpreventionPlugin = Bukkit.getServer().getPluginManager().getPlugin("GriefPrevention");
if ((griefpreventionPlugin != null) && griefpreventionPlugin.isEnabled()) {
if (griefpreventionPlugin != null && griefpreventionPlugin.isEnabled()) {
try {
managers.add(new GriefPreventionFeature(griefpreventionPlugin));
Fawe.debug("Plugin 'GriefPrevention' found. Using it now.");
@ -462,7 +438,7 @@ public class FaweBukkit implements IFawe, Listener {
}
}
final Plugin preciousstonesPlugin = Bukkit.getServer().getPluginManager().getPlugin("PreciousStones");
if ((preciousstonesPlugin != null) && preciousstonesPlugin.isEnabled()) {
if (preciousstonesPlugin != null && preciousstonesPlugin.isEnabled()) {
try {
managers.add(new PreciousStonesFeature(preciousstonesPlugin, this));
Fawe.debug("Plugin 'PreciousStones' found. Using it now.");
@ -473,7 +449,7 @@ public class FaweBukkit implements IFawe, Listener {
final Plugin aSkyBlock = Bukkit.getServer().getPluginManager().getPlugin("ASkyBlock");
if ((aSkyBlock != null) && aSkyBlock.isEnabled()) {
if (aSkyBlock != null && aSkyBlock.isEnabled()) {
try {
managers.add(new ASkyBlockHook(aSkyBlock));
Fawe.debug("Plugin 'ASkyBlock' found. Using it now.");
@ -492,20 +468,6 @@ public class FaweBukkit implements IFawe, Listener {
return managers;
}
//
// @EventHandler
// public void onWorldLoad(WorldLoadEvent event) {
// org.bukkit.World world = event.getWorld();
// world.setKeepSpawnInMemory(false);
// WorldServer nmsWorld = ((CraftWorld) world).getHandle();
// ChunkProviderServer provider = nmsWorld.getChunkProviderServer();
// try {
// Field fieldChunkLoader = provider.getClass().getDeclaredField("chunkLoader");
// ReflectionUtils.setFailsafeFieldValue(fieldChunkLoader, provider, new FaweChunkLoader());
// } catch (Throwable e) {
// e.printStackTrace();
// }
// }
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerQuit(PlayerQuitEvent event) {

View File

@ -1,41 +0,0 @@
package com.boydti.fawe.bukkit.listener;
import com.boydti.fawe.object.string.MutableCharSequence;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.event.platform.CommandSuggestionEvent;
import com.sk89q.worldedit.extension.platform.CommandManager;
import com.sk89q.worldedit.util.command.CommandMapping;
import com.sk89q.worldedit.util.command.Dispatcher;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Listener;
import java.util.List;
public class ATabCompleteListener implements Listener {
private final WorldEditPlugin worldEdit;
public ATabCompleteListener(WorldEditPlugin worldEdit) {
this.worldEdit = worldEdit;
}
public List<String> onTab(String buffer, CommandSender sender) {
int firstSpace = buffer.indexOf(' ');
if (firstSpace == -1) return null;
MutableCharSequence mBuffer = MutableCharSequence.getTemporal();
mBuffer.setString(buffer);
mBuffer.setSubstring(0, firstSpace);
int index;
String label = buffer.substring(index = (mBuffer.indexOf(':') == -1 ? 1 : mBuffer.indexOf(':') + 1), firstSpace);
Dispatcher dispatcher = CommandManager.getInstance().getDispatcher();
CommandMapping weCommand = dispatcher.get(label);
if (weCommand != null) {
CommandSuggestionEvent event = new CommandSuggestionEvent(worldEdit.wrapCommandSender(sender), buffer.substring(index));
worldEdit.getWorldEdit().getEventBus().post(event);
List<String> suggestions = event.getSuggestions();
if (suggestions != null && !suggestions.isEmpty()) {
return suggestions;
}
}
return null;
}
}

View File

@ -1,29 +0,0 @@
package com.boydti.fawe.bukkit.listener;
import com.boydti.fawe.util.TaskManager;
import com.destroystokyo.paper.event.server.AsyncTabCompleteEvent;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.event.EventHandler;
import org.bukkit.event.server.TabCompleteEvent;
import java.util.Collections;
import java.util.List;
public class AsyncTabCompleteListener extends ATabCompleteListener {
public AsyncTabCompleteListener(WorldEditPlugin worldEdit) {
super(worldEdit);
}
@EventHandler
public void onTabComplete(AsyncTabCompleteEvent event) {
if (event.isCommand()) {
List<String> result = this.onTab(event.getBuffer(), event.getSender());
if (result != null && !result.isEmpty()) {
event.setCompletions(result);
event.setHandled(true);
}
}
}
}

View File

@ -1,6 +1,5 @@
package com.boydti.fawe.bukkit.listener;
import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.FawePlayer;
import com.boydti.fawe.object.brush.MovableTool;
import com.boydti.fawe.object.brush.ResettableTool;
@ -17,8 +16,6 @@ import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerItemHeldEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.plugin.Plugin;
public class BrushListener implements Listener {
@ -47,16 +44,7 @@ public class BrushListener implements Listener {
}
ScrollTool scrollable = (ScrollTool) tool;
if (scrollable.increment(player, ri)) {
if (Settings.IMP.EXPERIMENTAL.PERSISTENT_BRUSHES) {
bukkitPlayer.getInventory().setHeldItemSlot(oldSlot);
} else {
final PlayerInventory inv = bukkitPlayer.getInventory();
final ItemStack item = inv.getItem(slot);
final ItemStack newItem = inv.getItem(oldSlot);
inv.setItem(slot, newItem);
inv.setItem(oldSlot, item);
bukkitPlayer.updateInventory();
}
bukkitPlayer.getInventory().setHeldItemSlot(oldSlot);
}
}
}

View File

@ -49,6 +49,7 @@ import java.util.Set;
import java.util.UUID;
public class BukkitImageListener implements Listener {
private Location mutable = new Location(Bukkit.getWorlds().get(0), 0, 0, 0);
public BukkitImageListener(Plugin plugin) {
@ -61,19 +62,20 @@ public class BukkitImageListener implements Listener {
Iterator<Player> iter = recipients.iterator();
while (iter.hasNext()) {
Player player = iter.next();
if (player.equals(event.getPlayer())) continue;
FawePlayer<Object> fp = FawePlayer.wrap(player);
if (!fp.hasMeta()) continue;
CFICommands.CFISettings settings = fp.getMeta("CFISettings");
if (settings == null || !settings.hasGenerator()) continue;
if (player.equals(event.getPlayer()) || !fp.hasMeta() || settings == null || !settings.hasGenerator()) {
continue;
}
String name = player.getName().toLowerCase();
if (!event.getMessage().toLowerCase().contains(name)) {
ArrayDeque<String> buffered = fp.getMeta("CFIBufferedMessages");
if (buffered == null) fp.setMeta("CFIBufferedMessaged", buffered = new ArrayDeque<>());
String full = String.format(event.getFormat(), event.getPlayer().getDisplayName(), event.getMessage());
if (buffered == null) {
fp.setMeta("CFIBufferedMessaged", buffered = new ArrayDeque<>());
}
String full = String.format(event.getFormat(), event.getPlayer().getDisplayName(),
event.getMessage());
buffered.add(full);
iter.remove();
}
@ -82,29 +84,42 @@ public class BukkitImageListener implements Listener {
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
public void onHangingBreakByEntity(HangingBreakByEntityEvent event) {
if(!(event.getRemover() instanceof Player)) return;
if (!(event.getRemover() instanceof Player)) {
return;
}
handleInteract(event, (Player) event.getRemover(), event.getEntity(), false);
}
@EventHandler(priority = EventPriority.LOWEST)
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
if(!(event.getDamager() instanceof Player)) return;
if (!(event.getDamager() instanceof Player)) {
return;
}
handleInteract(event, (Player) event.getDamager(), event.getEntity(), false);
}
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerInteract(PlayerInteractEvent event) {
if (event.useItemInHand() == Event.Result.DENY) return;
if (event.useItemInHand() == Event.Result.DENY) {
return;
}
Player player = event.getPlayer();
FawePlayer<Object> fp = FawePlayer.wrap(player);
if (fp.getMeta("CFISettings") == null) return;
if (fp.getMeta("CFISettings") == null) {
return;
}
try {
if (event.getHand() == EquipmentSlot.OFF_HAND) return;
} catch (NoSuchFieldError | NoSuchMethodError ignored) {}
if (event.getHand() == EquipmentSlot.OFF_HAND) {
return;
}
} catch (NoSuchFieldError | NoSuchMethodError ignored) {
}
List<Block> target = player.getLastTwoTargetBlocks(null, 100);
if (target.isEmpty()) return;
if (target.isEmpty()) {
return;
}
Block targetBlock = target.get(0);
World world = player.getWorld();
@ -116,7 +131,8 @@ public class BukkitImageListener implements Listener {
if (!entities.isEmpty()) {
Action action = event.getAction();
boolean primary = action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK;
boolean primary =
action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK;
double minDist = Integer.MAX_VALUE;
ItemFrame minItemFrame = null;
@ -137,7 +153,9 @@ public class BukkitImageListener implements Listener {
}
if (minItemFrame != null) {
handleInteract(event, minItemFrame, primary);
if (event.isCancelled()) return;
if (event.isCancelled()) {
return;
}
}
}
}
@ -148,10 +166,14 @@ public class BukkitImageListener implements Listener {
}
private BukkitImageViewer get(HeightMapMCAGenerator generator) {
if (generator == null) return null;
if (generator == null) {
return null;
}
ImageViewer viewer = generator.getImageViewer();
if (!(viewer instanceof BukkitImageViewer)) return null;
if (!(viewer instanceof BukkitImageViewer)) {
return null;
}
return (BukkitImageViewer) viewer;
}
@ -161,14 +183,18 @@ public class BukkitImageListener implements Listener {
}
private void handleInteract(Event event, Player player, Entity entity, boolean primary) {
if (!(entity instanceof ItemFrame)) return;
if (!(entity instanceof ItemFrame)) {
return;
}
ItemFrame itemFrame = (ItemFrame) entity;
FawePlayer<Object> fp = FawePlayer.wrap(player);
CFICommands.CFISettings settings = fp.getMeta("CFISettings");
HeightMapMCAGenerator generator = settings == null ? null : settings.getGenerator();
BukkitImageViewer viewer = get(generator);
if (viewer == null) return;
if (viewer == null) {
return;
}
if (itemFrame.getRotation() != Rotation.NONE) {
itemFrame.setRotation(Rotation.NONE);
@ -178,7 +204,9 @@ public class BukkitImageListener implements Listener {
BrushTool tool;
try {
tool = session.getBrushTool(fp.getPlayer(), false);
} catch (InvalidToolBindException e) { return; }
} catch (InvalidToolBindException e) {
return;
}
ItemFrame[][] frames = viewer.getItemFrames();
if (frames == null || tool == null) {
@ -190,7 +218,9 @@ public class BukkitImageListener implements Listener {
BrushSettings context = primary ? tool.getPrimary() : tool.getSecondary();
Brush brush = context.getBrush();
if (brush == null) return;
if (brush == null) {
return;
}
tool.setContext(context);
if (event instanceof Cancellable) {
@ -208,7 +238,7 @@ public class BukkitImageListener implements Listener {
double zRat = Math.sin(yawRad) * a;
BlockFace facing = itemFrame.getFacing();
double thickness = 1/32D + 1/128D;
double thickness = 1 / 32D + 1 / 128D;
double modX = facing.getModX();
double modZ = facing.getModZ();
double dx = source.getX() - target.getX() - modX * thickness;
@ -225,8 +255,8 @@ public class BukkitImageListener implements Listener {
localX = (modZ) * (dx - offset * xRat);
}
double localY = dy - offset * Math.sin(pitchRad);
int localPixelX = (int)((localX + 0.5) * 128);
int localPixelY = (int)((localY + 0.5) * 128);
int localPixelX = (int) ((localX + 0.5) * 128);
int localPixelY = (int) ((localY + 0.5) * 128);
UUID uuid = itemFrame.getUniqueId();
for (int blockX = 0; blockX < frames.length; blockX++) {
@ -240,18 +270,25 @@ public class BukkitImageListener implements Listener {
int worldX = (int) (pixelX * width / (frames.length * 128d));
int worldZ = (int) (pixelY * length / (frames[0].length * 128d));
if (worldX < 0 || worldX > width || worldZ < 0 || worldZ > length) return;
if (worldX < 0 || worldX > width || worldZ < 0 || worldZ > length) {
return;
}
fp.runAction(() -> {
BlockVector3 wPos = BlockVector3.at(worldX, 0, worldZ);
viewer.refresh();
int topY = generator.getNearestSurfaceTerrainBlock(wPos.getBlockX(), wPos.getBlockZ(), 255, 0, 255);
int topY = generator
.getNearestSurfaceTerrainBlock(wPos.getBlockX(), wPos.getBlockZ(), 255,
0, 255);
wPos = wPos.withY(topY);
EditSession es = new EditSessionBuilder(fp.getWorld()).player(fp).combineStages(false).autoQueue(false).blockBag(null).limitUnlimited().build();
EditSession es = new EditSessionBuilder(fp.getWorld()).player(fp)
.combineStages(false).autoQueue(false).blockBag(null).limitUnlimited()
.build();
ExtentTraverser last = new ExtentTraverser(es.getExtent()).last();
if (last.get() instanceof FastWorldEditExtent) last = last.previous();
if (last.get() instanceof FastWorldEditExtent) {
last = last.previous();
}
last.setNext(generator);
try {
brush.build(es, wPos, context.getMaterial(), context.getSize());
@ -262,9 +299,6 @@ public class BukkitImageListener implements Listener {
viewer.view(generator);
}, true, true);
return;
}
}

View File

@ -2,7 +2,6 @@ package com.boydti.fawe.bukkit.listener;
import com.boydti.fawe.Fawe;
import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.FawePlayer;
import com.boydti.fawe.util.TaskManager;
import java.util.Iterator;
import java.util.Map;
@ -14,7 +13,9 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.plugin.Plugin;
@ -46,7 +47,6 @@ public class RenderListener implements Listener {
OFFSET = 8;
timeOut = 2;
} else {
int tpsSqr = tps32 * tps32;
OFFSET = 1 + (tps32 / 102400);
timeOut = 162 - (tps32 / 2560);
}
@ -75,7 +75,7 @@ public class RenderListener implements Listener {
}, 1);
}
public void setViewDistance(Player player, int value) {
private void setViewDistance(Player player, int value) {
UUID uuid = player.getUniqueId();
if (value == Settings.IMP.EXPERIMENTAL.DYNAMIC_CHUNK_RENDERING) {
views.remove(uuid);
@ -99,7 +99,7 @@ public class RenderListener implements Listener {
player.setViewDistance(value);
}
public int getViewDistance(Player player) {
private int getViewDistance(Player player) {
int[] value = views.get(player.getUniqueId());
return value == null ? Settings.IMP.EXPERIMENTAL.DYNAMIC_CHUNK_RENDERING : value[0];
}
@ -121,16 +121,15 @@ public class RenderListener implements Listener {
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event) {
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
setViewDistance(player, 1);
FawePlayer fp = FawePlayer.wrap(player);
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerLeave(org.bukkit.event.player.PlayerQuitEvent event) {
public void onPlayerLeave(PlayerQuitEvent event) {
Player player = event.getPlayer();
UUID uid = player.getUniqueId();
views.remove(uid);
}
}
}

View File

@ -1,25 +0,0 @@
package com.boydti.fawe.bukkit.listener;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.event.EventHandler;
import org.bukkit.event.server.TabCompleteEvent;
import java.util.List;
public class SyncTabCompleteListener extends ATabCompleteListener {
public SyncTabCompleteListener(WorldEditPlugin worldEdit) {
super(worldEdit);
}
@EventHandler
public void onTabComplete(TabCompleteEvent event) {
if (event.getSender() instanceof ConsoleCommandSender || event.getBuffer().startsWith("/")) {
List<String> result = this.onTab(event.getBuffer(), event.getSender());
if (result != null) {
event.setCompletions(result);
}
}
}
}

View File

@ -158,6 +158,7 @@ public class AsyncWorld extends DelegateFaweQueue implements World, HasFaweQueue
return parent;
}
@Override
public FaweQueue getQueue() {
return queue;
}
@ -174,6 +175,7 @@ public class AsyncWorld extends DelegateFaweQueue implements World, HasFaweQueue
return wrap(world);
}
@Override
public Operation commit() {
flush();
return null;
@ -1271,7 +1273,7 @@ public class AsyncWorld extends DelegateFaweQueue implements World, HasFaweQueue
public <T> void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, double arg5,
double arg6, double arg7, double arg8, T arg9, boolean arg10) {
parent.spawnParticle(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
}
@Override