3fd3544a36
The lighting queue spreads out the processing of light updates across multiple ticks based on how much free time the server has left at the end of the tick.
155 lines
7.7 KiB
Diff
155 lines
7.7 KiB
Diff
From f5d0f96c004c8bbae8fc9a036da32ffd36db3dad Mon Sep 17 00:00:00 2001
|
|
From: DemonWav <demonwav@gmail.com>
|
|
Date: Thu, 3 Mar 2016 01:44:39 -0600
|
|
Subject: [PATCH] Add Location support to tab completers (vanilla feature
|
|
missing in CraftBukkit)
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index 1f97e59..ca11cd7 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -262,4 +262,9 @@ public class PaperWorldConfig {
|
|
private void allChunksAreSlimeChunks() {
|
|
allChunksAreSlimeChunks = getBoolean("all-chunks-are-slime-chunks", false);
|
|
}
|
|
+
|
|
+ public boolean allowBlockLocationTabCompletion;
|
|
+ private void allowBlockLocationTabCompletion() {
|
|
+ allowBlockLocationTabCompletion = getBoolean("allow-block-location-tab-completion", true);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
index a30b019..6aaba5e 100644
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
@@ -1186,7 +1186,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
|
return arraylist;
|
|
}
|
|
*/
|
|
- return server.tabComplete(icommandlistener, s); // PAIL : todo args
|
|
+ return server.tabComplete(icommandlistener, s, blockposition); // PAIL : todo args // Paper - add Location arg
|
|
// CraftBukkit end
|
|
}
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index 5a24d38..8073c20 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -25,17 +25,11 @@ import javax.imageio.ImageIO;
|
|
|
|
import net.minecraft.server.*;
|
|
|
|
-import org.bukkit.BanList;
|
|
-import org.bukkit.Bukkit;
|
|
-import org.bukkit.ChatColor;
|
|
-import org.bukkit.GameMode;
|
|
-import org.bukkit.OfflinePlayer;
|
|
-import org.bukkit.Server;
|
|
-import org.bukkit.UnsafeValues;
|
|
+import net.minecraft.server.WorldType;
|
|
+import org.bukkit.*;
|
|
import org.bukkit.Warning.WarningState;
|
|
import org.bukkit.World;
|
|
import org.bukkit.World.Environment;
|
|
-import org.bukkit.WorldCreator;
|
|
import org.bukkit.boss.BarColor;
|
|
import org.bukkit.boss.BarFlag;
|
|
import org.bukkit.boss.BarStyle;
|
|
@@ -1602,21 +1596,38 @@ public final class CraftServer implements Server {
|
|
}
|
|
|
|
public List<String> tabComplete(net.minecraft.server.ICommandListener sender, String message) {
|
|
+ return tabComplete(sender, message, null); // Paper - location tab-completes. Original code here moved below
|
|
+ }
|
|
+
|
|
+ // Paper start - add BlockPosition support
|
|
+ /*
|
|
+ this code is copied, except for the noted change, from the original tabComplete(net.minecraft.server.ICommandListener sender, String message) method
|
|
+ */
|
|
+ public List<String> tabComplete(net.minecraft.server.ICommandListener sender, String message, BlockPosition blockPosition) {
|
|
if (!(sender instanceof EntityPlayer)) {
|
|
return ImmutableList.of();
|
|
}
|
|
|
|
Player player = ((EntityPlayer) sender).getBukkitEntity();
|
|
if (message.startsWith("/")) {
|
|
- return tabCompleteCommand(player, message);
|
|
+ return tabCompleteCommand(player, message, blockPosition);
|
|
} else {
|
|
return tabCompleteChat(player, message);
|
|
}
|
|
+ // Paper end
|
|
}
|
|
|
|
public List<String> tabCompleteCommand(Player player, String message) {
|
|
+ return tabCompleteCommand(player, message, null); // Paper - location tab-completes. Original code here moved below
|
|
+ }
|
|
+
|
|
+ // Paper start - add BlockPosition support
|
|
+ /*
|
|
+ this code is copied, except for the noted change, from the original tabComplete(net.minecraft.server.ICommandListener sender, String message) method
|
|
+ */
|
|
+ public List<String> tabCompleteCommand(Player player, String message, BlockPosition blockPosition) {
|
|
// Spigot Start
|
|
- if ( (org.spigotmc.SpigotConfig.tabComplete < 0 || message.length() <= org.spigotmc.SpigotConfig.tabComplete) && !message.contains( " " ) )
|
|
+ if ( (org.spigotmc.SpigotConfig.tabComplete < 0 || message.length() <= org.spigotmc.SpigotConfig.tabComplete) && !message.contains( " " ) )
|
|
{
|
|
return ImmutableList.of();
|
|
}
|
|
@@ -1624,7 +1635,14 @@ public final class CraftServer implements Server {
|
|
|
|
List<String> completions = null;
|
|
try {
|
|
- completions = getCommandMap().tabComplete(player, message.substring(1));
|
|
+ // send location info if presen
|
|
+ // completions = getCommandMap().tabComplete(player, message.substring(1));
|
|
+ if (blockPosition == null || !((CraftWorld) player.getWorld()).getHandle().paperConfig.allowBlockLocationTabCompletion) {
|
|
+ completions = getCommandMap().tabComplete(player, message.substring(1));
|
|
+ } else {
|
|
+ completions = getCommandMap().tabComplete(player, message.substring(1), new Location(player.getWorld(), blockPosition.getX(), blockPosition.getY(), blockPosition.getZ()));
|
|
+ }
|
|
+ // Paper end
|
|
} catch (CommandException ex) {
|
|
player.sendMessage(ChatColor.RED + "An internal error occurred while attempting to tab-complete this command");
|
|
getLogger().log(Level.SEVERE, "Exception when " + player.getName() + " attempted to tab complete " + message, ex);
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java
|
|
index 100d84a..a40218c 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java
|
|
@@ -7,6 +7,7 @@ import net.minecraft.server.*;
|
|
|
|
import org.apache.commons.lang.Validate;
|
|
import org.apache.logging.log4j.Level;
|
|
+import org.bukkit.Location;
|
|
import org.bukkit.command.BlockCommandSender;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.command.ConsoleCommandSender;
|
|
@@ -46,10 +47,23 @@ public final class VanillaCommandWrapper extends VanillaCommand {
|
|
|
|
@Override
|
|
public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException {
|
|
+ return tabComplete(sender, alias, args, null); // Paper - location tab-completes. Original code moved below
|
|
+ }
|
|
+
|
|
+ // Paper start - location tab-completes
|
|
+ /*
|
|
+ this code is copied, except for the noted change, from the original tabComplete(CommandSender sender, String alias, String[] args) method
|
|
+ */
|
|
+ @Override
|
|
+ public List<String> tabComplete(CommandSender sender, String alias, String[] args, Location location) throws IllegalArgumentException {
|
|
Validate.notNull(sender, "Sender cannot be null");
|
|
Validate.notNull(args, "Arguments cannot be null");
|
|
Validate.notNull(alias, "Alias cannot be null");
|
|
- return (List<String>) vanillaCommand.tabComplete(MinecraftServer.getServer(), getListener(sender), args, new BlockPosition(0, 0, 0));
|
|
+ if (location == null) { // PaperSpigot use location information if available
|
|
+ return (List<String>) vanillaCommand.tabComplete(MinecraftServer.getServer(), getListener(sender), args, new BlockPosition(0, 0, 0));
|
|
+ } else {
|
|
+ return (List<String>) vanillaCommand.tabComplete(MinecraftServer.getServer(), getListener(sender), args, new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ()));
|
|
+ }
|
|
}
|
|
|
|
public static CommandSender lastSender = null; // Nasty :(
|
|
--
|
|
2.7.1.windows.2
|
|
|