diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEvents.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEvents.java index f08ad7202..b13197be0 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEvents.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEvents.java @@ -935,11 +935,15 @@ public class PlayerEvents extends PlotListener implements Listener { PlotPlayer plotPlayer = BukkitUtil.getPlayer(event.getPlayer()); Location location = plotPlayer.getLocation(); PlotArea area = location.getPlotArea(); - if (area == null || !area.isPlotChat() || !plotPlayer.getAttribute("chat")) { + if (area == null) { return; } Plot plot = area.getPlot(location); - if (plot == null || !plot.getFlag(ChatFlag.class)) { + if (plot == null) { + return; + } + if (!((plot.getFlag(ChatFlag.class) && area.isPlotChat() && plotPlayer.getAttribute("chat")) + || area.isForcingPlotChat())) { return; } if (plot.isDenied(plotPlayer.getUUID())) { diff --git a/Core/src/main/java/com/plotsquared/core/command/Chat.java b/Core/src/main/java/com/plotsquared/core/command/Chat.java index 7048dc31e..e8c9e395c 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Chat.java +++ b/Core/src/main/java/com/plotsquared/core/command/Chat.java @@ -25,18 +25,24 @@ */ package com.plotsquared.core.command; +import com.plotsquared.core.configuration.Captions; import com.plotsquared.core.player.PlotPlayer; +import com.plotsquared.core.util.MainUtil; @CommandDeclaration(command = "chat", - description = "Toggle plot chat on or off", - usage = "/plot chat [on|off]", + description = "Toggles plot chat on or off", + usage = "/plot chat", permission = "plots.chat", category = CommandCategory.CHAT, requiredType = RequiredType.PLAYER) public class Chat extends SubCommand { @Override public boolean onCommand(PlotPlayer player, String[] args) { - MainCommand.getInstance().toggle.chat(this, player, new String[0], null, null); + if (player.getPlotAreaAbs().isForcingPlotChat()) { + MainUtil.sendMessage(player, Captions.PLOT_CHAT_FORCED); + return true; + } + MainCommand.getInstance().toggle.chat(this, player, args, null, null); return true; } } diff --git a/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java b/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java index e4248e6f5..fcf35b783 100644 --- a/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java +++ b/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java @@ -100,7 +100,8 @@ public abstract class PlotArea { @Getter private boolean mobSpawning = false; @Getter private boolean mobSpawnerSpawning = false; @Getter private BiomeType plotBiome = BiomeTypes.FOREST; - @Getter private boolean plotChat = false; + @Getter private boolean plotChat = true; + @Getter private boolean forcingPlotChat = false; @Getter private boolean schematicClaimSpecify = false; @Getter private boolean schematicOnClaim = false; @Getter private String schematicFile = "null"; @@ -276,6 +277,7 @@ public abstract class PlotArea { } } this.plotChat = config.getBoolean("chat.enabled"); + this.forcingPlotChat = config.getBoolean("chat.forced"); this.worldBorder = config.getBoolean("world.border"); this.maxBuildHeight = config.getInt("world.max_height"); this.minBuildHeight = config.getInt("world.min_height"); @@ -389,6 +391,7 @@ public abstract class PlotArea { options.put("economy.prices.merge", 100); options.put("economy.prices.sell", 100); options.put("chat.enabled", this.isPlotChat()); + options.put("chat.forced", this.isForcingPlotChat()); options.put("flags.default", null); options.put("event.spawn.egg", this.isSpawnEggs()); options.put("event.spawn.custom", this.isSpawnCustom());