Only allow remote in loaded chunks.

This commit is contained in:
Brianna 2020-08-12 16:15:34 -05:00
parent 15059ad7c6
commit b529b19678
2 changed files with 9 additions and 11 deletions

View File

@ -25,6 +25,7 @@ public class CommandRemote extends AbstractCommand {
@Override @Override
protected ReturnType runCommand(CommandSender sender, String... args) { protected ReturnType runCommand(CommandSender sender, String... args) {
Player player = ((Player) sender);
if (!Settings.REMOTE.getBoolean() || !sender.hasPermission("EpicFurnaces.Remote")) { if (!Settings.REMOTE.getBoolean() || !sender.hasPermission("EpicFurnaces.Remote")) {
plugin.getLocale().getMessage("event.general.nopermission").sendPrefixedMessage(sender); plugin.getLocale().getMessage("event.general.nopermission").sendPrefixedMessage(sender);
return ReturnType.FAILURE; return ReturnType.FAILURE;
@ -40,21 +41,17 @@ public class CommandRemote extends AbstractCommand {
return ReturnType.FAILURE; return ReturnType.FAILURE;
} }
if (!furnace.isInLoadedChunk()) {
plugin.getLocale().getMessage("event.remote.notloaded").sendPrefixedMessage(sender);
return ReturnType.FAILURE;
}
for (UUID uuid : furnace.getAccessList()) { for (UUID uuid : furnace.getAccessList()) {
if (!uuid.equals(((Player) sender).getUniqueId())) continue; if (!uuid.equals(((Player) sender).getUniqueId())) continue;
Block b = furnace.getLocation().getBlock(); Block b = furnace.getLocation().getBlock();
b.getChunk().load();
org.bukkit.block.Furnace furnaceBlock = (org.bukkit.block.Furnace) b.getState(); org.bukkit.block.Furnace furnaceBlock = (org.bukkit.block.Furnace) b.getState();
Inventory inventory = furnaceBlock.getInventory(); Inventory inventory = furnaceBlock.getInventory();
((Player) sender).openInventory(inventory); player.openInventory(inventory);
new BukkitRunnable() {
public void run() {
if (inventory.getViewers().size() == 0) {
b.getChunk().unload();
this.cancel();
}
}
}.runTaskTimer(plugin, 5L, 5L);
return ReturnType.SUCCESS; return ReturnType.SUCCESS;
} }
plugin.getLocale().getMessage("event.general.nopermission").sendPrefixedMessage(sender); plugin.getLocale().getMessage("event.general.nopermission").sendPrefixedMessage(sender);

View File

@ -64,5 +64,6 @@ event:
remote: remote:
enter: '&7Enter a unique nickname for the furnace.' enter: '&7Enter a unique nickname for the furnace.'
notfound: '&cRemote furnace not found.' notfound: '&cRemote furnace not found.'
notloaded: '&cThat furnace isn't in a loaded chunk...'
nicknamesuccess: '&aNickname set successfully.' nicknamesuccess: '&aNickname set successfully.'
nicknameinuse: '&cThat nickname is already in use.' nicknameinuse: '&cThat nickname is already in use.'