mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-21 20:56:45 +01:00
Merge branch 'master' into breaking
# Conflicts: # Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotRateEvent.java # Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEventUtil.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/PlotSquared.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Add.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Auto.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Delete.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Kick.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Load.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Music.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Owner.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Rate.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Reload.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/SchematicCmd.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Trust.java # Core/src/main/java/com/github/intellectualsites/plotsquared/plot/flag/GameModeFlag.java # Core/src/main/java/com/intellectualcrafters/plot/commands/Clear.java # Core/src/main/java/com/intellectualcrafters/plot/commands/PluginCmd.java # Core/src/main/java/com/intellectualcrafters/plot/commands/Relight.java # Core/src/main/java/com/intellectualcrafters/plot/commands/SetHome.java # Core/src/main/java/com/intellectualcrafters/plot/config/C.java # Core/src/main/java/com/intellectualcrafters/plot/config/Configuration.java # Core/src/main/java/com/intellectualcrafters/plot/config/Settings.java # Core/src/test/java/com/github/intellectualsites/plotsquared/plot/util/EventUtilTest.java # Nukkit/src/main/java/com/plotsquared/nukkit/util/NukkitEventUtil.java # README.md # Sponge/src/main/java/com/github/intellectualsites/plotsquared/sponge/events/PlotRateEvent.java # Sponge/src/main/java/com/github/intellectualsites/plotsquared/sponge/util/SpongeSchematicHandler.java # Sponge/src/main/java/com/github/intellectualsites/plotsquared/sponge/util/block/SpongeLocalQueue.java # Sponge/src/main/java/com/plotsquared/sponge/util/SpongeEventUtil.java
This commit is contained in:
commit
8cd54929e7
2
.github/ISSUE_TEMPLATE.md
vendored
2
.github/ISSUE_TEMPLATE.md
vendored
@ -1,7 +1,7 @@
|
||||
# Bug report template
|
||||
<!--- In order to create a valid issue report you have to follow this template. -->
|
||||
<!--- Incomplete reports might be marked as invalid. -->
|
||||
<!--- You may remove it if you are posting a feature request. -->
|
||||
<!-- Feature requests and enhancements may be suggested at https://github.com/IntellectualSites/PlotSquaredSuggestions. -->
|
||||
**Debug paste link:**
|
||||
<!--- Enter /plot debugpaste in game or in your console and copy the output here -->
|
||||
|
||||
|
15
.github/auto-comment.yml
vendored
Normal file
15
.github/auto-comment.yml
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
# Comment to a new issue.
|
||||
issueOpened: >
|
||||
Thank your for raising a issue. We will try and get back to you as soon as possible.
|
||||
|
||||
Please make sure that you followed the issue template, and provied all neccessary information.
|
||||
Failure to do so will prevent us from resolving the issue in a timely manner.
|
||||
|
||||
Please note that suggestions are now to be submitted to https://git.io/fN5B4 rather than this issue tracker!
|
||||
|
||||
pullRequestOpened: >
|
||||
Thank your for raising your pull request.
|
||||
|
||||
Please make sure you have followed our contributing guidelines and to take an extra look at the code to make sure that it is functional!
|
||||
|
||||
We will review it as soon as possible!
|
16
.github/stale.yml
vendored
Normal file
16
.github/stale.yml
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 60
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- [‼] high priority
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: Old
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
@ -56,8 +56,7 @@ import static com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils
|
||||
|
||||
public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
||||
|
||||
@Getter
|
||||
private static WorldEdit worldEdit;
|
||||
@Getter private static WorldEdit worldEdit;
|
||||
private static Map<String, Plugin> pluginMap;
|
||||
|
||||
static {
|
||||
@ -125,7 +124,8 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
|
||||
} catch (NumberFormatException e) {
|
||||
e.printStackTrace();
|
||||
PlotSquared.debug(StringMan.getString(Bukkit.getBukkitVersion()));
|
||||
PlotSquared.debug(StringMan.getString(Bukkit.getBukkitVersion().split("-")[0].split("\\.")));
|
||||
PlotSquared.debug(
|
||||
StringMan.getString(Bukkit.getBukkitVersion().split("-")[0].split("\\.")));
|
||||
return new int[] {1, 13, 0};
|
||||
}
|
||||
}
|
||||
@ -451,7 +451,8 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
|
||||
Entity passenger = entity.getPassenger();
|
||||
if (!(passenger instanceof Player) && entity
|
||||
.getMetadata("keep").isEmpty()) {
|
||||
if (entity.hasMetadata("ps-tmp-teleport")) {
|
||||
if (entity
|
||||
.hasMetadata("ps-tmp-teleport")) {
|
||||
continue;
|
||||
}
|
||||
iterator.remove();
|
||||
@ -502,7 +503,8 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
|
||||
&& (currentPlotId == null || !area
|
||||
.getPlot(originalPlotId)
|
||||
.equals(area.getPlot(currentPlotId)))) {
|
||||
if (entity.hasMetadata("ps-tmp-teleport")) {
|
||||
if (entity
|
||||
.hasMetadata("ps-tmp-teleport")) {
|
||||
continue;
|
||||
}
|
||||
iterator.remove();
|
||||
@ -540,12 +542,13 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
|
||||
}, 20);
|
||||
}
|
||||
|
||||
@Override @Nullable public final ChunkGenerator getDefaultWorldGenerator(final String world, final String id) {
|
||||
@Override @Nullable
|
||||
public final ChunkGenerator getDefaultWorldGenerator(final String world, final String id) {
|
||||
if (Settings.Enabled_Components.PLOTME_CONVERTER) {
|
||||
initPlotMeConverter();
|
||||
Settings.Enabled_Components.PLOTME_CONVERTER = false;
|
||||
}
|
||||
final IndependentPlotGenerator result;
|
||||
final IndependentPlotGenerator result;
|
||||
if (id != null && id.equalsIgnoreCase("single")) {
|
||||
result = new SingleWorldGenerator();
|
||||
} else {
|
||||
@ -671,7 +674,8 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override @Nullable public GeneratorWrapper<?> getGenerator(@NonNull final String world, @Nullable final String name) {
|
||||
@Override @Nullable public GeneratorWrapper<?> getGenerator(@NonNull final String world,
|
||||
@Nullable final String name) {
|
||||
if (name == null) {
|
||||
return null;
|
||||
}
|
||||
@ -854,8 +858,8 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public GeneratorWrapper<?> wrapPlotGenerator(@Nullable final String world, @NonNull final IndependentPlotGenerator generator) {
|
||||
@Override public GeneratorWrapper<?> wrapPlotGenerator(@Nullable final String world,
|
||||
@NonNull final IndependentPlotGenerator generator) {
|
||||
return new BukkitPlotGenerator(generator);
|
||||
}
|
||||
|
||||
|
@ -155,7 +155,8 @@ public class FancyMessage
|
||||
// Assume composite type
|
||||
// The only composite type we currently store is another FancyMessage
|
||||
// Therefore, recursion time!
|
||||
component.hoverActionData = deserialize(object.get("value").toString() /* This should properly serialize the JSON object as a JSON string */);
|
||||
component.hoverActionData = deserialize(object.get("value")
|
||||
.toString() /* This should properly serialize the JSON object as a JSON string */);
|
||||
}
|
||||
} else if (entry.getKey().equals("insertion")) {
|
||||
component.insertionData = entry.getValue().getAsString();
|
||||
@ -622,8 +623,7 @@ public class FancyMessage
|
||||
* @return This builder instance.
|
||||
*/
|
||||
public FancyMessage formattedTooltip(final Iterable<FancyMessage> lines) {
|
||||
return formattedTooltip(
|
||||
ArrayWrapper.toArray(lines, FancyMessage.class));
|
||||
return formattedTooltip(ArrayWrapper.toArray(lines, FancyMessage.class));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -664,8 +664,7 @@ public class FancyMessage
|
||||
* @return This builder instance.
|
||||
*/
|
||||
public FancyMessage translationReplacements(final Iterable<FancyMessage> replacements) {
|
||||
return translationReplacements(
|
||||
ArrayWrapper.toArray(replacements, FancyMessage.class));
|
||||
return translationReplacements(ArrayWrapper.toArray(replacements, FancyMessage.class));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -48,7 +48,7 @@ public abstract class TextualComponent implements Cloneable {
|
||||
|
||||
/**
|
||||
* Create a textual component representing a string literal.
|
||||
* <p>
|
||||
*
|
||||
* <p>This is the default type of textual component when a single string
|
||||
* literal is given to a method.
|
||||
*
|
||||
@ -98,7 +98,7 @@ public abstract class TextualComponent implements Cloneable {
|
||||
/**
|
||||
* Create a textual component representing a scoreboard value.
|
||||
* The client will see the score of the specified player for the specified objective as the text represented by this component.
|
||||
* <p>
|
||||
*
|
||||
* <p><b>This method is currently guaranteed to throw an {@code UnsupportedOperationException}
|
||||
* as it is only supported on snapshot clients.</b>
|
||||
*
|
||||
@ -234,7 +234,7 @@ public abstract class TextualComponent implements Cloneable {
|
||||
/**
|
||||
* Internal class used to represent a text component with a nested JSON
|
||||
* value.
|
||||
* <p>
|
||||
*
|
||||
* <p>Exception validating done is on keys and values.
|
||||
*/
|
||||
private static final class ComplexTextTypeComponent extends TextualComponent
|
||||
|
@ -113,8 +113,8 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
|
||||
}
|
||||
}
|
||||
if (name.isEmpty()) {
|
||||
PlotSquared
|
||||
.log("&cCould not identify owner for plot: " + id + " -> '" + name + "'");
|
||||
PlotSquared.log(
|
||||
"&cCould not identify owner for plot: " + id + " -> '" + name + "'");
|
||||
missing++;
|
||||
continue;
|
||||
}
|
||||
@ -129,8 +129,10 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
|
||||
}
|
||||
if (missing > 0) {
|
||||
PlotSquared.log("&cSome names could not be identified:");
|
||||
PlotSquared.log("&7 - Empty quotes mean PlotMe just stored an unowned plot in the database");
|
||||
PlotSquared.log("&7 - Names you have never seen before could be from people mistyping commands");
|
||||
PlotSquared
|
||||
.log("&7 - Empty quotes mean PlotMe just stored an unowned plot in the database");
|
||||
PlotSquared.log(
|
||||
"&7 - Names you have never seen before could be from people mistyping commands");
|
||||
PlotSquared.log(
|
||||
"&7 - Converting from a non-uuid version of PlotMe can't identify owners if the playerdata files are deleted (these plots will "
|
||||
+ "remain unknown until the player connects)");
|
||||
@ -232,7 +234,7 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
|
||||
}
|
||||
|
||||
@Override public boolean accepts(String version) {
|
||||
return version == null || PlotSquared.get().canUpdate(version, "0.17.0") || PlotSquared.get()
|
||||
.canUpdate("0.999.999", version);
|
||||
return version == null || PlotSquared.get().canUpdate(version, "0.17.0") || PlotSquared
|
||||
.get().canUpdate("0.999.999", version);
|
||||
}
|
||||
}
|
||||
|
@ -47,7 +47,8 @@ public class LikePlotMeConverter {
|
||||
}
|
||||
|
||||
private void sendMessage(String message) {
|
||||
PlotSquared.debug("&3PlotMe&8->&3" + PlotSquared.imp().getPluginName() + "&8: &7" + message);
|
||||
PlotSquared
|
||||
.debug("&3PlotMe&8->&3" + PlotSquared.imp().getPluginName() + "&8: &7" + message);
|
||||
}
|
||||
|
||||
public String getPlotMePath() {
|
||||
@ -126,7 +127,8 @@ public class LikePlotMeConverter {
|
||||
PlotSquared.get().worlds.set("worlds." + world + ".wall.block_claimed", claimed);
|
||||
String floor =
|
||||
plotmeDgYml.getString("worlds." + plotMeWorldName + ".PlotFloorBlock", "2"); //
|
||||
PlotSquared.get().worlds.set("worlds." + world + ".plot.floor", Collections.singletonList(floor));
|
||||
PlotSquared.get().worlds
|
||||
.set("worlds." + world + ".plot.floor", Collections.singletonList(floor));
|
||||
String filling = plotmeDgYml.getString("worlds." + plotMeWorldName + ".FillBlock", "3"); //
|
||||
PlotSquared.get().worlds
|
||||
.set("worlds." + world + ".plot.filling", Collections.singletonList(filling));
|
||||
@ -330,8 +332,8 @@ public class LikePlotMeConverter {
|
||||
// load world with MV
|
||||
Bukkit.getServer()
|
||||
.dispatchCommand(Bukkit.getServer().getConsoleSender(),
|
||||
"mv import " + actualWorldName + " normal -g " + PlotSquared
|
||||
.imp().getPluginName());
|
||||
"mv import " + actualWorldName + " normal -g "
|
||||
+ PlotSquared.imp().getPluginName());
|
||||
} else if (mw) {
|
||||
// unload world with MW
|
||||
Bukkit.getServer()
|
||||
@ -345,15 +347,15 @@ public class LikePlotMeConverter {
|
||||
// load world with MW
|
||||
Bukkit.getServer()
|
||||
.dispatchCommand(Bukkit.getServer().getConsoleSender(),
|
||||
"mw create " + actualWorldName + " plugin:" + PlotSquared
|
||||
.imp()
|
||||
.getPluginName());
|
||||
"mw create " + actualWorldName + " plugin:"
|
||||
+ PlotSquared.imp().getPluginName());
|
||||
} else {
|
||||
// Load using Bukkit API
|
||||
// - User must set generator manually
|
||||
Bukkit.getServer().unloadWorld(world, true);
|
||||
World myWorld = WorldCreator.name(actualWorldName).generator(
|
||||
new BukkitPlotGenerator(PlotSquared.get().IMP.getDefaultGenerator()))
|
||||
new BukkitPlotGenerator(
|
||||
PlotSquared.get().IMP.getDefaultGenerator()))
|
||||
.createWorld();
|
||||
myWorld.save();
|
||||
}
|
||||
|
@ -58,7 +58,8 @@ public class PlotMeConnector_017 extends APlotMeConnector {
|
||||
PlotSquared.debug("=======================================");
|
||||
PlotSquared.debug(
|
||||
"&8 - &7The database does not match the version specified in the PlotMe config");
|
||||
PlotSquared.debug("&8 - &7Please correct this, or if you are unsure, the most common is 0.16.3");
|
||||
PlotSquared.debug(
|
||||
"&8 - &7Please correct this, or if you are unsure, the most common is 0.16.3");
|
||||
return null;
|
||||
}
|
||||
boolean checkUUID = DBFunc.hasColumn(resultSet, "ownerID");
|
||||
@ -142,7 +143,8 @@ public class PlotMeConnector_017 extends APlotMeConnector {
|
||||
int key = resultSet.getInt("plot_id");
|
||||
Plot plot = plots.get(key);
|
||||
if (plot == null) {
|
||||
PlotSquared.log("&6Denied (" + key + ") references deleted plot; ignoring entry.");
|
||||
PlotSquared
|
||||
.log("&6Denied (" + key + ") references deleted plot; ignoring entry.");
|
||||
continue;
|
||||
}
|
||||
String player = resultSet.getString("player");
|
||||
@ -159,7 +161,8 @@ public class PlotMeConnector_017 extends APlotMeConnector {
|
||||
int key = resultSet.getInt("plot_id");
|
||||
Plot plot = plots.get(key);
|
||||
if (plot == null) {
|
||||
PlotSquared.log("&6Allowed (" + key + ") references deleted plot; ignoring entry.");
|
||||
PlotSquared
|
||||
.log("&6Allowed (" + key + ") references deleted plot; ignoring entry.");
|
||||
continue;
|
||||
}
|
||||
String player = resultSet.getString("player");
|
||||
|
@ -0,0 +1,105 @@
|
||||
package com.github.intellectualsites.plotsquared.bukkit.events;
|
||||
|
||||
import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.PlotId;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class PlotChangeOwnerEvent extends PlotEvent implements Cancellable {
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private final Player initiator;
|
||||
private final UUID newOwner;
|
||||
private final UUID oldOwner;
|
||||
private boolean hasOldOwner;
|
||||
private boolean cancelled;
|
||||
|
||||
/**
|
||||
* PlotChangeOwnerEvent: Called when a plot's owner is change.
|
||||
*
|
||||
* @param newOwner The new owner of the plot
|
||||
* @param oldOwner The old owner of the plot
|
||||
* @param plot The plot having its owner changed
|
||||
*/
|
||||
public PlotChangeOwnerEvent(Player initiator, Plot plot, UUID oldOwner, UUID newOwner,
|
||||
boolean hasOldOwner) {
|
||||
super(plot);
|
||||
this.initiator = initiator;
|
||||
this.newOwner = newOwner;
|
||||
this.oldOwner = oldOwner;
|
||||
this.hasOldOwner = hasOldOwner;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the PlotId.
|
||||
*
|
||||
* @return PlotId
|
||||
*/
|
||||
public PlotId getPlotId() {
|
||||
return getPlot().getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the world name.
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
public String getWorld() {
|
||||
return getPlot().getWorldName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the change-owner initator
|
||||
*
|
||||
* @return Player
|
||||
*/
|
||||
public Player getInitiator() {
|
||||
return this.initiator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the old owner of the plot. Null if not exists.
|
||||
*
|
||||
* @return UUID
|
||||
*/
|
||||
public UUID getOldOwner() {
|
||||
return this.oldOwner;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the new owner of the plot
|
||||
*
|
||||
* @return UUID
|
||||
*/
|
||||
public UUID getNewOwner() {
|
||||
return this.newOwner;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get if the plot had an old owner
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean hasOldOwner() {
|
||||
return this.hasOldOwner;
|
||||
}
|
||||
|
||||
@Override public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
@Override public boolean isCancelled() {
|
||||
return this.cancelled;
|
||||
}
|
||||
|
||||
@Override public void setCancelled(boolean b) {
|
||||
this.cancelled = b;
|
||||
}
|
||||
}
|
@ -3,13 +3,15 @@ package com.github.intellectualsites.plotsquared.bukkit.events;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.Rating;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
public class PlotRateEvent extends PlotEvent {
|
||||
public class PlotRateEvent extends PlotEvent implements Cancellable {
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private final PlotPlayer rater;
|
||||
private Rating rating;
|
||||
private boolean cancelled = false;
|
||||
|
||||
public PlotRateEvent(PlotPlayer rater, Rating rating, Plot plot) {
|
||||
super(plot);
|
||||
@ -37,4 +39,11 @@ public class PlotRateEvent extends PlotEvent {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
@Override public boolean isCancelled() {
|
||||
return this.cancelled;
|
||||
}
|
||||
|
||||
@Override public void setCancelled(boolean cancelled) {
|
||||
this.cancelled = cancelled;
|
||||
}
|
||||
}
|
||||
|
@ -117,7 +117,8 @@ public class BukkitPlotGenerator extends ChunkGenerator
|
||||
|
||||
@Override
|
||||
public PlotArea getNewPlotArea(String world, String id, PlotId min, PlotId max) {
|
||||
return PlotSquared.get().IMP.getDefaultGenerator().getNewPlotArea(world, id, min, max);
|
||||
return PlotSquared.get().IMP.getDefaultGenerator()
|
||||
.getNewPlotArea(world, id, min, max);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -226,7 +226,8 @@ public class ChunkListener implements Listener {
|
||||
if (!chunk.isLoaded()) {
|
||||
Bukkit.getScheduler().cancelTask(TaskManager.tasks.get(currentIndex));
|
||||
TaskManager.tasks.remove(currentIndex);
|
||||
PlotSquared.debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
|
||||
PlotSquared
|
||||
.debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
|
||||
chunk.unload(true, true);
|
||||
return;
|
||||
}
|
||||
@ -234,7 +235,8 @@ public class ChunkListener implements Listener {
|
||||
if (tiles.length == 0) {
|
||||
Bukkit.getScheduler().cancelTask(TaskManager.tasks.get(currentIndex));
|
||||
TaskManager.tasks.remove(currentIndex);
|
||||
PlotSquared.debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
|
||||
PlotSquared
|
||||
.debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
|
||||
chunk.unload(true, true);
|
||||
return;
|
||||
}
|
||||
@ -244,7 +246,8 @@ public class ChunkListener implements Listener {
|
||||
if (i >= tiles.length) {
|
||||
Bukkit.getScheduler().cancelTask(TaskManager.tasks.get(currentIndex));
|
||||
TaskManager.tasks.remove(currentIndex);
|
||||
PlotSquared.debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
|
||||
PlotSquared
|
||||
.debug(C.PREFIX.s() + "&aSuccessfully processed and unloaded chunk!");
|
||||
chunk.unload(true, true);
|
||||
return;
|
||||
}
|
||||
@ -268,15 +271,15 @@ public class ChunkListener implements Listener {
|
||||
ent.remove();
|
||||
}
|
||||
}
|
||||
PlotSquared
|
||||
.debug(C.PREFIX.s() + "&a detected unsafe chunk and processed: " + (chunk.getX() << 4)
|
||||
+ "," + (chunk.getX() << 4));
|
||||
PlotSquared.debug(
|
||||
C.PREFIX.s() + "&a detected unsafe chunk and processed: " + (chunk.getX() << 4)
|
||||
+ "," + (chunk.getX() << 4));
|
||||
}
|
||||
if (tiles.length > Settings.Chunk_Processor.MAX_TILES) {
|
||||
if (unload) {
|
||||
PlotSquared
|
||||
.debug(C.PREFIX.s() + "&c detected unsafe chunk: " + (chunk.getX() << 4) + "," + (
|
||||
chunk.getX() << 4));
|
||||
PlotSquared.debug(
|
||||
C.PREFIX.s() + "&c detected unsafe chunk: " + (chunk.getX() << 4) + "," + (
|
||||
chunk.getX() << 4));
|
||||
cleanChunk(chunk);
|
||||
return true;
|
||||
}
|
||||
|
@ -909,8 +909,10 @@ public class PlayerEvents extends PlotListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
||||
public void onChat(AsyncPlayerChatEvent event) {
|
||||
@EventHandler(priority = EventPriority.LOW) public void onChat(AsyncPlayerChatEvent event) {
|
||||
if (event.isCancelled())
|
||||
return;
|
||||
|
||||
PlotPlayer plotPlayer = BukkitUtil.getPlayer(event.getPlayer());
|
||||
Location location = plotPlayer.getLocation();
|
||||
PlotArea area = location.getPlotArea();
|
||||
@ -2100,7 +2102,8 @@ public class PlayerEvents extends PlotListener implements Listener {
|
||||
return;
|
||||
}
|
||||
if (Settings.Enabled_Components.KILL_ROAD_VEHICLES) {
|
||||
entity.setMetadata("plot", new FixedMetadataValue((Plugin) PlotSquared.get().IMP, plot));
|
||||
entity
|
||||
.setMetadata("plot", new FixedMetadataValue((Plugin) PlotSquared.get().IMP, plot));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2332,7 +2335,8 @@ public class PlayerEvents extends PlotListener implements Listener {
|
||||
@SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onEntityCombustByEntity(EntityCombustByEntityEvent event) {
|
||||
EntityDamageByEntityEvent eventChange = null;
|
||||
if (PlotSquared.get().checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_11_0)) {
|
||||
if (PlotSquared.get()
|
||||
.checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_11_0)) {
|
||||
eventChange = new EntityDamageByEntityEvent(event.getCombuster(), event.getEntity(),
|
||||
EntityDamageEvent.DamageCause.FIRE_TICK, (double) event.getDuration());
|
||||
} else {
|
||||
|
@ -42,7 +42,8 @@ public class PlayerEvents_1_8 extends PlotListener implements Listener {
|
||||
return;
|
||||
}
|
||||
HumanEntity entity = event.getWhoClicked();
|
||||
if (!(entity instanceof Player) || !PlotSquared.get().hasPlotArea(entity.getWorld().getName())) {
|
||||
if (!(entity instanceof Player) || !PlotSquared.get()
|
||||
.hasPlotArea(entity.getWorld().getName())) {
|
||||
return;
|
||||
}
|
||||
Player player = (Player) entity;
|
||||
|
@ -7,18 +7,15 @@ import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
@Getter
|
||||
public abstract class EntityWrapper {
|
||||
|
||||
private final Entity entity;
|
||||
private final EntityType type;
|
||||
|
||||
public double x;
|
||||
public double y;
|
||||
public double z;
|
||||
@Getter public abstract class EntityWrapper {
|
||||
|
||||
protected final float yaw;
|
||||
protected final float pitch;
|
||||
private final Entity entity;
|
||||
private final EntityType type;
|
||||
public double x;
|
||||
public double y;
|
||||
public double z;
|
||||
|
||||
EntityWrapper(@NonNull final Entity entity) {
|
||||
this.entity = entity;
|
||||
|
@ -53,7 +53,8 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
||||
if (depth == 1) {
|
||||
return;
|
||||
}
|
||||
if (PlotSquared.get().checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_10_0)
|
||||
if (PlotSquared.get()
|
||||
.checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_10_0)
|
||||
|| entity instanceof ArmorStand) {
|
||||
if (!entity.hasGravity()) {
|
||||
this.noGravity = true;
|
||||
@ -62,8 +63,8 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
||||
switch (entity.getType()) {
|
||||
case ARROW:
|
||||
case BOAT:
|
||||
if (PlotSquared
|
||||
.get().checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
|
||||
if (PlotSquared.get()
|
||||
.checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
|
||||
Boat boat = (Boat) entity;
|
||||
this.dataByte = getOrdinal(TreeSpecies.values(), boat.getWoodType());
|
||||
}
|
||||
@ -188,8 +189,8 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
||||
storeLiving((LivingEntity) entity);
|
||||
return;
|
||||
case SKELETON:
|
||||
this.dataByte =
|
||||
getOrdinal(Skeleton.SkeletonType.values(), ((Skeleton) entity).getSkeletonType());
|
||||
this.dataByte = getOrdinal(Skeleton.SkeletonType.values(),
|
||||
((Skeleton) entity).getSkeletonType());
|
||||
storeLiving((LivingEntity) entity);
|
||||
return;
|
||||
case ARMOR_STAND:
|
||||
@ -323,7 +324,8 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
||||
|
||||
void restoreEquipment(LivingEntity entity) {
|
||||
EntityEquipment equipment = entity.getEquipment();
|
||||
if (PlotSquared.get().checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
|
||||
if (PlotSquared.get()
|
||||
.checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
|
||||
equipment.setItemInMainHand(this.lived.mainHand);
|
||||
equipment.setItemInOffHand(this.lived.offHand);
|
||||
} else {
|
||||
@ -367,7 +369,8 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
||||
}
|
||||
|
||||
void storeEquipment(EntityEquipment equipment) {
|
||||
if (PlotSquared.get().checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
|
||||
if (PlotSquared.get()
|
||||
.checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
|
||||
this.lived.mainHand = equipment.getItemInMainHand().clone();
|
||||
this.lived.offHand = equipment.getItemInOffHand().clone();
|
||||
} else {
|
||||
@ -412,8 +415,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
||||
this.tamed.tamed = tamed.isTamed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Entity spawn(World world, int xOffset, int zOffset) {
|
||||
@Override public Entity spawn(World world, int xOffset, int zOffset) {
|
||||
Location location = new Location(world, this.x + xOffset, this.y, this.z + zOffset);
|
||||
location.setYaw(this.yaw);
|
||||
location.setPitch(this.pitch);
|
||||
@ -459,7 +461,8 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
||||
if (this.depth == 1) {
|
||||
return entity;
|
||||
}
|
||||
if (PlotSquared.get().checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_10_0)
|
||||
if (PlotSquared.get()
|
||||
.checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_10_0)
|
||||
|| entity instanceof ArmorStand) {
|
||||
if (this.noGravity) {
|
||||
entity.setGravity(false);
|
||||
@ -468,8 +471,8 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
||||
switch (entity.getType()) {
|
||||
case ARROW:
|
||||
case BOAT:
|
||||
if (PlotSquared
|
||||
.get().checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
|
||||
if (PlotSquared.get()
|
||||
.checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_0)) {
|
||||
Boat boat = (Boat) entity;
|
||||
boat.setWoodType(TreeSpecies.values()[dataByte]);
|
||||
}
|
||||
@ -592,7 +595,8 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
||||
return entity;
|
||||
case SKELETON:
|
||||
if (this.dataByte != 0) {
|
||||
((Skeleton) entity).setSkeletonType(Skeleton.SkeletonType.values()[this.dataByte]);
|
||||
((Skeleton) entity)
|
||||
.setSkeletonType(Skeleton.SkeletonType.values()[this.dataByte]);
|
||||
}
|
||||
storeLiving((LivingEntity) entity);
|
||||
return entity;
|
||||
@ -703,7 +707,8 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
||||
}
|
||||
}
|
||||
|
||||
public void saveEntity() {}
|
||||
public void saveEntity() {
|
||||
}
|
||||
|
||||
private byte getOrdinal(Object[] list, Object value) {
|
||||
for (byte i = 0; i < list.length; i++) {
|
||||
|
@ -52,10 +52,11 @@ public class TeleportEntityWrapper extends EntityWrapper {
|
||||
this.getEntity().setInvulnerable(true);
|
||||
this.fireTicksOld = this.getEntity().getFireTicks();
|
||||
this.livingTicksOld = this.getEntity().getTicksLived();
|
||||
this.getEntity().setMetadata("ps-tmp-teleport", new FixedMetadataValue(
|
||||
BukkitMain.getPlugin(BukkitMain.class), oldLocation));
|
||||
this.getEntity().setMetadata("ps-tmp-teleport",
|
||||
new FixedMetadataValue(BukkitMain.getPlugin(BukkitMain.class), oldLocation));
|
||||
final Chunk newChunk = getNewChunk();
|
||||
this.getEntity().teleport(new Location(newChunk.getWorld(), newChunk.getX() << 4, 5000, newChunk.getZ() << 4));
|
||||
this.getEntity().teleport(
|
||||
new Location(newChunk.getWorld(), newChunk.getX() << 4, 5000, newChunk.getZ() << 4));
|
||||
}
|
||||
|
||||
private Chunk getNewChunk() {
|
||||
|
@ -12,8 +12,8 @@ import org.bukkit.entity.Player;
|
||||
private final boolean valid;
|
||||
|
||||
public DefaultTitle_111() {
|
||||
this.valid = PlotSquared
|
||||
.get().checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_11_0);
|
||||
this.valid = PlotSquared.get()
|
||||
.checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_11_0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -101,13 +101,16 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
return chunks;
|
||||
}
|
||||
|
||||
@Override public boolean copyRegion(
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location pos1, com.github.intellectualsites.plotsquared.plot.object.Location pos2, com.github.intellectualsites.plotsquared.plot.object.Location newPos,
|
||||
@Override
|
||||
public boolean copyRegion(com.github.intellectualsites.plotsquared.plot.object.Location pos1,
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location pos2,
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location newPos,
|
||||
final Runnable whenDone) {
|
||||
final int relX = newPos.getX() - pos1.getX();
|
||||
final int relZ = newPos.getZ() - pos1.getZ();
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location pos4 =
|
||||
new com.github.intellectualsites.plotsquared.plot.object.Location(newPos.getWorld(), newPos.getX() + relX, 256, newPos.getZ() + relZ);
|
||||
new com.github.intellectualsites.plotsquared.plot.object.Location(newPos.getWorld(),
|
||||
newPos.getX() + relX, 256, newPos.getZ() + relZ);
|
||||
|
||||
final RegionWrapper region =
|
||||
new RegionWrapper(pos1.getX(), pos2.getX(), pos1.getZ(), pos2.getZ());
|
||||
@ -159,7 +162,9 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override public boolean regenerateRegion(final com.github.intellectualsites.plotsquared.plot.object.Location pos1, final com.github.intellectualsites.plotsquared.plot.object.Location pos2,
|
||||
@Override public boolean regenerateRegion(
|
||||
final com.github.intellectualsites.plotsquared.plot.object.Location pos1,
|
||||
final com.github.intellectualsites.plotsquared.plot.object.Location pos2,
|
||||
final boolean ignoreAugment, final Runnable whenDone) {
|
||||
final String world = pos1.getWorld();
|
||||
|
||||
@ -315,8 +320,9 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override public void clearAllEntities(
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location pos1, com.github.intellectualsites.plotsquared.plot.object.Location pos2) {
|
||||
@Override
|
||||
public void clearAllEntities(com.github.intellectualsites.plotsquared.plot.object.Location pos1,
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location pos2) {
|
||||
String world = pos1.getWorld();
|
||||
List<Entity> entities = BukkitUtil.getEntities(world);
|
||||
int bx = pos1.getX();
|
||||
@ -355,7 +361,10 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override public void swap(com.github.intellectualsites.plotsquared.plot.object.Location bot1, com.github.intellectualsites.plotsquared.plot.object.Location top1, com.github.intellectualsites.plotsquared.plot.object.Location bot2, com.github.intellectualsites.plotsquared.plot.object.Location top2,
|
||||
@Override public void swap(com.github.intellectualsites.plotsquared.plot.object.Location bot1,
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location top1,
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location bot2,
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location top2,
|
||||
final Runnable whenDone) {
|
||||
RegionWrapper region1 =
|
||||
new RegionWrapper(bot1.getX(), top1.getX(), bot1.getZ(), top1.getZ());
|
||||
@ -655,7 +664,8 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
|
||||
public void saveEntitiesOut(Chunk chunk, RegionWrapper region) {
|
||||
for (Entity entity : chunk.getEntities()) {
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location loc = BukkitUtil.getLocation(entity);
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location loc =
|
||||
BukkitUtil.getLocation(entity);
|
||||
int x = loc.getX();
|
||||
int z = loc.getZ();
|
||||
if (isIn(region, x, z)) {
|
||||
@ -673,7 +683,8 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
public void saveEntitiesIn(Chunk chunk, RegionWrapper region, int offsetX, int offsetZ,
|
||||
boolean delete) {
|
||||
for (Entity entity : chunk.getEntities()) {
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location loc = BukkitUtil.getLocation(entity);
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location loc =
|
||||
BukkitUtil.getLocation(entity);
|
||||
int x = loc.getX();
|
||||
int z = loc.getZ();
|
||||
if (!isIn(region, x, z)) {
|
||||
@ -894,14 +905,16 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
((NoteBlock) state).setNote(blockLocNoteEntry.getValue());
|
||||
state.update(true);
|
||||
} else {
|
||||
PlotSquared.debug("&c[WARN] Plot clear failed to regenerate note block: " + (
|
||||
blockLocNoteEntry.getKey().x + xOffset) + ',' + blockLocNoteEntry
|
||||
.getKey().y + ',' + (blockLocNoteEntry.getKey().z + zOffset));
|
||||
PlotSquared.debug(
|
||||
"&c[WARN] Plot clear failed to regenerate note block: " + (
|
||||
blockLocNoteEntry.getKey().x + xOffset) + ',' + blockLocNoteEntry
|
||||
.getKey().y + ',' + (blockLocNoteEntry.getKey().z + zOffset));
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
PlotSquared.debug("&c[WARN] Plot clear failed to regenerate note block (e): " + (
|
||||
blockLocNoteEntry.getKey().x + xOffset) + ',' + blockLocNoteEntry.getKey().y
|
||||
+ ',' + (blockLocNoteEntry.getKey().z + zOffset));
|
||||
PlotSquared.debug(
|
||||
"&c[WARN] Plot clear failed to regenerate note block (e): " + (
|
||||
blockLocNoteEntry.getKey().x + xOffset) + ',' + blockLocNoteEntry
|
||||
.getKey().y + ',' + (blockLocNoteEntry.getKey().z + zOffset));
|
||||
}
|
||||
}
|
||||
for (Entry<BlockLoc, Short> blockLocShortEntry : this.brewTime.entrySet()) {
|
||||
@ -912,16 +925,16 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
if (state instanceof BrewingStand) {
|
||||
((BrewingStand) state).setBrewingTime(blockLocShortEntry.getValue());
|
||||
} else {
|
||||
PlotSquared
|
||||
.debug("&c[WARN] Plot clear failed to restore brewing stand cooking: " + (
|
||||
blockLocShortEntry.getKey().x + xOffset) + ',' + blockLocShortEntry
|
||||
.getKey().y + ',' + (blockLocShortEntry.getKey().z + zOffset));
|
||||
PlotSquared.debug(
|
||||
"&c[WARN] Plot clear failed to restore brewing stand cooking: " + (
|
||||
blockLocShortEntry.getKey().x + xOffset) + ',' + blockLocShortEntry
|
||||
.getKey().y + ',' + (blockLocShortEntry.getKey().z + zOffset));
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
PlotSquared
|
||||
.debug("&c[WARN] Plot clear failed to restore brewing stand cooking (e): " + (
|
||||
blockLocShortEntry.getKey().x + xOffset) + ',' + blockLocShortEntry
|
||||
.getKey().y + ',' + (blockLocShortEntry.getKey().z + zOffset));
|
||||
PlotSquared.debug(
|
||||
"&c[WARN] Plot clear failed to restore brewing stand cooking (e): " + (
|
||||
blockLocShortEntry.getKey().x + xOffset) + ',' + blockLocShortEntry
|
||||
.getKey().y + ',' + (blockLocShortEntry.getKey().z + zOffset));
|
||||
}
|
||||
}
|
||||
for (Entry<BlockLoc, EntityType> blockLocEntityTypeEntry : this.spawnerData
|
||||
@ -957,14 +970,17 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
((CommandBlock) state).setCommand(blockLocStringEntry.getValue());
|
||||
state.update(true);
|
||||
} else {
|
||||
PlotSquared.debug("&c[WARN] Plot clear failed to restore command block: " + (
|
||||
blockLocStringEntry.getKey().x + xOffset) + ',' + blockLocStringEntry
|
||||
.getKey().y + ',' + (blockLocStringEntry.getKey().z + zOffset));
|
||||
PlotSquared.debug(
|
||||
"&c[WARN] Plot clear failed to restore command block: " + (
|
||||
blockLocStringEntry.getKey().x + xOffset) + ','
|
||||
+ blockLocStringEntry.getKey().y + ',' + (
|
||||
blockLocStringEntry.getKey().z + zOffset));
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
PlotSquared.debug("&c[WARN] Plot clear failed to restore command block (e): " + (
|
||||
blockLocStringEntry.getKey().x + xOffset) + ',' + blockLocStringEntry
|
||||
.getKey().y + ',' + (blockLocStringEntry.getKey().z + zOffset));
|
||||
PlotSquared.debug(
|
||||
"&c[WARN] Plot clear failed to restore command block (e): " + (
|
||||
blockLocStringEntry.getKey().x + xOffset) + ',' + blockLocStringEntry
|
||||
.getKey().y + ',' + (blockLocStringEntry.getKey().z + zOffset));
|
||||
}
|
||||
}
|
||||
for (Entry<BlockLoc, ItemStack[]> blockLocEntry : this.brewingStandContents
|
||||
@ -979,16 +995,16 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
.setContents(blockLocEntry.getValue());
|
||||
state.update(true);
|
||||
} else {
|
||||
PlotSquared
|
||||
.debug("&c[WARN] Plot clear failed to regenerate brewing stand: " + (
|
||||
blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
|
||||
+ ',' + (blockLocEntry.getKey().z + zOffset));
|
||||
PlotSquared.debug(
|
||||
"&c[WARN] Plot clear failed to regenerate brewing stand: " + (
|
||||
blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
|
||||
+ ',' + (blockLocEntry.getKey().z + zOffset));
|
||||
}
|
||||
} catch (IllegalArgumentException ignored) {
|
||||
PlotSquared
|
||||
.debug("&c[WARN] Plot clear failed to regenerate brewing stand (e): " + (
|
||||
blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y + ','
|
||||
+ (blockLocEntry.getKey().z + zOffset));
|
||||
PlotSquared.debug(
|
||||
"&c[WARN] Plot clear failed to regenerate brewing stand (e): " + (
|
||||
blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
|
||||
+ ',' + (blockLocEntry.getKey().z + zOffset));
|
||||
}
|
||||
}
|
||||
for (Entry<BlockLoc, Short[]> blockLocEntry : this.furnaceTime.entrySet()) {
|
||||
@ -1002,16 +1018,16 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
((Furnace) state).setBurnTime(time[0]);
|
||||
((Furnace) state).setCookTime(time[1]);
|
||||
} else {
|
||||
PlotSquared
|
||||
.debug("&c[WARN] Plot clear failed to restore furnace cooking: " + (
|
||||
blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
|
||||
+ ',' + (blockLocEntry.getKey().z + zOffset));
|
||||
PlotSquared.debug(
|
||||
"&c[WARN] Plot clear failed to restore furnace cooking: " + (
|
||||
blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
|
||||
+ ',' + (blockLocEntry.getKey().z + zOffset));
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
PlotSquared
|
||||
.debug("&c[WARN] Plot clear failed to restore furnace cooking (e): " + (
|
||||
blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y + ','
|
||||
+ (blockLocEntry.getKey().z + zOffset));
|
||||
PlotSquared.debug(
|
||||
"&c[WARN] Plot clear failed to restore furnace cooking (e): " + (
|
||||
blockLocEntry.getKey().x + xOffset) + ',' + blockLocEntry.getKey().y
|
||||
+ ',' + (blockLocEntry.getKey().z + zOffset));
|
||||
}
|
||||
}
|
||||
for (Entry<BlockLoc, ItemStack[]> blockLocEntry : this.furnaceContents.entrySet()) {
|
||||
|
@ -10,6 +10,7 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
|
||||
@ -83,14 +84,23 @@ public class BukkitEventUtil extends EventUtil {
|
||||
callEvent(new PlayerPlotHelperEvent(getPlayer(initiator), plot, player, added));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean callOwnerChange(PlotPlayer initiator, Plot plot, UUID oldOwner, UUID newOwner,
|
||||
boolean hasOldOwner) {
|
||||
return callEvent(
|
||||
new PlotChangeOwnerEvent(getPlayer(initiator), plot, oldOwner, newOwner, hasOldOwner));
|
||||
}
|
||||
|
||||
@Override public boolean callFlagRemove(Flag flag, Object object, PlotCluster cluster) {
|
||||
return callEvent(new ClusterFlagRemoveEvent(flag, cluster));
|
||||
}
|
||||
|
||||
@Override public Rating callRating(PlotPlayer player, Plot plot, Rating rating) {
|
||||
@Override @Nullable public Rating callRating(PlotPlayer player, Plot plot, Rating rating) {
|
||||
PlotRateEvent event = new PlotRateEvent(player, rating, plot);
|
||||
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) {
|
||||
return null;
|
||||
}
|
||||
return event.getRating();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -132,8 +132,10 @@ public class BukkitSetupUtils extends SetupUtils {
|
||||
worldSection.set(step.getConstant(), step.getValue());
|
||||
}
|
||||
PlotSquared.get().worlds.set("worlds." + world + ".generator.type", object.type);
|
||||
PlotSquared.get().worlds.set("worlds." + world + ".generator.terrain", object.terrain);
|
||||
PlotSquared.get().worlds.set("worlds." + world + ".generator.plugin", object.plotManager);
|
||||
PlotSquared.get().worlds
|
||||
.set("worlds." + world + ".generator.terrain", object.terrain);
|
||||
PlotSquared.get().worlds
|
||||
.set("worlds." + world + ".generator.plugin", object.plotManager);
|
||||
if (object.setupGenerator != null && !object.setupGenerator
|
||||
.equals(object.plotManager)) {
|
||||
PlotSquared.get().worlds
|
||||
|
@ -24,8 +24,7 @@ import org.bukkit.material.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.*;
|
||||
|
||||
@SuppressWarnings({"unused", "WeakerAccess"})
|
||||
public class BukkitUtil extends WorldUtil {
|
||||
@SuppressWarnings({"unused", "WeakerAccess"}) public class BukkitUtil extends WorldUtil {
|
||||
|
||||
private static String lastString = null;
|
||||
private static World lastWorld = null;
|
||||
@ -86,7 +85,7 @@ public class BukkitUtil extends WorldUtil {
|
||||
|
||||
/**
|
||||
* Get the PlotPlayer for an offline player.
|
||||
* <p>
|
||||
*
|
||||
* <p>Note that this will work if the player is offline, however not all
|
||||
* functionality will work.
|
||||
*
|
||||
@ -242,8 +241,9 @@ public class BukkitUtil extends WorldUtil {
|
||||
return getWorld(world).getBiome(x, z).name();
|
||||
}
|
||||
|
||||
@Override @SuppressWarnings("deprecation") public void setSign(@NonNull final String worldName,
|
||||
final int x, final int y, final int z, @NonNull final String[] lines) {
|
||||
@Override @SuppressWarnings("deprecation")
|
||||
public void setSign(@NonNull final String worldName, final int x, final int y, final int z,
|
||||
@NonNull final String[] lines) {
|
||||
final World world = getWorld(worldName);
|
||||
final Block block = world.getBlockAt(x, y, z);
|
||||
// block.setType(Material.AIR);
|
||||
@ -351,7 +351,8 @@ public class BukkitUtil extends WorldUtil {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override public boolean addItems(@NonNull final String worldName, @NonNull final PlotItem items) {
|
||||
@Override
|
||||
public boolean addItems(@NonNull final String worldName, @NonNull final PlotItem items) {
|
||||
final World world = getWorld(worldName);
|
||||
final Block block = world.getBlockAt(items.x, items.y, items.z);
|
||||
if (block == null) {
|
||||
@ -403,7 +404,8 @@ public class BukkitUtil extends WorldUtil {
|
||||
}
|
||||
}
|
||||
|
||||
@Override @Nullable public StringComparison<PlotBlock>.ComparisonResult getClosestBlock(String name) {
|
||||
@Override @Nullable
|
||||
public StringComparison<PlotBlock>.ComparisonResult getClosestBlock(String name) {
|
||||
try {
|
||||
final Material material = Material.valueOf(name.toUpperCase());
|
||||
return new StringComparison<PlotBlock>().new ComparisonResult(0,
|
||||
@ -439,7 +441,8 @@ public class BukkitUtil extends WorldUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public void setBiomes(@NonNull final String worldName, @NonNull final RegionWrapper region,
|
||||
@Override
|
||||
public void setBiomes(@NonNull final String worldName, @NonNull final RegionWrapper region,
|
||||
@NonNull final String biomeString) {
|
||||
final World world = getWorld(worldName);
|
||||
final Biome biome = Biome.valueOf(biomeString.toUpperCase());
|
||||
|
@ -50,7 +50,8 @@ public class SendChunk {
|
||||
RefClass classChunk = getRefClass("{nms}.Chunk");
|
||||
this.methodInitLighting = classChunk.getMethod("initLighting");
|
||||
RefClass classMapChunk = getRefClass("{nms}.PacketPlayOutMapChunk");
|
||||
if (PlotSquared.get().checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_4)) {
|
||||
if (PlotSquared.get()
|
||||
.checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_4)) {
|
||||
//this works for 1.9.4 and 1.10
|
||||
tempMapChunk = classMapChunk.getConstructor(classChunk.getRealClass(), int.class);
|
||||
} else {
|
||||
@ -118,8 +119,8 @@ public class SendChunk {
|
||||
chunks.remove(chunk);
|
||||
Object con = this.connection.of(entity).get();
|
||||
Object packet = null;
|
||||
if (PlotSquared
|
||||
.get().checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_4)) {
|
||||
if (PlotSquared.get()
|
||||
.checkVersion(PlotSquared.get().IMP.getServerVersion(), BukkitVersion.v1_9_4)) {
|
||||
try {
|
||||
packet = this.mapChunk.create(c, 65535);
|
||||
} catch (Exception ignored) {
|
||||
@ -148,10 +149,11 @@ public class SendChunk {
|
||||
chunk.unload(true, false);
|
||||
} catch (Throwable ignored) {
|
||||
String worldName = chunk.getWorld().getName();
|
||||
PlotSquared.debug(
|
||||
"$4Could not save chunk: " + worldName + ';' + chunk.getX() + ";"
|
||||
+ chunk.getZ());
|
||||
PlotSquared
|
||||
.debug("$4Could not save chunk: " + worldName + ';' + chunk.getX() + ";"
|
||||
+ chunk.getZ());
|
||||
PlotSquared.debug("$3 - $4File may be open in another process (e.g. MCEdit)");
|
||||
.debug("$3 - $4File may be open in another process (e.g. MCEdit)");
|
||||
PlotSquared.debug("$3 - $4" + worldName + "/level.dat or " + worldName
|
||||
+ "/level_old.dat may be corrupt (try repairing or removing these)");
|
||||
}
|
||||
|
@ -52,6 +52,7 @@ public class SetGenCB {
|
||||
}
|
||||
}
|
||||
}
|
||||
PlotSquared.get().loadWorld(world.getName(), PlotSquared.get().IMP.getGenerator(world.getName(), null));
|
||||
PlotSquared.get()
|
||||
.loadWorld(world.getName(), PlotSquared.get().IMP.getGenerator(world.getName(), null));
|
||||
}
|
||||
}
|
||||
|
@ -203,7 +203,8 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
|
||||
}
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
PlotSquared.debug(C.PREFIX + "&6Invalid PlayerData: " + uuid.toString() + ".dat");
|
||||
PlotSquared
|
||||
.debug(C.PREFIX + "&6Invalid PlayerData: " + uuid.toString() + ".dat");
|
||||
}
|
||||
}
|
||||
for (String name : names) {
|
||||
|
@ -43,7 +43,8 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
|
||||
|
||||
public SQLUUIDHandler(UUIDWrapper wrapper) {
|
||||
super(wrapper);
|
||||
this.sqlite = new SQLite(MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), "usercache.db"));
|
||||
this.sqlite =
|
||||
new SQLite(MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), "usercache.db"));
|
||||
try {
|
||||
this.sqlite.openConnection();
|
||||
} catch (ClassNotFoundException | SQLException e) {
|
||||
@ -221,7 +222,8 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
|
||||
statement.setString(1, uuid.toString());
|
||||
statement.setString(2, name.toString());
|
||||
statement.execute();
|
||||
PlotSquared.debug(C.PREFIX + "&cAdded '&6" + uuid + "&c' - '&6" + name + "&c'");
|
||||
PlotSquared
|
||||
.debug(C.PREFIX + "&cAdded '&6" + uuid + "&c' - '&6" + name + "&c'");
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -244,8 +246,8 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
|
||||
statement.setString(1, name.value);
|
||||
statement.setString(2, uuid.toString());
|
||||
statement.execute();
|
||||
PlotSquared
|
||||
.debug(C.PREFIX + "Name change for '" + uuid + "' to '" + name.value + '\'');
|
||||
PlotSquared.debug(
|
||||
C.PREFIX + "Name change for '" + uuid + "' to '" + name.value + '\'');
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ import java.util.UUID;
|
||||
|
||||
/**
|
||||
* PlotSquared API.
|
||||
* <p>
|
||||
*
|
||||
* <p>Useful classes:
|
||||
* <ul>
|
||||
* <li>{@link PlotPlayer}</li>
|
||||
@ -34,9 +34,7 @@ import java.util.UUID;
|
||||
*
|
||||
* @version 3.3.3
|
||||
*/
|
||||
@SuppressWarnings({"unused", "WeakerAccess"})
|
||||
@NoArgsConstructor
|
||||
public class PlotAPI {
|
||||
@SuppressWarnings({"unused", "WeakerAccess"}) @NoArgsConstructor public class PlotAPI {
|
||||
|
||||
/**
|
||||
* Get all plots.
|
||||
@ -201,7 +199,7 @@ public class PlotAPI {
|
||||
|
||||
/**
|
||||
* Get the PlotPlayer for a UUID.
|
||||
* <p>
|
||||
*
|
||||
* <p><i>Please note that PlotSquared can be configured to provide
|
||||
* different UUIDs than bukkit</i>
|
||||
*
|
||||
|
@ -166,8 +166,8 @@ public abstract class Command {
|
||||
options.put("usage", declaration.usage());
|
||||
options.put("confirmation", declaration.confirmation());
|
||||
boolean set = false;
|
||||
YamlConfiguration commands = PlotSquared.get() == null ? new YamlConfiguration() : PlotSquared
|
||||
.get().commands;
|
||||
YamlConfiguration commands =
|
||||
PlotSquared.get() == null ? new YamlConfiguration() : PlotSquared.get().commands;
|
||||
for (Map.Entry<String, Object> entry : options.entrySet()) {
|
||||
String key = this.getFullId() + "." + entry.getKey();
|
||||
if (!commands.contains(key)) {
|
||||
|
@ -25,7 +25,7 @@ class ConfigurationOptions {
|
||||
/**
|
||||
* Gets the char that will be used to separate {@link
|
||||
* ConfigurationSection}s.
|
||||
* <p>
|
||||
*
|
||||
* <p>This value does not affect how the {@link Configuration} is stored,
|
||||
* only in how you access the data. The default value is '.'.
|
||||
*
|
||||
@ -38,7 +38,7 @@ class ConfigurationOptions {
|
||||
/**
|
||||
* Sets the char that will be used to separate {@link
|
||||
* ConfigurationSection}s.
|
||||
* <p>
|
||||
*
|
||||
* <p>This value does not affect how the {@link Configuration} is stored,
|
||||
* only in how you access the data. The default value is '.'.
|
||||
*
|
||||
@ -53,7 +53,7 @@ class ConfigurationOptions {
|
||||
/**
|
||||
* Checks if the {@link Configuration} should copy values from its default
|
||||
* {@link Configuration} directly.
|
||||
* <p>
|
||||
*
|
||||
* <p>If this is true, all values in the default Configuration will be
|
||||
* directly copied, making it impossible to distinguish between values
|
||||
* that were set and values that are provided by default. As a result,
|
||||
@ -71,7 +71,7 @@ class ConfigurationOptions {
|
||||
/**
|
||||
* Sets if the {@link Configuration} should copy values from its default
|
||||
* {@link Configuration} directly.
|
||||
* <p>
|
||||
*
|
||||
* <p>If this is true, all values in the default Configuration will be
|
||||
* directly copied, making it impossible to distinguish between values
|
||||
* that were set and values that are provided by default. As a result,
|
||||
|
@ -11,11 +11,11 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets a set containing all keys in this section.
|
||||
* <p>
|
||||
*
|
||||
* <p>If deep is set to true, then this will contain all the keys within any
|
||||
* child {@link ConfigurationSection}s (and their children, etc). These
|
||||
* will be in a valid path notation for you to use.
|
||||
* <p>
|
||||
*
|
||||
* <p>If deep is set to false, then this will contain only the keys of any
|
||||
* direct children, and not their own children.
|
||||
*
|
||||
@ -27,11 +27,11 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets a Map containing all keys and their values for this section.
|
||||
* <p>
|
||||
*
|
||||
* <p>If deep is set to true, then this will contain all the keys and values
|
||||
* within any child {@link ConfigurationSection}s (and their children,
|
||||
* etc). These keys will be in a valid path notation for you to use.
|
||||
* <p>
|
||||
*
|
||||
* <p>If deep is set to false, then this will contain only the keys and
|
||||
* values of any direct children, and not their own children.
|
||||
*
|
||||
@ -43,7 +43,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Checks if this {@link ConfigurationSection} contains the given path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the value for the requested path does not exist but a default value
|
||||
* has been specified, this will return true.
|
||||
*
|
||||
@ -57,7 +57,7 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Checks if this {@link ConfigurationSection} has a value set for the
|
||||
* given path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the value for the requested path does not exist but a default value
|
||||
* has been specified, this will still return false.
|
||||
*
|
||||
@ -71,14 +71,14 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Gets the path of this {@link ConfigurationSection} from its root {@link
|
||||
* Configuration}.
|
||||
* <p>
|
||||
*
|
||||
* <p>For any {@link Configuration} themselves, this will return an empty
|
||||
* string.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the section is no longer contained within its root for any reason,
|
||||
* such as being replaced with a different value,
|
||||
* this may return {@code null}.
|
||||
* <p>
|
||||
*
|
||||
* <p>To retrieve the single name of this section, that is, the final part
|
||||
* of the path returned by this method, you may use {@link #getName()}.
|
||||
*
|
||||
@ -89,7 +89,7 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Gets the name of this individual {@link ConfigurationSection}, in the
|
||||
* path.
|
||||
* <p>
|
||||
*
|
||||
* <p>This will always be the final part of {@link #getCurrentPath()}, unless
|
||||
* the section is orphaned.
|
||||
*
|
||||
@ -100,10 +100,10 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Gets the root {@link Configuration} that contains this {@link
|
||||
* ConfigurationSection}
|
||||
* <p>
|
||||
*
|
||||
* <p>For any {@link Configuration} themselves, this will return its own
|
||||
* object.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the section is no longer contained within its root for any reason,
|
||||
* such as being replaced with a different value,
|
||||
* this may return {@code null}.
|
||||
@ -115,10 +115,10 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Gets the parent {@link ConfigurationSection} that directly contains
|
||||
* this {@link ConfigurationSection}.
|
||||
* <p>
|
||||
*
|
||||
* <p>For any {@link Configuration} themselves, this will return
|
||||
* {@code null}.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the section is no longer contained within its parent for any
|
||||
* reason, such as being replaced with a different value, this may
|
||||
* return {@code null}.
|
||||
@ -129,7 +129,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested Object by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the Object does not exist but a default value has been specified,
|
||||
* this will return the default value. If the Object does not exist and no
|
||||
* default value was specified, this will return {@code null}.
|
||||
@ -142,7 +142,7 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Gets the requested Object by path, returning a default value if not
|
||||
* found.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the Object does not exist then the specified default value will
|
||||
* returned regardless of if a default has been identified in the root
|
||||
* {@link Configuration}.
|
||||
@ -155,10 +155,10 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Sets the specified path to the given value.
|
||||
* <p>
|
||||
*
|
||||
* <p>If value is {@code null}, the entry will be removed. Any
|
||||
* existing entry will be replaced, regardless of what the new value is.
|
||||
* <p>
|
||||
*
|
||||
* <p>Some implementations may have limitations on what you may store. See
|
||||
* their individual javadoc for details. No implementations should allow
|
||||
* you to store {@link Configuration}s or {@link ConfigurationSection}s,
|
||||
@ -171,7 +171,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Creates an empty {@link ConfigurationSection} at the specified path.
|
||||
* <p>
|
||||
*
|
||||
* <p>Any value that was previously set at this path will be overwritten. If
|
||||
* the previous value was itself a {@link ConfigurationSection}, it will
|
||||
* be orphaned.
|
||||
@ -184,7 +184,7 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Creates a {@link ConfigurationSection} at the specified path, with
|
||||
* specified values.
|
||||
* <p>
|
||||
*
|
||||
* <p>Any value that was previously set at this path will be overwritten. If
|
||||
* the previous value was itself a {@link ConfigurationSection}, it will
|
||||
* be orphaned.
|
||||
@ -199,7 +199,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested String by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the String does not exist but a default value has been specified,
|
||||
* this will return the default value. If the String does not exist and no
|
||||
* default value was specified, this will return {@code null}.
|
||||
@ -212,7 +212,7 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Gets the requested String by path, returning a default value if not
|
||||
* found.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the String does not exist then the specified default value will
|
||||
* returned regardless of if a default has been identified in the root
|
||||
* {@link Configuration}.
|
||||
@ -226,7 +226,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Checks if the specified path is a String.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the path exists but is not a String, this will return false. If
|
||||
* the path does not exist, this will return false. If the path does not
|
||||
* exist but a default value has been specified, this will check if that
|
||||
@ -239,7 +239,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested int by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the int does not exist but a default value has been specified, this
|
||||
* will return the default value. If the int does not exist and no default
|
||||
* value was specified, this will return 0.
|
||||
@ -251,7 +251,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested int by path, returning a default value if not found.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the int does not exist then the specified default value will
|
||||
* returned regardless of if a default has been identified in the root
|
||||
* {@link Configuration}.
|
||||
@ -265,7 +265,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Checks if the specified path is an int.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the path exists but is not a int, this will return false. If the
|
||||
* path does not exist, this will return false. If the path does not exist
|
||||
* but a default value has been specified, this will check if that default
|
||||
@ -278,7 +278,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested boolean by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the boolean does not exist but a default value has been specified,
|
||||
* this will return the default value. If the boolean does not exist and
|
||||
* no default value was specified, this will return false.
|
||||
@ -291,7 +291,7 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Gets the requested boolean by path, returning a default value if not
|
||||
* found.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the boolean does not exist then the specified default value will
|
||||
* returned regardless of if a default has been identified in the root
|
||||
* {@link Configuration}.
|
||||
@ -305,7 +305,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Checks if the specified path is a boolean.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the path exists but is not a boolean, this will return false. If the
|
||||
* path does not exist, this will return false. If the path does not exist
|
||||
* but a default value has been specified, this will check if that default
|
||||
@ -318,7 +318,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested double by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the double does not exist but a default value has been specified,
|
||||
* this will return the default value. If the double does not exist and no
|
||||
* default value was specified, this will return 0.
|
||||
@ -331,7 +331,7 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Gets the requested double by path, returning a default value if not
|
||||
* found.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the double does not exist then the specified default value will
|
||||
* returned regardless of if a default has been identified in the root
|
||||
* {@link Configuration}.
|
||||
@ -345,7 +345,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Checks if the specified path is a double.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the path exists but is not a double, this will return false. If the
|
||||
* path does not exist, this will return false. If the path does not exist
|
||||
* but a default value has been specified, this will check if that default
|
||||
@ -358,7 +358,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested long by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the long does not exist but a default value has been specified, this
|
||||
* will return the default value. If the long does not exist and no
|
||||
* default value was specified, this will return 0.
|
||||
@ -371,7 +371,7 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Gets the requested long by path, returning a default value if not
|
||||
* found.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the long does not exist then the specified default value will
|
||||
* returned regardless of if a default has been identified in the root
|
||||
* {@link Configuration}.
|
||||
@ -385,7 +385,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Checks if the specified path is a long.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the path exists but is not a long, this will return false. If the
|
||||
* path does not exist, this will return false. If the path does not exist
|
||||
* but a default value has been specified, this will check if that default
|
||||
@ -400,7 +400,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested List by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist but a default value has been specified, this
|
||||
* will return the default value. If the List does not exist and no
|
||||
* default value was specified, this will return null.
|
||||
@ -413,7 +413,7 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Gets the requested List by path, returning a default value if not
|
||||
* found.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist then the specified default value will
|
||||
* returned regardless of if a default has been identified in the root
|
||||
* {@link Configuration}.
|
||||
@ -427,7 +427,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Checks if the specified path is a List.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the path exists but is not a List, this will return false. If the
|
||||
* path does not exist, this will return false. If the path does not exist
|
||||
* but a default value has been specified, this will check if that default
|
||||
@ -440,11 +440,11 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested List of String by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist but a default value has been specified,
|
||||
* this will return the default value. If the List does not exist and no
|
||||
* default value was specified, this will return an empty List.
|
||||
* <p>
|
||||
*
|
||||
* <p>This method will attempt to cast any values into a String if possible,
|
||||
* but may miss any values out if they are not compatible.
|
||||
*
|
||||
@ -455,11 +455,11 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested List of Integer by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist but a default value has been specified,
|
||||
* this will return the default value. If the List does not exist and no
|
||||
* default value was specified, this will return an empty List.
|
||||
* <p>
|
||||
*
|
||||
* <p>This method will attempt to cast any values into a Integer if
|
||||
* possible, but may miss any values out if they are not compatible.
|
||||
*
|
||||
@ -470,11 +470,11 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested List of Boolean by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist but a default value has been specified,
|
||||
* this will return the default value. If the List does not exist and no
|
||||
* default value was specified, this will return an empty List.
|
||||
* <p>
|
||||
*
|
||||
* <p>This method will attempt to cast any values into a Boolean if
|
||||
* possible, but may miss any values out if they are not compatible.
|
||||
*
|
||||
@ -485,11 +485,11 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested List of Double by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist but a default value has been specified,
|
||||
* this will return the default value. If the List does not exist and no
|
||||
* default value was specified, this will return an empty List.
|
||||
* <p>
|
||||
*
|
||||
* <p>This method will attempt to cast any values into a Double if possible,
|
||||
* but may miss any values out if they are not compatible.
|
||||
*
|
||||
@ -500,11 +500,11 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested List of Float by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist but a default value has been specified,
|
||||
* this will return the default value. If the List does not exist and no
|
||||
* default value was specified, this will return an empty List.
|
||||
* <p>
|
||||
*
|
||||
* <p>This method will attempt to cast any values into a Float if possible,
|
||||
* but may miss any values out if they are not compatible.
|
||||
*
|
||||
@ -515,11 +515,11 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested List of Long by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist but a default value has been specified,
|
||||
* this will return the default value. If the List does not exist and no
|
||||
* default value was specified, this will return an empty List.
|
||||
* <p>
|
||||
*
|
||||
* <p>This method will attempt to cast any values into a Long if possible,
|
||||
* but may miss any values out if they are not compatible.
|
||||
*
|
||||
@ -530,11 +530,11 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested List of Byte by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist but a default value has been specified,
|
||||
* this will return the default value. If the List does not exist and no
|
||||
* default value was specified, this will return an empty List.
|
||||
* <p>
|
||||
*
|
||||
* <p>This method will attempt to cast any values into a Byte if possible,
|
||||
* but may miss any values out if they are not compatible.
|
||||
*
|
||||
@ -545,11 +545,11 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested List of Character by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist but a default value has been specified,
|
||||
* this will return the default value. If the List does not exist and no
|
||||
* default value was specified, this will return an empty List.
|
||||
* <p>
|
||||
*
|
||||
* <p>This method will attempt to cast any values into a Character if
|
||||
* possible, but may miss any values out if they are not compatible.
|
||||
*
|
||||
@ -560,11 +560,11 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested List of Short by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist but a default value has been specified,
|
||||
* this will return the default value. If the List does not exist and no
|
||||
* default value was specified, this will return an empty List.
|
||||
* <p>
|
||||
*
|
||||
* <p>This method will attempt to cast any values into a Short if
|
||||
* possible, but may miss any values out if they are not compatible.
|
||||
*
|
||||
@ -575,7 +575,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested List of Maps by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the List does not exist but a default value has been specified,
|
||||
* this will return the default value. If the List does not exist and no
|
||||
* default value was specified, this will return an empty List.
|
||||
@ -589,7 +589,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Gets the requested ConfigurationSection by path.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the ConfigurationSection does not exist but a default value has
|
||||
* been specified, this will return the default value. If the
|
||||
* ConfigurationSection does not exist and no default value was specified,
|
||||
@ -602,7 +602,7 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Checks if the specified path is a ConfigurationSection.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the path exists but is not a ConfigurationSection, this will return
|
||||
* false. If the path does not exist, this will return false. If the path
|
||||
* does not exist but a default value has been specified, this will check
|
||||
@ -617,7 +617,7 @@ public interface ConfigurationSection {
|
||||
/**
|
||||
* Gets the equivalent {@link ConfigurationSection} from the default
|
||||
* {@link Configuration} defined in {@link #getRoot()}.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the root contains no defaults, or the defaults doesn't contain a
|
||||
* value for this path, or the value at this path is not a {@link
|
||||
* ConfigurationSection} then this will return {@code null}.
|
||||
@ -628,14 +628,14 @@ public interface ConfigurationSection {
|
||||
|
||||
/**
|
||||
* Sets the default value in the root at the given path as provided.
|
||||
* <p>
|
||||
*
|
||||
* <p>If no source {@link Configuration} was provided as a default
|
||||
* collection, then a new {@link MemoryConfiguration} will be created to
|
||||
* hold the new default value.
|
||||
* <p>
|
||||
*
|
||||
* <p>If value is {@code null}, the value will be removed from the
|
||||
* default Configuration source.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the value as returned by {@link #getDefaultSection()} is
|
||||
* {@code null}, then this will create a new section at the path,
|
||||
* replacing anything that may have existed there previously.
|
||||
|
@ -16,7 +16,7 @@ public class MemorySection implements ConfigurationSection {
|
||||
/**
|
||||
* Creates an empty MemorySection for use as a root {@link Configuration}
|
||||
* section.
|
||||
* <p>
|
||||
*
|
||||
* <p>Note that calling this without being yourself a {@link Configuration}
|
||||
* will throw an exception!
|
||||
*
|
||||
@ -113,7 +113,7 @@ public class MemorySection implements ConfigurationSection {
|
||||
/**
|
||||
* Creates a full path to the given {@link ConfigurationSection} from its
|
||||
* root {@link Configuration}.
|
||||
* <p>
|
||||
*
|
||||
* <p>You may use this method for any given {@link ConfigurationSection}, not
|
||||
* only {@link MemorySection}.
|
||||
*
|
||||
@ -128,7 +128,7 @@ public class MemorySection implements ConfigurationSection {
|
||||
/**
|
||||
* Creates a relative path to the given {@link ConfigurationSection} from
|
||||
* the given relative section.
|
||||
* <p>
|
||||
*
|
||||
* <p>You may use this method for any given {@link ConfigurationSection}, not
|
||||
* only {@link MemorySection}.
|
||||
*
|
||||
|
@ -31,11 +31,11 @@ public abstract class FileConfiguration extends MemoryConfiguration {
|
||||
|
||||
/**
|
||||
* Saves this {@link FileConfiguration} to the specified location.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the file does not exist, it will be created. If already exists, it
|
||||
* will be overwritten. If it cannot be overwritten or created, an
|
||||
* exception will be thrown.
|
||||
* <p>
|
||||
*
|
||||
* <p>This method will save using the system default encoding, or possibly
|
||||
* using UTF8.
|
||||
*
|
||||
@ -66,11 +66,11 @@ public abstract class FileConfiguration extends MemoryConfiguration {
|
||||
|
||||
/**
|
||||
* Loads this {@link FileConfiguration} from the specified location.
|
||||
* <p>
|
||||
*
|
||||
* <p>All the values contained within this configuration will be removed,
|
||||
* leaving only settings and defaults, and the new values will be loaded
|
||||
* from the given file.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the file cannot be loaded for any reason, an exception will be
|
||||
* thrown.
|
||||
*
|
||||
@ -91,7 +91,7 @@ public abstract class FileConfiguration extends MemoryConfiguration {
|
||||
|
||||
/**
|
||||
* Loads this {@link FileConfiguration} from the specified reader.
|
||||
* <p>
|
||||
*
|
||||
* <p>All the values contained within this configuration will be removed,
|
||||
* leaving only settings and defaults, and the new values will be loaded
|
||||
* from the given stream.
|
||||
@ -122,11 +122,11 @@ public abstract class FileConfiguration extends MemoryConfiguration {
|
||||
/**
|
||||
* Loads this {@link FileConfiguration} from the specified string, as
|
||||
* opposed to from file.
|
||||
* <p>
|
||||
*
|
||||
* <p>All the values contained within this configuration will be removed,
|
||||
* leaving only settings and defaults, and the new values will be loaded
|
||||
* from the given string.
|
||||
* <p>
|
||||
*
|
||||
* <p>If the string is invalid in any way, an exception will be thrown.
|
||||
*
|
||||
* @param contents Contents of a Configuration to load.
|
||||
@ -138,7 +138,7 @@ public abstract class FileConfiguration extends MemoryConfiguration {
|
||||
/**
|
||||
* Compiles the header for this {@link FileConfiguration} and returns the
|
||||
* result.
|
||||
* <p>
|
||||
*
|
||||
* <p>This will use the header from {@link #options()} -> {@link
|
||||
* FileConfigurationOptions#header()}, respecting the rules of {@link
|
||||
* FileConfigurationOptions#copyHeader()} if set.
|
||||
|
@ -32,13 +32,13 @@ public class FileConfigurationOptions extends MemoryConfigurationOptions {
|
||||
|
||||
/**
|
||||
* Gets the header that will be applied to the top of the saved output.
|
||||
* <p>
|
||||
*
|
||||
* <p>This header will be commented out and applied directly at the top of
|
||||
* the generated output of the {@link FileConfiguration}. It is not
|
||||
* required to include a newline at the end of the header as it will
|
||||
* automatically be applied, but you may include one if you wish for extra
|
||||
* spacing.
|
||||
* <p>
|
||||
*
|
||||
* <p>{@code null} is a valid value which will indicate that no header]
|
||||
* is to be applied. The default value is {@code null}.
|
||||
*
|
||||
@ -50,13 +50,13 @@ public class FileConfigurationOptions extends MemoryConfigurationOptions {
|
||||
|
||||
/**
|
||||
* Sets the header that will be applied to the top of the saved output.
|
||||
* <p>
|
||||
*
|
||||
* <p>This header will be commented out and applied directly at the top of
|
||||
* the generated output of the {@link FileConfiguration}. It is not
|
||||
* required to include a newline at the end of the header as it will
|
||||
* automatically be applied, but you may include one if you wish for extra
|
||||
* spacing.
|
||||
* <p>
|
||||
*
|
||||
* <p>{@code null} is a valid value which will indicate that no header
|
||||
* is to be applied.
|
||||
*
|
||||
@ -70,17 +70,17 @@ public class FileConfigurationOptions extends MemoryConfigurationOptions {
|
||||
|
||||
/**
|
||||
* Gets whether or not the header should be copied from a default source.
|
||||
* <p>
|
||||
*
|
||||
* <p>If this is true, if a default {@link FileConfiguration} is passed to
|
||||
* {@link FileConfiguration#setDefaults(Configuration)}
|
||||
* then upon saving it will use the header from that config, instead of
|
||||
* the one provided here.
|
||||
* <p>
|
||||
*
|
||||
* <p>If no default is set on the configuration, or the default is not of
|
||||
* type FileConfiguration, or that config has no header ({@link #header()}
|
||||
* returns null) then the header specified in this configuration will be
|
||||
* used.
|
||||
* <p>
|
||||
*
|
||||
* <p>Defaults to true.
|
||||
*
|
||||
* @return Whether or not to copy the header
|
||||
@ -91,17 +91,17 @@ public class FileConfigurationOptions extends MemoryConfigurationOptions {
|
||||
|
||||
/**
|
||||
* Sets whether or not the header should be copied from a default source.
|
||||
* <p>
|
||||
*
|
||||
* <p>If this is true, if a default {@link FileConfiguration} is passed to
|
||||
* {@link FileConfiguration#setDefaults(Configuration)}
|
||||
* then upon saving it will use the header from that config, instead of
|
||||
* the one provided here.
|
||||
* <p>
|
||||
*
|
||||
* <p>If no default is set on the configuration, or the default is not of
|
||||
* type FileConfiguration, or that config has no header ({@link #header()}
|
||||
* returns null) then the header specified in this configuration will be
|
||||
* used.
|
||||
* <p>
|
||||
*
|
||||
* <p>Defaults to true.
|
||||
*
|
||||
* @param value Whether or not to copy the header
|
||||
|
@ -28,11 +28,11 @@ public class YamlConfiguration extends FileConfiguration {
|
||||
|
||||
/**
|
||||
* Creates a new {@link YamlConfiguration}, loading from the given file.
|
||||
* <p>
|
||||
*
|
||||
* <p>Any errors loading the Configuration will be logged and then ignored.
|
||||
* If the specified input is not a valid config, a blank config will be
|
||||
* returned.
|
||||
* <p>
|
||||
*
|
||||
* <p>The encoding used may follow the system dependent default.
|
||||
*
|
||||
* @param file Input file
|
||||
|
@ -37,7 +37,7 @@ public class YamlConfigurationOptions extends FileConfigurationOptions {
|
||||
|
||||
/**
|
||||
* Gets how much spaces should be used to indent each line.
|
||||
* <p>
|
||||
*
|
||||
* <p>The minimum value this may be is 2, and the maximum is 9.
|
||||
*
|
||||
* @return How much to indent by
|
||||
@ -48,7 +48,7 @@ public class YamlConfigurationOptions extends FileConfigurationOptions {
|
||||
|
||||
/**
|
||||
* Sets how much spaces should be used to indent each line.
|
||||
* <p>
|
||||
*
|
||||
* <p>The minimum value this may be is 2, and the maximum is 9.
|
||||
*
|
||||
* @param value New indent
|
||||
|
@ -24,7 +24,7 @@ public interface ConfigurationSerializable {
|
||||
|
||||
/**
|
||||
* Creates a Map representation of this class.
|
||||
* <p>
|
||||
*
|
||||
* <p>This class must provide a method to restore this class, as defined in
|
||||
* the {@link ConfigurationSerializable} interface javadoc.
|
||||
*
|
||||
|
@ -43,8 +43,8 @@ public class HTTP {
|
||||
|
||||
/**
|
||||
* Convert a JSONObject into an HTTP header. A request header must contain
|
||||
* <p>
|
||||
* <p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* {
|
||||
* Method: "POST" (for example),
|
||||
@ -54,8 +54,8 @@ public class HTTP {
|
||||
* </pre>
|
||||
* <p>
|
||||
* A response header must contain
|
||||
* <p>
|
||||
* <p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* {
|
||||
* "HTTP-Version": "HTTP/1.1" (for example),
|
||||
|
@ -14,16 +14,16 @@ import java.util.Map;
|
||||
* accessing the values by index, and {@code put} methods for adding or replacing values. The values can be any of
|
||||
* these types: {@code Boolean}, {@code JSONArray}, {@code JSONObject}, {@code Number},
|
||||
* {@code String}, or the {@code JSONObject.NULL object}.
|
||||
* <p>
|
||||
*
|
||||
* <p>The constructor can convert a JSON text into a Java object. The {@code toString} method converts to JSON text.
|
||||
* <p>
|
||||
*
|
||||
* <p>A {@code get} method returns a value if one can be found, and throws an exception if one cannot be found. An
|
||||
* {@code opt} method returns a default value instead of throwing an exception, and so is useful for obtaining
|
||||
* optional values.
|
||||
* <p>
|
||||
*
|
||||
* <p>The generic {@code get()} and {@code opt()} methods return an object which you can cast or query for type.
|
||||
* There are also typed {@code get} and {@code opt} methods that do type checking and type coercion for you.
|
||||
* <p>
|
||||
*
|
||||
* <p>The texts produced by the {@code toString} methods strictly conform to JSON syntax rules. The constructors are
|
||||
* more forgiving in the texts they will accept: <ul> <li>An extra {@code ,} <small>(comma)</small> may appear
|
||||
* just before the closing bracket.</li> <li>The {@code null} value will be inserted when there is {@code ,}
|
||||
|
@ -28,8 +28,8 @@ import java.util.Map.Entry;
|
||||
* as null.
|
||||
* <p>
|
||||
* The <code>put</code> methods add or replace values in an object. For example,
|
||||
* <p>
|
||||
* <p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* myString = new JSONObject().put("JSON", "Hello, World!").toString();
|
||||
* </pre>
|
||||
|
@ -11,16 +11,16 @@ import java.io.StringWriter;
|
||||
* method for adding keys before values in objects. There are <code>array</code> and <code>endArray</code> methods that
|
||||
* make and bound array values, and <code>object</code> and <code>endObject</code> methods which make and bound object
|
||||
* values. All of these methods return the JSONWriter instance, permitting cascade style. For example,
|
||||
* <p>
|
||||
* <p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* myString = new JSONStringer().object().key("JSON").value("Hello,
|
||||
* World!").endObject().toString();
|
||||
* </pre>
|
||||
* <p>
|
||||
* which produces the string
|
||||
* <p>
|
||||
* <p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* {"JSON":"Hello, World!"}
|
||||
* </pre>
|
||||
|
@ -12,15 +12,15 @@ import java.io.Writer;
|
||||
* method for adding keys before values in objects. There are <code>array</code> and <code>endArray</code> methods that
|
||||
* make and bound array values, and <code>object</code> and <code>endObject</code> methods which make and bound object
|
||||
* values. All of these methods return the JSONWriter instance, permitting a cascade style. For example,
|
||||
* <p>
|
||||
* <p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* new JSONWriter(myWriter).object().key("JSON").value("Hello, World!").endObject();
|
||||
* </pre>
|
||||
* <p>
|
||||
* which writes
|
||||
* <p>
|
||||
* <p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* {"JSON":"Hello, World!"}
|
||||
* </pre>
|
||||
|
@ -44,7 +44,7 @@ public interface IPlotMain extends ILogger {
|
||||
|
||||
/**
|
||||
* Disable the implementation.
|
||||
* <p>
|
||||
*
|
||||
* <ul>
|
||||
* <li>If a full disable isn't feasibly, just disable what it can.
|
||||
* </ul>
|
||||
|
@ -75,8 +75,7 @@ import java.util.zip.ZipInputStream;
|
||||
@Getter private Updater updater;
|
||||
private PlotVersion version;
|
||||
// Files and configuration
|
||||
@Getter
|
||||
private File jarFile = null; // This file
|
||||
@Getter private File jarFile = null; // This file
|
||||
private File storageFile;
|
||||
@Getter private PlotAreaManager plotAreaManager;
|
||||
|
||||
@ -266,10 +265,12 @@ import java.util.zip.ZipInputStream;
|
||||
copyFile("automerge.js", Settings.Paths.SCRIPTS);
|
||||
copyFile("town.template", Settings.Paths.TEMPLATES);
|
||||
copyFile("skyblock.template", Settings.Paths.TEMPLATES);
|
||||
copyFile("german.yml", Settings.Paths.TRANSLATIONS);
|
||||
copyFile("s_chinese_unescaped.yml", Settings.Paths.TRANSLATIONS);
|
||||
copyFile("s_chinese.yml", Settings.Paths.TRANSLATIONS);
|
||||
copyFile("italian.yml", Settings.Paths.TRANSLATIONS);
|
||||
copyFile("bridge.template", Settings.Paths.TEMPLATES);
|
||||
copyFile("de-DE.yml", Settings.Paths.TRANSLATIONS);
|
||||
copyFile("es-ES.yml", Settings.Paths.TRANSLATIONS);
|
||||
copyFile("zh-CN.yml", Settings.Paths.TRANSLATIONS);
|
||||
copyFile("it-IT.yml", Settings.Paths.TRANSLATIONS);
|
||||
copyFile("ko-KR.yml", Settings.Paths.TRANSLATIONS);
|
||||
showDebug();
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
@ -778,8 +779,12 @@ import java.util.zip.ZipInputStream;
|
||||
List<PlotArea> areas = Arrays.asList(plotAreaManager.getAllPlotAreas());
|
||||
Collections.sort(areas, new Comparator<PlotArea>() {
|
||||
@Override public int compare(PlotArea a, PlotArea b) {
|
||||
if (priorityArea != null && StringMan.isEqual(a.toString(), b.toString())) {
|
||||
return -1;
|
||||
if (priorityArea != null) {
|
||||
if (a.equals(priorityArea)) {
|
||||
return -1;
|
||||
} else if (b.equals(priorityArea)) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return a.hashCode() - b.hashCode();
|
||||
}
|
||||
@ -1089,7 +1094,7 @@ import java.util.zip.ZipInputStream;
|
||||
* <li>Loads (and/or generates) the PlotArea configuration
|
||||
* <li>Sets up the world border if configured
|
||||
* </ul>
|
||||
* <p>
|
||||
*
|
||||
* <p>If loading an augmented plot world:
|
||||
* <ul>
|
||||
* <li>Creates the AugmentedPopulator classes
|
||||
@ -1151,7 +1156,8 @@ import java.util.zip.ZipInputStream;
|
||||
PlotSquared.log(C.PREFIX + "&aDetected world load for '" + world + "'");
|
||||
PlotSquared.log(C.PREFIX + "&3 - generator: &7" + baseGenerator + ">" + plotGenerator);
|
||||
PlotSquared.log(C.PREFIX + "&3 - plotworld: &7" + plotArea.getClass().getName());
|
||||
PlotSquared.log(C.PREFIX + "&3 - plotAreaManager: &7" + plotManager.getClass().getName());
|
||||
PlotSquared
|
||||
.log(C.PREFIX + "&3 - plotAreaManager: &7" + plotManager.getClass().getName());
|
||||
if (!this.worlds.contains(path)) {
|
||||
this.worlds.createSection(path);
|
||||
worldSection = this.worlds.getConfigurationSection(path);
|
||||
@ -1323,8 +1329,8 @@ import java.util.zip.ZipInputStream;
|
||||
|
||||
/**
|
||||
* Setup the configuration for a plot world based on world arguments.
|
||||
* <p>
|
||||
* <p>
|
||||
*
|
||||
*
|
||||
* <i>e.g. /mv create <world> normal -g PlotSquared:<args></i>
|
||||
*
|
||||
* @param world The name of the world
|
||||
@ -1784,7 +1790,8 @@ import java.util.zip.ZipInputStream;
|
||||
}
|
||||
}
|
||||
|
||||
public void foreachPlotArea(@NonNull final String world, @NonNull final RunnableVal<PlotArea> runnable) {
|
||||
public void foreachPlotArea(@NonNull final String world,
|
||||
@NonNull final RunnableVal<PlotArea> runnable) {
|
||||
final PlotArea[] array = this.plotAreaManager.getPlotAreas(world, null);
|
||||
if (array == null) {
|
||||
return;
|
||||
@ -1925,9 +1932,10 @@ import java.util.zip.ZipInputStream;
|
||||
*
|
||||
* @param alias to search plots
|
||||
* @param worldname to filter alias to a specific world [optional] null means all worlds
|
||||
* @return Set<{@link Plot}> empty if nothing found
|
||||
* @return Set<{ @ link Plot }> empty if nothing found
|
||||
*/
|
||||
public Set<Plot> getPlotsByAlias(@Nullable final String alias, @NonNull final String worldname) {
|
||||
public Set<Plot> getPlotsByAlias(@Nullable final String alias,
|
||||
@NonNull final String worldname) {
|
||||
final Set<Plot> result = new HashSet<>();
|
||||
if (alias != null) {
|
||||
for (final Plot plot : getPlots()) {
|
||||
|
@ -17,9 +17,8 @@ public class Updater {
|
||||
|
||||
public String getChanges() {
|
||||
if (changes == null) {
|
||||
try (Scanner scanner = new Scanner(new URL(
|
||||
"http://empcraft.com/plots/cl?" + Integer.toHexString(PlotSquared.get().getVersion().hash))
|
||||
.openStream(), "UTF-8")) {
|
||||
try (Scanner scanner = new Scanner(new URL("http://empcraft.com/plots/cl?" + Integer
|
||||
.toHexString(PlotSquared.get().getVersion().hash)).openStream(), "UTF-8")) {
|
||||
changes = scanner.useDelimiter("\\A").next();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -16,7 +16,7 @@ import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
@CommandDeclaration(command = "add", description = "Allow a user to build while you are online", usage = "/plot add <player>", category = CommandCategory.SETTINGS, permission = "plots.add", requiredType = RequiredType.NONE)
|
||||
@CommandDeclaration(command = "add", description = "Allow a user to build in a plot while you are online", usage = "/plot add <player>", category = CommandCategory.SETTINGS, permission = "plots.add", requiredType = RequiredType.NONE)
|
||||
public class Add extends Command {
|
||||
|
||||
public Add() {
|
||||
|
@ -94,7 +94,8 @@ public class Alias extends SubCommand {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (UUIDHandler.nameExists(new StringWrapper(alias)) || PlotSquared.get().hasPlotArea(alias)) {
|
||||
if (UUIDHandler.nameExists(new StringWrapper(alias)) || PlotSquared.get()
|
||||
.hasPlotArea(alias)) {
|
||||
MainUtil.sendMessage(player, C.ALIAS_IS_TAKEN);
|
||||
return false;
|
||||
}
|
||||
|
@ -81,8 +81,8 @@ public class Area extends SubCommand {
|
||||
final int offsetX = bx - (area.ROAD_WIDTH == 0 ? 0 : lower);
|
||||
final int offsetZ = bz - (area.ROAD_WIDTH == 0 ? 0 : lower);
|
||||
final RegionWrapper region = new RegionWrapper(bx, tx, bz, tz);
|
||||
Set<PlotArea> areas = PlotSquared
|
||||
.get().getPlotAreas(area.worldname, region);
|
||||
Set<PlotArea> areas =
|
||||
PlotSquared.get().getPlotAreas(area.worldname, region);
|
||||
if (!areas.isEmpty()) {
|
||||
C.CLUSTER_INTERSECTION
|
||||
.send(player, areas.iterator().next().toString());
|
||||
@ -104,10 +104,12 @@ public class Area extends SubCommand {
|
||||
Runnable run = new Runnable() {
|
||||
@Override public void run() {
|
||||
if (offsetX != 0) {
|
||||
PlotSquared.get().worlds.set(path + ".road.offset.x", offsetX);
|
||||
PlotSquared.get().worlds
|
||||
.set(path + ".road.offset.x", offsetX);
|
||||
}
|
||||
if (offsetZ != 0) {
|
||||
PlotSquared.get().worlds.set(path + ".road.offset.z", offsetZ);
|
||||
PlotSquared.get().worlds
|
||||
.set(path + ".road.offset.z", offsetZ);
|
||||
}
|
||||
final String world = SetupUtils.manager.setupWorld(object);
|
||||
if (WorldUtil.IMP.isWorld(world)) {
|
||||
@ -458,8 +460,8 @@ public class Area extends SubCommand {
|
||||
case "remove":
|
||||
MainUtil.sendMessage(player,
|
||||
"$1World creation settings may be stored in multiple locations:"
|
||||
+ "\n$3 - $2Bukkit bukkit.yml" + "\n$3 - $2" + PlotSquared.imp().getPluginName()
|
||||
+ " settings.yml"
|
||||
+ "\n$3 - $2Bukkit bukkit.yml" + "\n$3 - $2" + PlotSquared.imp()
|
||||
.getPluginName() + " settings.yml"
|
||||
+ "\n$3 - $2Multiverse worlds.yml (or any world management plugin)"
|
||||
+ "\n$1Stop the server and delete it from these locations.");
|
||||
return true;
|
||||
|
@ -14,7 +14,7 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue;
|
||||
|
||||
@CommandDeclaration(command = "clear", description = "Clear a plot", permission = "plots.clear", category = CommandCategory.APPEARANCE, usage = "/plot clear", aliases = "reset", confirmation = true)
|
||||
@CommandDeclaration(command = "clear", description = "Clear the plot you stand on", permission = "plots.clear", category = CommandCategory.APPEARANCE, usage = "/plot clear", aliases = "reset", confirmation = true)
|
||||
public class Clear extends Command {
|
||||
|
||||
// Note: To clear a specific plot use /plot <plot> clear
|
||||
|
@ -103,8 +103,9 @@ public class Database extends SubCommand {
|
||||
if (newPlot != null) {
|
||||
PlotId newId = newPlot.getId();
|
||||
PlotId id = plot.getId();
|
||||
File worldFile = new File(PlotSquared.imp().getWorldContainer(),
|
||||
id.toCommaSeparatedString());
|
||||
File worldFile =
|
||||
new File(PlotSquared.imp().getWorldContainer(),
|
||||
id.toCommaSeparatedString());
|
||||
if (worldFile.exists()) {
|
||||
File newFile =
|
||||
new File(PlotSquared.imp().getWorldContainer(),
|
||||
@ -127,7 +128,8 @@ public class Database extends SubCommand {
|
||||
plots.add(plot);
|
||||
}
|
||||
} else {
|
||||
HashMap<PlotId, Plot> plotmap = PlotSquared.get().plots_tmp.get(areaname);
|
||||
HashMap<PlotId, Plot> plotmap =
|
||||
PlotSquared.get().plots_tmp.get(areaname);
|
||||
if (plotmap == null) {
|
||||
plotmap = new HashMap<>();
|
||||
PlotSquared.get().plots_tmp.put(areaname, plotmap);
|
||||
|
@ -25,8 +25,8 @@ public class Debug extends SubCommand {
|
||||
String section = C.DEBUG_SECTION.s();
|
||||
information.append(header);
|
||||
information.append(getSection(section, "PlotArea"));
|
||||
information
|
||||
.append(getLine(line, "Plot Worlds", StringMan.join(PlotSquared.get().getPlotAreas(), ", ")));
|
||||
information.append(
|
||||
getLine(line, "Plot Worlds", StringMan.join(PlotSquared.get().getPlotAreas(), ", ")));
|
||||
information.append(getLine(line, "Owned Plots", PlotSquared.get().getPlots().size()));
|
||||
information.append(getSection(section, "Messages"));
|
||||
information.append(getLine(line, "Total Messages", C.values().length));
|
||||
|
@ -37,8 +37,9 @@ import java.util.*;
|
||||
if (file.exists()) {
|
||||
init();
|
||||
String script = StringMan.join(Files.readLines(new File(new File(
|
||||
PlotSquared.get().IMP.getDirectory() + File.separator + Settings.Paths.SCRIPTS),
|
||||
"start.js"), StandardCharsets.UTF_8), System.getProperty("line.separator"));
|
||||
PlotSquared.get().IMP.getDirectory() + File.separator
|
||||
+ Settings.Paths.SCRIPTS), "start.js"), StandardCharsets.UTF_8),
|
||||
System.getProperty("line.separator"));
|
||||
this.scope.put("THIS", this);
|
||||
this.scope.put("PlotPlayer", ConsolePlayer.getConsole());
|
||||
this.engine.eval(script, this.scope);
|
||||
@ -261,8 +262,8 @@ import java.util.*;
|
||||
case "addcmd":
|
||||
try {
|
||||
final String cmd = StringMan.join(Files.readLines(MainUtil.getFile(new File(
|
||||
PlotSquared.get().IMP.getDirectory() + File.separator + Settings.Paths.SCRIPTS),
|
||||
args[1]), StandardCharsets.UTF_8),
|
||||
PlotSquared.get().IMP.getDirectory() + File.separator
|
||||
+ Settings.Paths.SCRIPTS), args[1]), StandardCharsets.UTF_8),
|
||||
System.getProperty("line.separator"));
|
||||
new Command(MainCommand.getInstance(), true, args[1].split("\\.")[0], null,
|
||||
RequiredType.NONE, CommandCategory.DEBUG) {
|
||||
@ -291,8 +292,8 @@ import java.util.*;
|
||||
case "run":
|
||||
try {
|
||||
script = StringMan.join(Files.readLines(MainUtil.getFile(new File(
|
||||
PlotSquared.get().IMP.getDirectory() + File.separator + Settings.Paths.SCRIPTS),
|
||||
args[1]), StandardCharsets.UTF_8),
|
||||
PlotSquared.get().IMP.getDirectory() + File.separator
|
||||
+ Settings.Paths.SCRIPTS), args[1]), StandardCharsets.UTF_8),
|
||||
System.getProperty("line.separator"));
|
||||
if (args.length > 2) {
|
||||
HashMap<String, String> replacements = new HashMap<>();
|
||||
@ -307,8 +308,8 @@ import java.util.*;
|
||||
}
|
||||
break;
|
||||
case "list-scripts":
|
||||
String path =
|
||||
PlotSquared.get().IMP.getDirectory() + File.separator + Settings.Paths.SCRIPTS;
|
||||
String path = PlotSquared.get().IMP.getDirectory() + File.separator
|
||||
+ Settings.Paths.SCRIPTS;
|
||||
File folder = new File(path);
|
||||
File[] filesArray = folder.listFiles();
|
||||
|
||||
@ -411,13 +412,15 @@ import java.util.*;
|
||||
} catch (ScriptException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
PlotSquared.log("> " + (System.currentTimeMillis() - start) + "ms -> " + result);
|
||||
PlotSquared.log(
|
||||
"> " + (System.currentTimeMillis() - start) + "ms -> " + result);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
long start = System.currentTimeMillis();
|
||||
Object result = this.engine.eval(script, this.scope);
|
||||
PlotSquared.log("> " + (System.currentTimeMillis() - start) + "ms -> " + result);
|
||||
PlotSquared
|
||||
.log("> " + (System.currentTimeMillis() - start) + "ms -> " + result);
|
||||
}
|
||||
return true;
|
||||
} catch (ScriptException e) {
|
||||
|
@ -25,8 +25,9 @@ public class DebugPaste extends SubCommand {
|
||||
String commandsYML = HastebinUtility.upload(PlotSquared.get().commandsFile);
|
||||
String latestLOG;
|
||||
try {
|
||||
latestLOG = HastebinUtility
|
||||
.upload(new File(PlotSquared.get().IMP.getDirectory(), "../../logs/latest.log"));
|
||||
latestLOG = HastebinUtility.upload(
|
||||
new File(PlotSquared.get().IMP.getDirectory(),
|
||||
"../../logs/latest.log"));
|
||||
} catch (IOException ignored) {
|
||||
MainUtil.sendMessage(player,
|
||||
"&clatest.log is too big to be pasted, will ignore");
|
||||
|
@ -6,11 +6,15 @@ import com.github.intellectualsites.plotsquared.plot.config.Settings;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.*;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.*;
|
||||
|
||||
@CommandDeclaration(command = "delete", permission = "plots.delete", description = "Delete a plot", usage = "/plot delete", aliases = {
|
||||
"dispose", "del",
|
||||
"reset"}, category = CommandCategory.CLAIMING, requiredType = RequiredType.NONE, confirmation = true)
|
||||
|
||||
@CommandDeclaration(command = "delete", permission = "plots.delete", description = "Delete the plot you stand on", usage = "/plot delete", aliases = {
|
||||
"dispose",
|
||||
"del"}, category = CommandCategory.CLAIMING, requiredType = RequiredType.NONE, confirmation = true)
|
||||
public class Delete extends SubCommand {
|
||||
|
||||
// Note: To delete a specific plot use /plot <plot> delete
|
||||
// The syntax also works with any command: /plot <plot> <command>
|
||||
|
||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||
|
||||
Location loc = player.getLocation();
|
||||
|
@ -18,7 +18,7 @@ import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
@CommandDeclaration(command = "kick", aliases = {
|
||||
"k"}, description = "Kick a player from your plot", permission = "plots.kick", usage = "<player>", category = CommandCategory.TELEPORT, requiredType = RequiredType.NONE)
|
||||
"k"}, description = "Kick a player from your plot", permission = "plots.kick", usage = "/plot kick <player>", category = CommandCategory.TELEPORT, requiredType = RequiredType.NONE)
|
||||
public class Kick extends SubCommand {
|
||||
|
||||
public Kick() {
|
||||
@ -75,8 +75,8 @@ public class Kick extends SubCommand {
|
||||
Location spawn = WorldUtil.IMP.getSpawn(location.getWorld());
|
||||
C.YOU_GOT_KICKED.send(player2);
|
||||
if (plot.equals(spawn.getPlot())) {
|
||||
Location newSpawn =
|
||||
WorldUtil.IMP.getSpawn(PlotSquared.get().getPlotAreaManager().getAllWorlds()[0]);
|
||||
Location newSpawn = WorldUtil.IMP
|
||||
.getSpawn(PlotSquared.get().getPlotAreaManager().getAllWorlds()[0]);
|
||||
if (plot.equals(newSpawn.getPlot())) {
|
||||
// Kick from server if you can't be teleported to spawn
|
||||
player2.kick(C.YOU_GOT_KICKED.s());
|
||||
|
@ -15,7 +15,7 @@ import java.net.URL;
|
||||
import java.util.List;
|
||||
|
||||
@CommandDeclaration(command = "load", aliases = {
|
||||
"restore"}, category = CommandCategory.SCHEMATIC, requiredType = RequiredType.NONE, description = "Load your plot", permission = "plots.load", usage = "/plot restore")
|
||||
"restore"}, category = CommandCategory.SCHEMATIC, requiredType = RequiredType.NONE, description = "Load your plot", permission = "plots.load", usage = "/plot load")
|
||||
public class Load extends SubCommand {
|
||||
|
||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||
@ -70,7 +70,8 @@ public class Load extends SubCommand {
|
||||
MainUtil.sendMessage(player, C.GENERATING_COMPONENT);
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
SchematicHandler.Schematic schematic = SchematicHandler.manager.getSchematic(url);
|
||||
SchematicHandler.Schematic schematic =
|
||||
SchematicHandler.manager.getSchematic(url);
|
||||
if (schematic == null) {
|
||||
plot.removeRunning();
|
||||
sendMessage(player, C.SCHEMATIC_INVALID,
|
||||
|
@ -6,7 +6,7 @@ import com.github.intellectualsites.plotsquared.plot.flag.Flags;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.*;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.WorldUtil;
|
||||
|
||||
@CommandDeclaration(command = "music", permission = "plots.music", description = "Player music in a plot", usage = "/plot music", category = CommandCategory.APPEARANCE, requiredType = RequiredType.PLAYER)
|
||||
@CommandDeclaration(command = "music", permission = "plots.music", description = "Play music in your plot", usage = "/plot music", category = CommandCategory.APPEARANCE, requiredType = RequiredType.PLAYER)
|
||||
public class Music extends SubCommand {
|
||||
|
||||
@Override public boolean onCommand(PlotPlayer player, String[] args) {
|
||||
|
@ -73,14 +73,17 @@ public class Owner extends SetCommand {
|
||||
final boolean removeDenied = plot.isDenied(finalUUID);
|
||||
Runnable run = new Runnable() {
|
||||
@Override public void run() {
|
||||
if (removeDenied)
|
||||
plot.removeDenied(finalUUID);
|
||||
plot.setOwner(finalUUID);
|
||||
plot.setSign(finalName);
|
||||
MainUtil.sendMessage(player, C.SET_OWNER);
|
||||
if (other != null) {
|
||||
MainUtil.sendMessage(other, C.NOW_OWNER, plot.getArea() + ";" + plot.getId());
|
||||
}
|
||||
if (plot.setOwner(finalUUID, player)) {
|
||||
if (removeDenied)
|
||||
plot.removeDenied(finalUUID);
|
||||
plot.setSign(finalName);
|
||||
MainUtil.sendMessage(player, C.SET_OWNER);
|
||||
if (other != null) {
|
||||
MainUtil
|
||||
.sendMessage(other, C.NOW_OWNER, plot.getArea() + ";" + plot.getId());
|
||||
}
|
||||
} else
|
||||
MainUtil.sendMessage(player, C.SET_OWNER_CANCELLED);
|
||||
}
|
||||
};
|
||||
if (hasConfirmation(player)) {
|
||||
|
@ -8,15 +8,15 @@ import com.github.intellectualsites.plotsquared.plot.util.HttpUtil;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
||||
|
||||
@CommandDeclaration(command = "plugin", permission = "plots.use", description = "Show plugin information", aliases = "version", category = CommandCategory.INFO)
|
||||
@CommandDeclaration(command = "plugin", permission = "plots.use", description = "Show plugin information", usage = "/plot plugin", aliases = "version", category = CommandCategory.INFO)
|
||||
public class PluginCmd extends SubCommand {
|
||||
|
||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||
TaskManager.IMP.taskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.sendMessage(player, String
|
||||
.format("$2>> $1&l" + PlotSquared.imp().getPluginName() + " $2($1Version$2: $1%s$2)",
|
||||
PlotSquared.get().getVersion()));
|
||||
MainUtil.sendMessage(player, String.format(
|
||||
"$2>> $1&l" + PlotSquared.imp().getPluginName() + " $2($1Version$2: $1%s$2)",
|
||||
PlotSquared.get().getVersion()));
|
||||
MainUtil.sendMessage(player,
|
||||
"$2>> $1&lAuthors$2: $1Citymonstret $2& $1Empire92 $2& $1MattBDev");
|
||||
MainUtil.sendMessage(player,
|
||||
|
@ -110,7 +110,8 @@ public class Purge extends SubCommand {
|
||||
}
|
||||
}
|
||||
if (PlotSquared.get().plots_tmp != null) {
|
||||
for (Entry<String, HashMap<PlotId, Plot>> entry : PlotSquared.get().plots_tmp.entrySet()) {
|
||||
for (Entry<String, HashMap<PlotId, Plot>> entry : PlotSquared.get().plots_tmp
|
||||
.entrySet()) {
|
||||
String worldName = entry.getKey();
|
||||
if (world != null && !world.equalsIgnoreCase(worldName)) {
|
||||
continue;
|
||||
|
@ -102,14 +102,18 @@ public class Rate extends SubCommand {
|
||||
int rV = rating.getValue();
|
||||
Rating result =
|
||||
EventUtil.manager.callRating(this.player, plot, new Rating(rV));
|
||||
plot.addRating(this.player.getUUID(), result);
|
||||
sendMessage(this.player, C.RATING_APPLIED, plot.getId().toString());
|
||||
if (Permissions.hasPermission(this.player, C.PERMISSION_COMMENT)) {
|
||||
Command command =
|
||||
MainCommand.getInstance().getCommand(Comment.class);
|
||||
if (command != null) {
|
||||
MainUtil.sendMessage(this.player, C.COMMENT_THIS,
|
||||
command.getUsage());
|
||||
if (result != null) {
|
||||
plot.addRating(this.player.getUUID(), result);
|
||||
sendMessage(this.player, C.RATING_APPLIED,
|
||||
plot.getId().toString());
|
||||
if (Permissions
|
||||
.hasPermission(this.player, C.PERMISSION_COMMENT)) {
|
||||
Command command =
|
||||
MainCommand.getInstance().getCommand(Comment.class);
|
||||
if (command != null) {
|
||||
MainUtil.sendMessage(this.player, C.COMMENT_THIS,
|
||||
command.getUsage());
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@ -169,8 +173,10 @@ public class Rate extends SubCommand {
|
||||
return;
|
||||
}
|
||||
Rating result = EventUtil.manager.callRating(player, plot, new Rating(rating));
|
||||
plot.addRating(uuid, result);
|
||||
sendMessage(player, C.RATING_APPLIED, plot.getId().toString());
|
||||
if (result != null) {
|
||||
plot.addRating(uuid, result);
|
||||
sendMessage(player, C.RATING_APPLIED, plot.getId().toString());
|
||||
}
|
||||
}
|
||||
};
|
||||
if (plot.getSettings().ratings == null) {
|
||||
|
@ -9,7 +9,7 @@ import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
@CommandDeclaration(command = "relight", description = "Relight your plot", category = CommandCategory.DEBUG)
|
||||
@CommandDeclaration(command = "relight", description = "Relight your plot", usage = "/plot relight", category = CommandCategory.DEBUG)
|
||||
public class Relight extends Command {
|
||||
public Relight() {
|
||||
super(MainCommand.getInstance(), true);
|
||||
|
@ -14,7 +14,7 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
@CommandDeclaration(command = "reload", permission = "plots.admin.command.reload", description = "Reload configurations", usage = "/plot reload", category = CommandCategory.ADMINISTRATION)
|
||||
@CommandDeclaration(command = "reload", aliases = "rl", permission = "plots.admin.command.reload", description = "Reload translations and world settings", usage = "/plot reload", category = CommandCategory.ADMINISTRATION)
|
||||
public class Reload extends SubCommand {
|
||||
|
||||
@Override public boolean onCommand(PlotPlayer player, String[] args) {
|
||||
@ -25,8 +25,8 @@ public class Reload extends SubCommand {
|
||||
C.load(PlotSquared.get().translationFile);
|
||||
PlotSquared.get().foreachPlotArea(new RunnableVal<PlotArea>() {
|
||||
@Override public void run(PlotArea area) {
|
||||
ConfigurationSection worldSection =
|
||||
PlotSquared.get().worlds.getConfigurationSection("worlds." + area.worldname);
|
||||
ConfigurationSection worldSection = PlotSquared.get().worlds
|
||||
.getConfigurationSection("worlds." + area.worldname);
|
||||
if (worldSection == null) {
|
||||
return;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
|
||||
@CommandDeclaration(command = "schematic", permission = "plots.schematic", description = "Schematic command", aliases = {
|
||||
"sch"}, category = CommandCategory.SCHEMATIC, usage = "/plot schematic <arg...>")
|
||||
"sch", "schem"}, category = CommandCategory.SCHEMATIC, usage = "/plot schematic <arg...>")
|
||||
public class SchematicCmd extends SubCommand {
|
||||
|
||||
private boolean running = false;
|
||||
|
@ -8,13 +8,14 @@ import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
||||
|
||||
@CommandDeclaration(command = "sethome", permission = "plots.set.home", description = "Set the plot home", usage = "/plot sethome [none]", aliases = {
|
||||
@CommandDeclaration(command = "sethome", permission = "plots.set.home", description = "Set the plot home to your current position", usage = "/plot sethome [none]", aliases = {
|
||||
"sh", "seth"}, category = CommandCategory.SETTINGS, requiredType = RequiredType.NONE)
|
||||
public class SetHome extends SetCommand {
|
||||
|
||||
@Override public boolean set(PlotPlayer player, Plot plot, String value) {
|
||||
switch (value.toLowerCase()) {
|
||||
case "unset":
|
||||
case "reset":
|
||||
case "remove":
|
||||
case "none": {
|
||||
Plot base = plot.getBasePlot(false);
|
||||
|
@ -74,7 +74,8 @@ import java.util.Map.Entry;
|
||||
MainUtil.sendMessage(player,
|
||||
"&cYou must choose a generator!" + prefix + StringMan
|
||||
.join(SetupUtils.generators.keySet(), prefix)
|
||||
.replaceAll(PlotSquared.imp().getPluginName(), "&2" + PlotSquared.imp().getPluginName()));
|
||||
.replaceAll(PlotSquared.imp().getPluginName(),
|
||||
"&2" + PlotSquared.imp().getPluginName()));
|
||||
sendMessage(player, C.SETUP_INIT);
|
||||
return false;
|
||||
}
|
||||
|
@ -26,7 +26,8 @@ public class Template extends SubCommand {
|
||||
|
||||
public static boolean extractAllFiles(String world, String template) {
|
||||
try {
|
||||
File folder = MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), Settings.Paths.TEMPLATES);
|
||||
File folder =
|
||||
MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), Settings.Paths.TEMPLATES);
|
||||
if (!folder.exists()) {
|
||||
return false;
|
||||
}
|
||||
@ -84,7 +85,8 @@ public class Template extends SubCommand {
|
||||
}
|
||||
|
||||
public static void zipAll(String world, Set<FileBytes> files) throws IOException {
|
||||
File output = MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), Settings.Paths.TEMPLATES);
|
||||
File output =
|
||||
MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), Settings.Paths.TEMPLATES);
|
||||
output.mkdirs();
|
||||
try (FileOutputStream fos = new FileOutputStream(
|
||||
output + File.separator + world + ".template");
|
||||
|
@ -17,7 +17,7 @@ import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
@CommandDeclaration(command = "trust", aliases = {
|
||||
"t"}, requiredType = RequiredType.NONE, usage = "/plot trust <player>", description = "Allow a player to build in a plot", category = CommandCategory.SETTINGS)
|
||||
"t"}, requiredType = RequiredType.NONE, usage = "/plot trust <player>", description = "Allow a user to build in a plot while you are offline", category = CommandCategory.SETTINGS)
|
||||
public class Trust extends Command {
|
||||
|
||||
public Trust() {
|
||||
|
@ -106,8 +106,8 @@ import java.util.*;
|
||||
}
|
||||
List<Plot> plots;
|
||||
if (shouldSortByArea) {
|
||||
plots = PlotSquared
|
||||
.get().sortPlots(unsorted, PlotSquared.SortType.CREATION_DATE, sortByArea);
|
||||
plots = PlotSquared.get()
|
||||
.sortPlots(unsorted, PlotSquared.SortType.CREATION_DATE, sortByArea);
|
||||
} else {
|
||||
plots = PlotSquared.get().sortPlotsByTemp(unsorted);
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ public enum C {
|
||||
* Confirm
|
||||
*/
|
||||
EXPIRED_CONFIRM("$2Confirmation has expired, please run the command again!",
|
||||
"Confirm"), FAILED_CONFIRM("$2You have no pending actions to confirm!",
|
||||
"Confirm"), FAILED_CONFIRM("$2You have no pending actions to confirm!",
|
||||
"Confirm"), REQUIRES_CONFIRM(
|
||||
"$2Are you sure you wish to execute: $1%s$2?&-$2This cannot be undone! If you are sure: $1/plot confirm",
|
||||
"Confirm"), /*
|
||||
@ -185,8 +185,8 @@ public enum C {
|
||||
* Cluster
|
||||
*/
|
||||
CLUSTER_AVAILABLE_ARGS(
|
||||
"$1The following sub commands are available: $4list$2, $4create$2, $4delete$2, $4resize$2, $4invite$2, $4kick$2, $4leave$2, "
|
||||
+ "$4members$2, $4info$2, $4tp$2, $4sethome", "Cluster"), CLUSTER_LIST_HEADING(
|
||||
"$1The following sub commands are available: $4list$2, $4create$2, $4delete$2, $4resize$2, $4invite$2, $4kick$2, $4leave$2, "
|
||||
+ "$4members$2, $4info$2, $4tp$2, $4sethome", "Cluster"), CLUSTER_LIST_HEADING(
|
||||
"$2There are $1%s$2 clusters in this world", "Cluster"), CLUSTER_LIST_ELEMENT("$2 - $1%s&-",
|
||||
"Cluster"), CLUSTER_INTERSECTION("$2The proposed area overlaps with: %s0",
|
||||
"Cluster"), CLUSTER_OUTSIDE("$2The proposed area is outside the plot area: %s0",
|
||||
@ -217,7 +217,7 @@ public enum C {
|
||||
* WorldEdit masks
|
||||
*/
|
||||
WORLDEDIT_DELAYED("$2Please wait while we process your WorldEdit action...",
|
||||
"WorldEdit Masks"), WORLDEDIT_RUN("$2Apologies for the delay. Now executing: %s",
|
||||
"WorldEdit Masks"), WORLDEDIT_RUN("$2Apologies for the delay. Now executing: %s",
|
||||
"WorldEdit Masks"), REQUIRE_SELECTION_IN_MASK(
|
||||
"$2%s of your selection is not within your plot mask. You can only make edits within your plot.",
|
||||
"WorldEdit Masks"), WORLDEDIT_VOLUME(
|
||||
@ -262,7 +262,7 @@ public enum C {
|
||||
* Console
|
||||
*/
|
||||
NOT_CONSOLE("$2For safety reasons, this command can only be executed by console.",
|
||||
"Console"), IS_CONSOLE("$2This command can only be executed by a player.", "Console"),
|
||||
"Console"), IS_CONSOLE("$2This command can only be executed by a player.", "Console"),
|
||||
|
||||
/*
|
||||
Inventory
|
||||
@ -337,16 +337,18 @@ public enum C {
|
||||
* Schematic Stuff
|
||||
*/
|
||||
SCHEMATIC_TOO_LARGE("$2The plot is too large for this action!",
|
||||
"Schematics"), SCHEMATIC_MISSING_ARG(
|
||||
"Schematics"), SCHEMATIC_MISSING_ARG(
|
||||
"$2You need to specify an argument. Possible values: $1test <name>$2 , $1save$2 , $1paste $2, $1exportall",
|
||||
"Schematics"), SCHEMATIC_INVALID("$2That is not a valid schematic. Reason: $2%s",
|
||||
"Schematics"), SCHEMATIC_VALID("$2That is a valid schematic",
|
||||
"Schematics"), SCHEMATIC_PASTE_FAILED("$2Failed to paste the schematic",
|
||||
"Schematics"), SCHEMATIC_PASTE_SUCCESS("$4The schematic pasted successfully", "Schematics"), /*
|
||||
"Schematics"), SCHEMATIC_PASTE_SUCCESS("$4The schematic pasted successfully",
|
||||
"Schematics"), /*
|
||||
* Title Stuff
|
||||
*/
|
||||
TITLE_ENTERED_PLOT("$1Plot: %world%;%x%;%z%", "Titles"), TITLE_ENTERED_PLOT_SUB("$4Owned by %s",
|
||||
"Titles"), PREFIX_GREETING("$1%id%$2> ", "Titles"), PREFIX_FAREWELL("$1%id%$2> ", "Titles"), /*
|
||||
"Titles"), PREFIX_GREETING("$1%id%$2> ", "Titles"), PREFIX_FAREWELL("$1%id%$2> ",
|
||||
"Titles"), /*
|
||||
* Core Stuff
|
||||
*/
|
||||
TASK_START("Starting task...", "Core"), PREFIX("$3[$1P2$3] $2", "Core"), ENABLED(
|
||||
@ -354,7 +356,7 @@ public enum C {
|
||||
* Reload
|
||||
*/
|
||||
RELOADED_CONFIGS("$1Translations and world settings have been reloaded",
|
||||
"Reload"), RELOAD_FAILED("$2Failed to reload file configurations", "Reload"),
|
||||
"Reload"), RELOAD_FAILED("$2Failed to reload file configurations", "Reload"),
|
||||
/*
|
||||
* BarAPI
|
||||
*/
|
||||
@ -372,7 +374,7 @@ public enum C {
|
||||
* Position
|
||||
*/
|
||||
MISSING_POSITION("$2You need to specify a position. Possible values: $1none",
|
||||
"Position"), POSITION_SET("$1Home position set to your current location",
|
||||
"Position"), POSITION_SET("$1Home position set to your current location",
|
||||
"Position"), POSITION_UNSET("$1Home position reset to the default location",
|
||||
"Position"), HOME_ARGUMENT("$2Use /plot set home [none]", "Position"), INVALID_POSITION(
|
||||
"$2That is not a valid position value", "Position"), /*
|
||||
@ -385,7 +387,7 @@ public enum C {
|
||||
* Permission
|
||||
*/
|
||||
NO_SCHEMATIC_PERMISSION("$2You don't have the permission required to use schematic $1%s",
|
||||
"Permission"), NO_PERMISSION("$2You are lacking the permission node: $1%s",
|
||||
"Permission"), NO_PERMISSION("$2You are lacking the permission node: $1%s",
|
||||
"Permission"), NO_PERMISSION_EVENT("$2You are lacking the permission node: $1%s",
|
||||
"Permission"), NO_PLOT_PERMS("$2You must be the plot owner to perform this action",
|
||||
"Permission"), CANT_CLAIM_MORE_PLOTS("$2You can't claim more plots.",
|
||||
@ -418,15 +420,15 @@ public enum C {
|
||||
* Player not found
|
||||
*/
|
||||
INVALID_PLAYER_WAIT("$2Player not found: $1%s$2, fetching it. Try again soon.",
|
||||
"Errors"), INVALID_PLAYER("$2Player not found: $1%s$2.",
|
||||
"Errors"), INVALID_PLAYER_OFFLINE("$2The player must be online: $1%s.", "Errors"), /*
|
||||
"Errors"), INVALID_PLAYER("$2Player not found: $1%s$2.", "Errors"), INVALID_PLAYER_OFFLINE(
|
||||
"$2The player must be online: $1%s.", "Errors"), /*
|
||||
* Command flag
|
||||
*/
|
||||
INVALID_COMMAND_FLAG("$2Invalid command flag: %s0", "Errors"), /*
|
||||
* Unknown Error
|
||||
*/
|
||||
ERROR("$2An error occurred: %s",
|
||||
"Errors"), // SETTINGS_PASTE_UPLOADED("$2settings.yml was uploaded to: $1%url%", "Paste"),
|
||||
"Errors"), // SETTINGS_PASTE_UPLOADED("$2settings.yml was uploaded to: $1%url%", "Paste"),
|
||||
// LATEST_LOG_UPLOADED("$2latest.log was uploaded to: $1%url%", "Paste"),
|
||||
DEBUG_REPORT_CREATED("$1Uploaded a full debug to: $1%url%", "Paste"), /*
|
||||
*
|
||||
@ -438,7 +440,7 @@ public enum C {
|
||||
* trim
|
||||
*/
|
||||
TRIM_IN_PROGRESS("A world trim task is already in progress!",
|
||||
"Trim"), NOT_VALID_HYBRID_PLOT_WORLD(
|
||||
"Trim"), NOT_VALID_HYBRID_PLOT_WORLD(
|
||||
"The hybrid plot manager is required to perform this action", "Trim"), /*
|
||||
* No <plot>
|
||||
*/
|
||||
@ -538,7 +540,7 @@ public enum C {
|
||||
* List
|
||||
*/
|
||||
COMMENT_LIST_HEADER_PAGED("$2(Page $1%cur$2/$1%max$2) $1List of %amount% comments",
|
||||
"List"), CLICKABLE(" (interactive)", "List"), AREA_LIST_HEADER_PAGED(
|
||||
"List"), CLICKABLE(" (interactive)", "List"), AREA_LIST_HEADER_PAGED(
|
||||
"$2(Page $1%cur$2/$1%max$2) $1List of %amount% areas", "List"), PLOT_LIST_HEADER_PAGED(
|
||||
"$2(Page $1%cur$2/$1%max$2) $1List of %amount% plots", "List"), PLOT_LIST_HEADER(
|
||||
"$1List of %word% plots", "List"), PLOT_LIST_ITEM("$2>> $1%id$2:$1%world $2- $1%owner",
|
||||
@ -550,12 +552,12 @@ public enum C {
|
||||
* Wait
|
||||
*/
|
||||
WAIT_FOR_TIMER(
|
||||
"$2A setblock timer is bound to either the current plot or you. Please wait for it to finish",
|
||||
"Errors"), /*
|
||||
"$2A setblock timer is bound to either the current plot or you. Please wait for it to finish",
|
||||
"Errors"), /*
|
||||
* Chat
|
||||
*/
|
||||
PLOT_CHAT_SPY_FORMAT("$2[$1Plot Spy$2][$1%plot_id%$2] $1%sender%$2: $1%msg%",
|
||||
"Chat"), PLOT_CHAT_FORMAT("$2[$1Plot Chat$2][$1%plot_id%$2] $1%sender%$2: $1%msg%",
|
||||
"Chat"), PLOT_CHAT_FORMAT("$2[$1Plot Chat$2][$1%plot_id%$2] $1%sender%$2: $1%msg%",
|
||||
"Chat"), PLOT_CHAT_FORCED("$2This world forces everyone to use plot chat.",
|
||||
"Chat"), PLOT_CHAT_ON("$4Plot chat enabled.", "Chat"), PLOT_CHAT_OFF(
|
||||
"$4Plot chat disabled.", "Chat"), /*
|
||||
@ -574,7 +576,7 @@ public enum C {
|
||||
* Rain
|
||||
*/
|
||||
NEED_ON_OFF("$2You need to specify a value. Possible values: $1on$2, $1off",
|
||||
"Rain"), SETTING_UPDATED("$4You successfully updated the setting", "Rain"), /*
|
||||
"Rain"), SETTING_UPDATED("$4You successfully updated the setting", "Rain"), /*
|
||||
* Flag
|
||||
*/
|
||||
FLAG_KEY("$2Key: %s", "Flag"), FLAG_TYPE("$2Type: %s", "Flag"), FLAG_DESC("$2Desc: %s",
|
||||
@ -591,7 +593,8 @@ public enum C {
|
||||
TRUSTED_ADDED("$4You successfully trusted a user to the plot", "Trusted"), TRUSTED_REMOVED(
|
||||
"$4You successfully removed a trusted user from the plot", "Trusted"), WAS_NOT_ADDED(
|
||||
"$2That player was not trusted on this plot", "Trusted"), PLOT_REMOVED_USER(
|
||||
"$1Plot %s of which you were added to has been deleted due to owner inactivity", "Trusted"), /*
|
||||
"$1Plot %s of which you were added to has been deleted due to owner inactivity",
|
||||
"Trusted"), /*
|
||||
* Member
|
||||
*/
|
||||
REMOVED_PLAYERS("$2Removed %s players from this plot.", "Member"), ALREADY_OWNER(
|
||||
@ -603,8 +606,9 @@ public enum C {
|
||||
"$2You are not allowed to add any more players to this plot", "Member"), /*
|
||||
* Set Owner
|
||||
*/
|
||||
SET_OWNER("$4You successfully set the plot owner", "Owner"), NOW_OWNER(
|
||||
"$4You are now owner of plot %s", "Owner"), /*
|
||||
SET_OWNER("$4You successfully set the plot owner", "Owner"), SET_OWNER_CANCELLED(
|
||||
"$2The setowner action was cancelled", "Owner"), NOW_OWNER("$4You are now owner of plot %s",
|
||||
"Owner"), /*
|
||||
* Signs
|
||||
*/
|
||||
OWNER_SIGN_LINE_1("$1ID: $1%id%", "Signs"), OWNER_SIGN_LINE_2("$1Owner:",
|
||||
|
@ -68,9 +68,9 @@ public class Config {
|
||||
field.set(instance, value);
|
||||
return;
|
||||
} catch (Throwable e) {
|
||||
PlotSquared
|
||||
.debug("Invalid configuration value: " + key + ": " + value + " in " + root
|
||||
.getSimpleName());
|
||||
PlotSquared.debug(
|
||||
"Invalid configuration value: " + key + ": " + value + " in " + root
|
||||
.getSimpleName());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
@ -262,8 +262,9 @@ public class Config {
|
||||
setAccessible(field);
|
||||
return field;
|
||||
} catch (Throwable e) {
|
||||
PlotSquared.debug("Invalid config field: " + StringMan.join(split, ".") + " for " + toNodeName(
|
||||
instance.getClass().getSimpleName()));
|
||||
PlotSquared.debug(
|
||||
"Invalid config field: " + StringMan.join(split, ".") + " for " + toNodeName(
|
||||
instance.getClass().getSimpleName()));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ public class Configuration {
|
||||
};
|
||||
public static final SettingValue<PlotBlock> BLOCK = new SettingValue<PlotBlock>("BLOCK") {
|
||||
@Override public boolean validateValue(String string) {
|
||||
StringComparison.ComparisonResult value =
|
||||
StringComparison<PlotBlock>.ComparisonResult value =
|
||||
WorldUtil.IMP.getClosestBlock(string);
|
||||
return !(value == null || value.match > 1);
|
||||
}
|
||||
|
@ -14,9 +14,11 @@ public class Settings extends Config {
|
||||
NOTE: Fields are saved in declaration order, classes in reverse order
|
||||
*/
|
||||
|
||||
@Comment("These first 4 aren't configurable") // This is a comment
|
||||
@Comment("These first 7 aren't configurable") // This is a comment
|
||||
@Final // Indicates that this value isn't configurable
|
||||
public static final String ISSUES = "https://github.com/IntellectualSites/PlotSquared/issues";
|
||||
@Final public static final String SUGGESTION =
|
||||
"https://github.com/IntellectualSites/PlotSquaredSuggestions";
|
||||
@Final public static final String WIKI =
|
||||
"https://github.com/IntellectualSites/PlotSquared/wiki";
|
||||
@Final public static String DATE; // These values are set from P2 before loading
|
||||
@ -31,7 +33,7 @@ public class Settings extends Config {
|
||||
|
||||
@Create // This value will be generated automatically
|
||||
public static ConfigBlock<Auto_Clear> AUTO_CLEAR = null;
|
||||
// A ConfigBlock is a section that can have multiple instances e.g. multiple expiry tasks
|
||||
// A ConfigBlock is a section that can have multiple instances e.g. multiple expiry tasks
|
||||
|
||||
public static void save(File file) {
|
||||
save(file, Settings.class);
|
||||
|
@ -320,7 +320,7 @@ public interface AbstractDB {
|
||||
|
||||
/**
|
||||
* Replace a old uuid with a new one in the database.
|
||||
* <p>
|
||||
*
|
||||
* <ul>
|
||||
* <li> Useful for replacing a few uuids (not the entire database).</li>
|
||||
* <li>or entire conversion, the uuidconvert command scales better.</li>
|
||||
|
@ -754,7 +754,8 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
last = subList.size();
|
||||
preparedStmt.addBatch();
|
||||
}
|
||||
PlotSquared.debug("&aBatch 1: " + count + " | " + objList.get(0).getClass().getCanonicalName());
|
||||
PlotSquared.debug(
|
||||
"&aBatch 1: " + count + " | " + objList.get(0).getClass().getCanonicalName());
|
||||
preparedStmt.executeBatch();
|
||||
preparedStmt.clearParameters();
|
||||
preparedStmt.close();
|
||||
@ -797,7 +798,8 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
last = subList.size();
|
||||
preparedStmt.addBatch();
|
||||
}
|
||||
PlotSquared.debug("&aBatch 2: " + count + " | " + objList.get(0).getClass().getCanonicalName());
|
||||
PlotSquared.debug(
|
||||
"&aBatch 2: " + count + " | " + objList.get(0).getClass().getCanonicalName());
|
||||
preparedStmt.executeBatch();
|
||||
preparedStmt.clearParameters();
|
||||
preparedStmt.close();
|
||||
@ -1693,8 +1695,9 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
if (Settings.Enabled_Components.DATABASE_PURGER) {
|
||||
toDelete.add(last.temp);
|
||||
} else {
|
||||
PlotSquared.debug("&cPLOT #" + id + "(" + last + ") in `" + this.prefix
|
||||
+ "plot` is a duplicate. Delete this plot or set `database-purger: true` in the settings.yml.");
|
||||
PlotSquared.debug(
|
||||
"&cPLOT #" + id + "(" + last + ") in `" + this.prefix
|
||||
+ "plot` is a duplicate. Delete this plot or set `database-purger: true` in the settings.yml.");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -1734,9 +1737,9 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Getting helpers
|
||||
*/
|
||||
/*
|
||||
* Getting helpers
|
||||
*/
|
||||
try (ResultSet r = statement.executeQuery(
|
||||
"SELECT `user_uuid`, `plot_plot_id` FROM `" + this.prefix + "plot_helpers`")) {
|
||||
ArrayList<Integer> toDelete = new ArrayList<>();
|
||||
@ -1762,9 +1765,9 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
deleteRows(toDelete, this.prefix + "plot_helpers", "plot_plot_id");
|
||||
}
|
||||
|
||||
/*
|
||||
* Getting trusted
|
||||
*/
|
||||
/*
|
||||
* Getting trusted
|
||||
*/
|
||||
try (ResultSet r = statement.executeQuery(
|
||||
"SELECT `user_uuid`, `plot_plot_id` FROM `" + this.prefix + "plot_trusted`")) {
|
||||
ArrayList<Integer> toDelete = new ArrayList<>();
|
||||
@ -1790,9 +1793,9 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
deleteRows(toDelete, this.prefix + "plot_trusted", "plot_plot_id");
|
||||
}
|
||||
|
||||
/*
|
||||
* Getting denied
|
||||
*/
|
||||
/*
|
||||
* Getting denied
|
||||
*/
|
||||
try (ResultSet r = statement.executeQuery(
|
||||
"SELECT `user_uuid`, `plot_plot_id` FROM `" + this.prefix + "plot_denied`")) {
|
||||
ArrayList<Integer> toDelete = new ArrayList<>();
|
||||
@ -2378,7 +2381,8 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
PlotSquared.debug("&7[WARN] Failed to fetch rating for plot " + plot.getId().toString());
|
||||
PlotSquared
|
||||
.debug("&7[WARN] Failed to fetch rating for plot " + plot.getId().toString());
|
||||
e.printStackTrace();
|
||||
}
|
||||
return map;
|
||||
@ -2970,7 +2974,8 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
}
|
||||
// owner
|
||||
if (!plot.owner.equals(dataPlot.owner)) {
|
||||
PlotSquared.debug("&8 - &7Setting owner: " + plot + " -> " + MainUtil.getName(plot.owner));
|
||||
PlotSquared
|
||||
.debug("&8 - &7Setting owner: " + plot + " -> " + MainUtil.getName(plot.owner));
|
||||
setOwner(plot, plot.owner);
|
||||
}
|
||||
// trusted
|
||||
@ -2979,8 +2984,9 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
HashSet<UUID> toRemove = (HashSet<UUID>) dataPlot.getTrusted().clone();
|
||||
toRemove.removeAll(plot.getTrusted());
|
||||
toAdd.removeAll(dataPlot.getTrusted());
|
||||
PlotSquared.debug("&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " trusted for: "
|
||||
+ plot);
|
||||
PlotSquared.debug(
|
||||
"&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " trusted for: "
|
||||
+ plot);
|
||||
if (!toRemove.isEmpty()) {
|
||||
for (UUID uuid : toRemove) {
|
||||
removeTrusted(plot, uuid);
|
||||
@ -2997,8 +3003,9 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
HashSet<UUID> toRemove = (HashSet<UUID>) dataPlot.getMembers().clone();
|
||||
toRemove.removeAll(plot.getMembers());
|
||||
toAdd.removeAll(dataPlot.getMembers());
|
||||
PlotSquared.debug("&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " members for: "
|
||||
+ plot);
|
||||
PlotSquared.debug(
|
||||
"&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " members for: "
|
||||
+ plot);
|
||||
if (!toRemove.isEmpty()) {
|
||||
for (UUID uuid : toRemove) {
|
||||
removeMember(plot, uuid);
|
||||
@ -3015,8 +3022,9 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
HashSet<UUID> toRemove = (HashSet<UUID>) dataPlot.getDenied().clone();
|
||||
toRemove.removeAll(plot.getDenied());
|
||||
toAdd.removeAll(dataPlot.getDenied());
|
||||
PlotSquared.debug("&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " denied for: "
|
||||
+ plot);
|
||||
PlotSquared.debug(
|
||||
"&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " denied for: "
|
||||
+ plot);
|
||||
if (!toRemove.isEmpty()) {
|
||||
for (UUID uuid : toRemove) {
|
||||
removeDenied(plot, uuid);
|
||||
|
@ -117,7 +117,8 @@ public class FlagManager {
|
||||
.replaceAll(",", "´"));
|
||||
i++;
|
||||
} catch (Exception e) {
|
||||
PlotSquared.debug("Failed to parse flag: " + entry.getKey() + "->" + entry.getValue());
|
||||
PlotSquared
|
||||
.debug("Failed to parse flag: " + entry.getKey() + "->" + entry.getValue());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
@ -136,8 +136,9 @@ public final class Flags {
|
||||
}
|
||||
Flag flag = (Flag) fieldValue;
|
||||
if (!flag.getName().equals(fieldName)) {
|
||||
PlotSquared.debug(Flags.class + "Field doesn't match: " + fieldName + " != " + flag
|
||||
.getName());
|
||||
PlotSquared.debug(
|
||||
Flags.class + "Field doesn't match: " + fieldName + " != " + flag
|
||||
.getName());
|
||||
}
|
||||
flags.put(flag.getName(), flag);
|
||||
}
|
||||
|
@ -35,6 +35,6 @@ public class GameModeFlag extends Flag<PlotGameMode> {
|
||||
}
|
||||
|
||||
@Override public String getValueDescription() {
|
||||
return "Flag value must be a gamemode: 'creative' , 'survival', 'adventure' or 'spectator'";
|
||||
return "Flag value must be a gamemode: 'survival', 'creative', 'adventure' or 'spectator'";
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,6 @@ public class IntegerListFlag extends ListFlag<List<Integer>> {
|
||||
}
|
||||
|
||||
@Override public String getValueDescription() {
|
||||
return "Flag value must be a integer list";
|
||||
return "Flag value must be an integer list";
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,6 @@ public class PlotWeatherFlag extends Flag<PlotWeather> {
|
||||
}
|
||||
|
||||
@Override public String getValueDescription() {
|
||||
return "";
|
||||
return "Flag must be a weather: 'rain' or 'sun'";
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,8 @@ public class HybridPlotManager extends ClassicPlotManager {
|
||||
files.add(new FileBytes(newDir + "intersection.schematic",
|
||||
Files.readAllBytes(intersection.toPath())));
|
||||
}
|
||||
File plot = MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), dir + "plot.schematic");
|
||||
File plot =
|
||||
MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), dir + "plot.schematic");
|
||||
if (plot.exists()) {
|
||||
files.add(
|
||||
new FileBytes(newDir + "plot.schematic", Files.readAllBytes(plot.toPath())));
|
||||
|
@ -192,8 +192,10 @@ public class HybridPlotWorld extends ClassicPlotWorld {
|
||||
"schematics/GEN_ROAD_SCHEMATIC/" + this.worldname + "/intersection.schematic");
|
||||
File schem3File = MainUtil.getFile(PlotSquared.get().IMP.getDirectory(),
|
||||
"schematics/GEN_ROAD_SCHEMATIC/" + this.worldname + "/plot.schematic");
|
||||
SchematicHandler.Schematic schematic1 = SchematicHandler.manager.getSchematic(schematic1File);
|
||||
SchematicHandler.Schematic schematic2 = SchematicHandler.manager.getSchematic(schematic2File);
|
||||
SchematicHandler.Schematic schematic1 =
|
||||
SchematicHandler.manager.getSchematic(schematic1File);
|
||||
SchematicHandler.Schematic schematic2 =
|
||||
SchematicHandler.manager.getSchematic(schematic2File);
|
||||
SchematicHandler.Schematic schematic3 = SchematicHandler.manager.getSchematic(schem3File);
|
||||
int shift = this.ROAD_WIDTH / 2;
|
||||
int oddshift = (this.ROAD_WIDTH & 1) == 0 ? 0 : 1;
|
||||
|
@ -198,7 +198,8 @@ public abstract class SquarePlotManager extends GridPlotManager {
|
||||
}
|
||||
PlotSquared.debug("invalid location: " + Arrays.toString(merged));
|
||||
} catch (Exception ignored) {
|
||||
PlotSquared.debug("Invalid plot / road width in settings.yml for world: " + plotArea.worldname);
|
||||
PlotSquared.debug(
|
||||
"Invalid plot / road width in settings.yml for world: " + plotArea.worldname);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -96,9 +96,9 @@ public class ProcessedWEExtent extends AbstractDelegateExtent {
|
||||
this.BScount++;
|
||||
if (this.BScount > Settings.Chunk_Processor.MAX_TILES) {
|
||||
this.BSblocked = true;
|
||||
PlotSquared
|
||||
.debug(C.PREFIX + "&cdetected unsafe WorldEdit: " + location.getBlockX() + ","
|
||||
+ location.getBlockZ());
|
||||
PlotSquared.debug(
|
||||
C.PREFIX + "&cdetected unsafe WorldEdit: " + location.getBlockX() + ","
|
||||
+ location.getBlockZ());
|
||||
}
|
||||
if (WEManager.maskContains(this.mask, location.getBlockX(), location.getBlockY(),
|
||||
location.getBlockZ())) {
|
||||
|
@ -39,8 +39,9 @@ public class WESubscriber {
|
||||
Player player = (Player) actor;
|
||||
Location loc = player.getLocation();
|
||||
com.github.intellectualsites.plotsquared.plot.object.Location pLoc =
|
||||
new com.github.intellectualsites.plotsquared.plot.object.Location(player.getWorld().getName(),
|
||||
loc.getBlockX(), loc.getBlockX(), loc.getBlockZ());
|
||||
new com.github.intellectualsites.plotsquared.plot.object.Location(
|
||||
player.getWorld().getName(), loc.getBlockX(), loc.getBlockX(),
|
||||
loc.getBlockZ());
|
||||
Plot plot = pLoc.getPlot();
|
||||
if (plot == null) {
|
||||
event.setExtent(new NullExtent());
|
||||
|
@ -745,6 +745,39 @@ public class Plot {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the plot owner (and update the database)
|
||||
*
|
||||
* @param owner
|
||||
* @param initiator
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean setOwner(UUID owner, PlotPlayer initiator) {
|
||||
boolean result = EventUtil.manager
|
||||
.callOwnerChange(initiator, this, owner, hasOwner() ? this.owner : null, hasOwner());
|
||||
if (!result)
|
||||
return false;
|
||||
if (!hasOwner()) {
|
||||
this.owner = owner;
|
||||
create();
|
||||
return true;
|
||||
}
|
||||
if (!isMerged()) {
|
||||
if (!this.owner.equals(owner)) {
|
||||
this.owner = owner;
|
||||
DBFunc.setOwner(this, owner);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
for (Plot current : getConnectedPlots()) {
|
||||
if (!owner.equals(current.owner)) {
|
||||
current.owner = owner;
|
||||
DBFunc.setOwner(current, owner);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear a plot.
|
||||
*
|
||||
@ -2417,7 +2450,8 @@ public class Plot {
|
||||
if (current.owner == null || current.settings == null) {
|
||||
// Invalid plot
|
||||
// merged onto unclaimed plot
|
||||
PlotSquared.debug("Ignoring invalid merged plot: " + current + " | " + current.owner);
|
||||
PlotSquared
|
||||
.debug("Ignoring invalid merged plot: " + current + " | " + current.owner);
|
||||
continue;
|
||||
}
|
||||
tmpSet.add(current);
|
||||
|
@ -15,8 +15,7 @@ public class PlotMessage {
|
||||
} catch (Throwable e) {
|
||||
PlotSquared.debug(
|
||||
PlotSquared.imp().getPluginName() + " doesn't support fancy chat for " + PlotSquared
|
||||
.get().IMP
|
||||
.getServerVersion());
|
||||
.get().IMP.getServerVersion());
|
||||
ChatManager.manager = new PlainChatManager();
|
||||
reset(ChatManager.manager);
|
||||
}
|
||||
|
@ -28,7 +28,8 @@ public class SinglePlotManager extends PlotManager {
|
||||
|
||||
@Override public boolean clearPlot(PlotArea plotArea, Plot plot, final Runnable whenDone) {
|
||||
SetupUtils.manager.unload(plot.getWorldName(), false);
|
||||
final File worldFolder = new File(PlotSquared.get().IMP.getWorldContainer(), plot.getWorldName());
|
||||
final File worldFolder =
|
||||
new File(PlotSquared.get().IMP.getWorldContainer(), plot.getWorldName());
|
||||
TaskManager.IMP.taskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
MainUtil.deleteDirectory(worldFolder);
|
||||
|
@ -209,7 +209,8 @@ public abstract class ChunkManager {
|
||||
public abstract void unloadChunk(String world, ChunkLoc loc, boolean save, boolean safe);
|
||||
|
||||
public Set<ChunkLoc> getChunkChunks(String world) {
|
||||
File folder = new File(PlotSquared.get().IMP.getWorldContainer(), world + File.separator + "region");
|
||||
File folder =
|
||||
new File(PlotSquared.get().IMP.getWorldContainer(), world + File.separator + "region");
|
||||
File[] regionFiles = folder.listFiles();
|
||||
HashSet<ChunkLoc> chunks = new HashSet<>();
|
||||
if (regionFiles == null) {
|
||||
|
@ -10,6 +10,7 @@ import com.github.intellectualsites.plotsquared.plot.object.*;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager;
|
||||
import com.google.common.base.Optional;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.UUID;
|
||||
@ -18,7 +19,15 @@ public abstract class EventUtil {
|
||||
|
||||
public static EventUtil manager = null;
|
||||
|
||||
public abstract Rating callRating(PlotPlayer player, Plot plot, Rating rating);
|
||||
/**
|
||||
* Submit a plot rate event and return the updated rating
|
||||
*
|
||||
* @param player Player that rated the plot
|
||||
* @param plot Plot that was rated
|
||||
* @param rating Rating given to the plot
|
||||
* @return Updated rating or null if the event was cancelled
|
||||
*/
|
||||
@Nullable public abstract Rating callRating(PlotPlayer player, Plot plot, Rating rating);
|
||||
|
||||
public abstract boolean callClaim(PlotPlayer player, Plot plot, boolean auto);
|
||||
|
||||
@ -50,6 +59,9 @@ public abstract class EventUtil {
|
||||
|
||||
public abstract void callMember(PlotPlayer initiator, Plot plot, UUID player, boolean added);
|
||||
|
||||
public abstract boolean callOwnerChange(PlotPlayer initiator, Plot plot, UUID newOwner,
|
||||
UUID oldOwner, boolean hasOldOwner);
|
||||
|
||||
public void doJoinTask(final PlotPlayer player) {
|
||||
if (player == null) {
|
||||
return; //possible future warning message to figure out where we are retrieving null
|
||||
|
@ -427,7 +427,8 @@ public abstract class SchematicHandler {
|
||||
* @return schematic if found, else null
|
||||
*/
|
||||
public Schematic getSchematic(String name) {
|
||||
File parent = MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), Settings.Paths.SCHEMATICS);
|
||||
File parent =
|
||||
MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), Settings.Paths.SCHEMATICS);
|
||||
if (!parent.exists()) {
|
||||
if (!parent.mkdir()) {
|
||||
throw new RuntimeException("Could not create schematic parent directory");
|
||||
|
@ -103,7 +103,7 @@ public abstract class UUIDHandlerImplementation {
|
||||
/*
|
||||
* lazy UUID conversion:
|
||||
* - Useful if the person misconfigured the database, or settings before
|
||||
* PlotMe conversion
|
||||
* PlotMe conversion
|
||||
*/
|
||||
if (!Settings.UUID.OFFLINE && !this.unknown.isEmpty()) {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
|
@ -388,8 +388,10 @@ public class ExpireManager {
|
||||
PlotAnalysis changed = plot.getComplexity(null);
|
||||
int changes = changed == null ? 0 : changed.changes_sd;
|
||||
int modified = changed == null ? 0 : changed.changes;
|
||||
PlotSquared.debug("$2[&5Expire&dManager$2] &cDeleted expired plot: " + plot + " User:" + plot.owner
|
||||
+ " Delta:" + changes + "/" + modified + " Connected: " + StringMan.getString(plots));
|
||||
PlotSquared.debug(
|
||||
"$2[&5Expire&dManager$2] &cDeleted expired plot: " + plot + " User:" + plot.owner
|
||||
+ " Delta:" + changes + "/" + modified + " Connected: " + StringMan
|
||||
.getString(plots));
|
||||
PlotSquared.debug("$4 - Area: " + plot.getArea());
|
||||
if (plot.hasOwner()) {
|
||||
PlotSquared.debug("$4 - Owner: " + UUIDHandler.getName(plot.owner));
|
||||
|
@ -78,7 +78,8 @@ public class PlotAnalysis {
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override public void run() {
|
||||
Iterator<Plot> iterator = plots.iterator();
|
||||
PlotSquared.debug(" - $1Reducing " + plots.size() + " plots to those with sufficient data");
|
||||
PlotSquared.debug(
|
||||
" - $1Reducing " + plots.size() + " plots to those with sufficient data");
|
||||
while (iterator.hasNext()) {
|
||||
Plot plot = iterator.next();
|
||||
if (plot.getSettings().ratings == null || plot.getSettings().getRatings()
|
||||
@ -168,15 +169,17 @@ public class PlotAnalysis {
|
||||
}
|
||||
}
|
||||
|
||||
PlotSquared.debug(" - $1Waiting on plot rating thread: " + mi.intValue() * 100 / plots.size()
|
||||
+ "%");
|
||||
PlotSquared.debug(
|
||||
" - $1Waiting on plot rating thread: " + mi.intValue() * 100 / plots.size()
|
||||
+ "%");
|
||||
try {
|
||||
ratingAnalysis.join();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
PlotSquared.debug(" - $1Processing and grouping single plot analysis for bulk processing");
|
||||
PlotSquared
|
||||
.debug(" - $1Processing and grouping single plot analysis for bulk processing");
|
||||
for (int i = 0; i < plots.size(); i++) {
|
||||
Plot plot = plots.get(i);
|
||||
PlotSquared.debug(" | " + plot);
|
||||
|
BIN
Core/src/main/resources/bridge.template
Normal file
BIN
Core/src/main/resources/bridge.template
Normal file
Binary file not shown.
@ -1,6 +1,7 @@
|
||||
confirm:
|
||||
failed_confirm: $2No tienes acciones pendientes por confirmar.
|
||||
requires_confirm: '$2¿Estas seguro de realizar este comando?: $1%s$2?&-$2¡No hay vuelta atras! Si estas seguro escribe: $1/plot confirm'
|
||||
expired_confirm: $2La confirmación ha expirado, por favor ejecute el comando otra vez!
|
||||
move:
|
||||
move_success: $4La parcela fue movida correctamente.
|
||||
copy_success: $4La parcela fue copiada correctamente.
|
||||
@ -16,27 +17,30 @@ web:
|
||||
compass:
|
||||
compass_target: $4Parcela seleccionada con la brujula completada.
|
||||
cluster:
|
||||
cluster_available_args: '$1Los siguientes subcomandos estan disponibles: $4list$2, $4create$2, $4delete$2, $4resize$2, $4invite$2, $4kick$2, $4leave$2, $4members$2, $4info$2, $4tp$2, $4sethome'
|
||||
cluster_available_args: '$1Los siguientes subcomandos estan disponibles: $4list$2,
|
||||
$4create$2, $4delete$2, $4resize$2, $4invite$2, $4kick$2, $4leave$2, $4members$2,
|
||||
$4info$2, $4tp$2, $4sethome'
|
||||
cluster_list_heading: $2Hay $1%s$2 agrupaciones en este mundo.
|
||||
cluster_list_element: $2 - $1%s&-
|
||||
cluster_intersection: $2El area propuesta se solapa con $1%s$2 de la parcela existente.
|
||||
cluster_added: $4Creacion de agrupaciones completado.
|
||||
cluster_deleted: $4Borrado de agrupaciones completado.
|
||||
cluster_resized: $4Reescalado de agrupaciones completado.
|
||||
cluster_added: $4Creacion de agrupaciones completado.
|
||||
cluster_deleted: $4Borrado de agrupaciones completado.
|
||||
cluster_resized: $4Reescalado de agrupaciones completado.
|
||||
cluster_added_user: $4Añadido usuario a la agrupacion con exito.
|
||||
cannot_kick_player: $2Tu no puedes expulsar a este jugador.
|
||||
cannot_kick_player: $2Tu no puedes expulsar a este jugador.
|
||||
cluster_invited: '$1Has sido invitado a la siguiente agrupacion: $2%s'
|
||||
cluster_removed: '$1Has sido eliminado de la agrupacion: $2%s'
|
||||
cluster_kicked_user: $4Usuario expulsado con exito.
|
||||
cluster_kicked_user: $4Usuario expulsado con exito.
|
||||
invalid_cluster: '$1Nombre de agrupacion invalido: $2%s'
|
||||
cluster_not_added: $2Este jugador no fue añadido a la agrupacion de parcelas.
|
||||
cluster_cannot_leave: $1Debes eliminar o transferir el dueño antes de salir.
|
||||
cluster_cannot_leave: $1Debes eliminar o transferir el dueño antes de salir.
|
||||
cluster_added_helper: $4Ayudante añadido a la agrupacion con exito.
|
||||
cluster_removed_helper: $4Ayudante eliminado de la agrupacion con exito.
|
||||
cluster_regenerated: $4Regeneracion de la agrupacion comenzada con exito.
|
||||
cluster_teleporting: $4Teletransportando...
|
||||
cluster_info: '$1Agrupacion actual: $2%id%&-$1Nombre: $2%name%&-$1Propietario: $2%owner%&-$1Tamaño: $2%size%&-$1Derechos: $2%rights%'
|
||||
cluster_current_plotid: '$1Parcela actual: $2%s'
|
||||
cluster_info: '$1Agrupacion actual: $2%id%&-$1Nombre: $2%name%&-$1Propietario: $2%owner%&-$1Tamaño:
|
||||
$2%size%&-$1Derechos: $2%rights%'
|
||||
cluster_outside: '$2El área propuesta está fuera del área de la parcela: %s0'
|
||||
border:
|
||||
border: $2Estas en las afueras del borde del mapa.
|
||||
unclaim:
|
||||
@ -63,7 +67,7 @@ records:
|
||||
notify_leave: $2%player $2abandona tu parcela ($1%plot$2)
|
||||
swap:
|
||||
swap_overlap: $2Las áreas propuestas no pueden superponerse.
|
||||
swap_dimensions: $2El area propuesta debe tener dimensiones comparables.
|
||||
swap_dimensions: $2El area propuesta debe tener dimensiones comparables.
|
||||
swap_syntax: $2/plot swap <plot id>
|
||||
swap_success: $4Intercambio de parcelas completado
|
||||
started_swap: $2 Intercambiando las tareas de las parcelas. Serás notificado cuando el proceso haya terminado.
|
||||
@ -77,7 +81,7 @@ comment:
|
||||
no_perm_inbox_modify: $2No tienes permisos para modificar esta bandeja de entrada.
|
||||
no_plot_inbox: $2Debes permanecer en la parcela para poder escribir el comentario.
|
||||
comment_removed: $4Comentario eliminado satisfactoriamente/s:n$2 - '$3%s$2'
|
||||
comment_added: $4Te han dejado un comentario.
|
||||
comment_added: $4Te han dejado un comentario.
|
||||
comment_header: $2&m---------&r $1Comentarios $2&m---------&r
|
||||
inbox_empty: $2No hay comentarios.
|
||||
console:
|
||||
@ -100,7 +104,7 @@ blocked command:
|
||||
command_blocked: $2El comando no esta permitido en esta parcela.
|
||||
done:
|
||||
done_already_done: $2Esta parcela esta finalizada.
|
||||
done_not_done: $2Esta parcela no esta finalizada.
|
||||
done_not_done: $2Esta parcela no esta finalizada.
|
||||
done_insufficient_complexity: $2Esta parcela es muy simple. Porfavor añade mas detalles antes de usar este comando.
|
||||
done_success: $1Parcela finalizada con exito.
|
||||
done_removed: $1Ya puedes continuar construyendo en esta parcela.
|
||||
@ -111,6 +115,7 @@ ratings:
|
||||
rating_not_your_own: $2No puedes valorar tu propia parcela.
|
||||
rating_not_done: $2Solo puedes valorar parcelas terminadas.
|
||||
rating_not_owned: $2No puedes valorar una parcela que no pertenece a nadie.
|
||||
ratings_purged: $2Calificaciones purgadas para esta parcela
|
||||
tutorial:
|
||||
rate_this: $2¡Valora esta parcela!
|
||||
comment_this: '$2Deja tu opinion de esta parcela: %s'
|
||||
@ -121,8 +126,9 @@ economy:
|
||||
cannot_buy_own: $2No puedes comprar tu propia parcela.
|
||||
plot_sold: $4Tu parcela; $1%s0$4, se ha vendido por $1%s1$4 para $1$%s2
|
||||
cannot_afford_merge: $2Tu no puedes permitirte combinar las parcelas. Cuesta $1%s
|
||||
added_balance: $1%s $2 fue añadido a tu fondo de dinero.
|
||||
removed_balance: $1%s $2 fue removido de tu fondo de dinero.
|
||||
added_balance: $1%s $2 fue añadido a tu fondo de dinero.
|
||||
removed_balance: $1%s $2 fue removido de tu fondo de dinero.
|
||||
removed_granted_plot: $2Usaste %s concesiones de trama, te quedan 5 $1%s
|
||||
setup:
|
||||
setup_init: '$1Uso: $2/plot setup <cantidad>'
|
||||
setup_step: '$3[$1Step %s0$3] $1%s1 $2- $1Espectando: $2%s2 $1Default: $2%s3'
|
||||
@ -130,15 +136,21 @@ setup:
|
||||
setup_valid_arg: $2Valor $1%s0 $2ajustado a %s1
|
||||
setup_finished: $4Deberias haber sido teletransportado al mundo creado, sino tendras que generarlo manualmente usando el bukkit.yml
|
||||
setup_world_taken: $2%s este mundo ya esta registrado.
|
||||
setup_missing_world: $2 Necesitas especificar el nombre del mundo ($1/plot setup &l<world>$1 <generator>$2)&-$1Additional commands:&-$2 - $1/plot setup <value>&-$2 - $1/plot setup back&-$2 - $1/plot setup cancel
|
||||
setup_missing_generator: $2Tienes que especificar un generador ($1/plot setup <world> &l<generator>&r$2)&-$1Additional commands:&-$2 - $1/plot setup <value>&-$2 - $1/plot setup back&-$2 - $1/plot setup cancel
|
||||
setup_missing_world: $2 Necesitas especificar el nombre del mundo ($1/plot setup
|
||||
&l<world>$1 <generator>$2)&-$1Comandos adicionales:&-$2 - $1/plot setup <value>&-$2
|
||||
- $1/plot setup back&-$2 - $1/plot setup cancel
|
||||
setup_missing_generator: $2Tienes que especificar un generador ($1/plot setup <world>
|
||||
&l<generator>&r$2)&-$1Comandos adicionales:&-$2 - $1/plot setup <value>&-$2 - $1/plot
|
||||
setup back&-$2 - $1/plot setup cancel
|
||||
setup_invalid_generator: '$2Generador inválido. Opciones posibles: %s'
|
||||
schematics:
|
||||
schematic_missing_arg: '$2Necesitas especificar un argumento. Valores posibles: $1test <name>$2 , $1save$2 , $1paste $2, $1exportall'
|
||||
schematic_missing_arg: '$2Necesitas especificar un argumento. Valores posibles:
|
||||
$1test <name>$2 , $1save$2 , $1paste $2, $1exportall'
|
||||
schematic_invalid: '$2Este no es un schematic valido. Razon: $2%s'
|
||||
schematic_valid: $2Este es un schematic valido.
|
||||
schematic_paste_failed: $2Fallo al pegar el schematic.
|
||||
schematic_paste_success: $4El schematic ha sido copiado correctamente.
|
||||
schematic_too_large: $2¡La trama es demasiado grande para esta acción!
|
||||
titles:
|
||||
title_entered_plot: '$1Parcela: %world%;%x%;%z%'
|
||||
title_entered_plot_sub: $4Propiedad de %s
|
||||
@ -148,12 +160,9 @@ core:
|
||||
task_start: Comenzando la tarea...
|
||||
prefix: $3[$1P2$3] $2
|
||||
enabled: $1PlotSquared esta activado.
|
||||
example_message: $2Esto es un ejemplo de mensaje &k!!!
|
||||
reload:
|
||||
reloaded_configs: $1Las traducciones y opciones del mundo han sido cargados.
|
||||
reload_failed: $2Fallo al cargar las configuraciones de los archivos.
|
||||
bar api:
|
||||
bossbar_clearing: '$2Limpiando parcela: $1%id%'
|
||||
desc:
|
||||
desc_set: $2Descripcion de la parcela.
|
||||
desc_unset: $2Descripcion de la parcela no especificada.
|
||||
@ -163,6 +172,7 @@ alias:
|
||||
missing_alias: $2Necesitas especificar un alias.
|
||||
alias_too_long: $2El alias debe ser < de 50 caracteres
|
||||
alias_is_taken: $2Ese alias ya ha sido utilizado.
|
||||
alias_removed: $2Parcela alias eliminado
|
||||
position:
|
||||
missing_position: '$2Necesitas especificar una posicion. Valores posibles: $1none'
|
||||
position_set: $1Hogar establecido en tu posicion actual.
|
||||
@ -181,6 +191,7 @@ permission:
|
||||
cant_claim_more_plots_num: $2No puedes claimear mas de $1%s $2parcelas a la vez.
|
||||
you_be_denied: $2No tienes permitido entrar en esta parcela.
|
||||
merge_request_confirm: Peticion de agrupamiento de %s
|
||||
cant_claim_more_clusters: $2No puedes reclamar más grupos.
|
||||
merge:
|
||||
merge_not_valid: $2La peticion de agrupacion ya no es valida.
|
||||
merge_accepted: $2La peticion de agrupacion ha sido aceptada.
|
||||
@ -191,14 +202,6 @@ merge:
|
||||
unlink_required: $2Se requiere una desconexion para hacer esto.
|
||||
unlink_impossible: $2Solo puedes desconectar una mega-parcela.
|
||||
unlink_success: $2Se han desconectado las parcelas.
|
||||
commands:
|
||||
not_valid_subcommand: $2No es un subcomando valido.
|
||||
did_you_mean: '$2Quisiste decir: $1%s'
|
||||
name_little: $2%s0 el nombre es muy corto, $1%s1$2<$1%s3
|
||||
no_commands: $2No tienes permitido utilizar cualquier subcomando.
|
||||
subcommand_set_options_header: '$2Valores posibles: '
|
||||
command_syntax: '$1Usos: $2%s'
|
||||
flag_tutorial_usage: '$1Haz que un administrador coloque la bandera: $2%s'
|
||||
errors:
|
||||
invalid_player_wait: '$2Jugador no encontrado: $1%s$2, buscando. Prueba mas tarde.'
|
||||
invalid_player: '$2Jugador no encontrado: $1%s$2.'
|
||||
@ -212,15 +215,15 @@ errors:
|
||||
not_valid_world: $2Esto no es un mundo valido. (caso sensitivo)
|
||||
not_valid_plot_world: $2Esta no es una parcela valida. (caso sensitivo)
|
||||
no_plots: $2No tienes ninguna parcela.
|
||||
not_using_plotme: $2Este server utiliza el $1PlotSquared $2plot sistema de mantenimiento. Utilice el $1/ps $2o $1/p2 $2o $1/plot $2en vez.
|
||||
wait_for_timer: $2El temporizador del selector de bloque esta ligado a ti o a la parcela actual. Por favor espere a que termine.
|
||||
invalid_command_flag: '$2Indicador de comando no válido: %s0'
|
||||
error: '$2Ocurrió un error: %s'
|
||||
not_loaded: $2No se pudo cargar la trama
|
||||
paste:
|
||||
debug_report_created: '$1Se ha enviado una depuracion a: $1%url%'
|
||||
purge:
|
||||
purge_syntax: Usa /plot purge <x;z|player|unowned|unknown|all> <world>
|
||||
purge_success: $4Se ha limpiado %s parcelas.
|
||||
trim:
|
||||
trim_syntax: Usa /plot trim <all|x;y> <world>
|
||||
trim_in_progress: La tarea de recorte esta en proceso!
|
||||
not_valid_hybrid_plot_world: Es necesario el dueño de las parcelas para realizar esta accion.
|
||||
block list:
|
||||
@ -253,6 +256,7 @@ invalid:
|
||||
no_such_plot: $2No existe dicha parcela.
|
||||
player_has_not_been_on: $2Este usuario no ha estado en el mundo de parcelas.
|
||||
found_no_plots: $2No se ha encontrado parcelas con esta informacion.
|
||||
found_no_plots_for_player: '$2No se encontraron parcelas para jugador: %s'
|
||||
camera:
|
||||
camera_started: $2Has entrado en modo camara para la parcela $1%s
|
||||
camera_stopped: $2Ya no estas en modo camara.
|
||||
@ -263,13 +267,16 @@ need:
|
||||
need_plot_world: $2Necesitas especificar un mundo de parcelas.
|
||||
need_user: $2Necesitas especificar un usuario.
|
||||
info:
|
||||
none: Ninguno.
|
||||
unknown: Desconocido.
|
||||
everyone: Todos.
|
||||
none: Ninguno
|
||||
unknown: Desconocido
|
||||
everyone: Todos
|
||||
plot_unowned: $2La parcela actual tiene que tener un propietario para ejecutar esa accion.
|
||||
plot_info_unclaimed: $2Parcela $1%s$2 aun no esta claimeada.
|
||||
plot_info_header: $3&m---------&r $1INFO $3&m---------
|
||||
plot_info: '$1ID: $2%id%$1&-$1Alias: $2%alias%$1&-$1Propietario: $2%owner%$1&-$1Bioma: $2%biome%$1&-$1Puede construir: $2%build%$1&-$1Clasificacion: $2%rating%&-$1Confianza: $2%trusted%$1&-$1Miembros: $2%members%$1&-$1Denegados: $2%denied%$1&-$1Flags: $2%flags%'
|
||||
plot_info: '$1ID: $2%id%$1&-$1Alias: $2%alias%$1&-$1Propietario: $2%owner%$1&-$1Bioma:
|
||||
$2%biome%$1&-$1Puede construir: $2%build%$1&-$1Clasificacion: $2%rating%&-$1Confianza:
|
||||
$2%trusted%$1&-$1Miembros: $2%members%$1&-$1Denegados: $2%denied%$1&-$1Flags:
|
||||
$2%flags%'
|
||||
plot_info_footer: $3&m---------&r $1INFO $3&m---------
|
||||
plot_info_trusted: $1Confianza:$2 %trusted%
|
||||
plot_info_members: $1Miembros:$2 %members%
|
||||
@ -283,6 +290,10 @@ info:
|
||||
plot_info_size: $1Tamaño:$2 %size%
|
||||
plot_user_list: ' $1%user%$2,'
|
||||
info_syntax_console: $2/plot info X;Y
|
||||
now: Ahora
|
||||
never: Nunca
|
||||
plot_info_seen: $1Seen:$2 %seen%
|
||||
plot_flag_list: $1%s0:%s1$2
|
||||
working:
|
||||
generating_component: $1Empezando a generar componentes desde tus opciones.
|
||||
clearing_plot: $2Limpiando parcela async.
|
||||
@ -290,6 +301,7 @@ working:
|
||||
plot_not_claimed: $2Parcela no reclamada.
|
||||
plot_is_claimed: $2Esta parcela ya esta reclamada.
|
||||
claimed: $4Has reclamado con exito esta parcela.
|
||||
deleting_done: $4Eliminar completado! Tomó %sms.
|
||||
list:
|
||||
comment_list_header_paged: $2(Page $1%cur$2/$1%max$2) $1Lista de %amount% comentarios.
|
||||
clickable: ' (interactive)'
|
||||
@ -298,6 +310,7 @@ list:
|
||||
plot_list_item: $2>> $1%id$2:$1%world $2- $1%owner.
|
||||
plot_list_item_ordered: $2[$1%in$2] >> $1%id$2:$1%world $2- $1%owner.
|
||||
plot_list_footer: $2>> $1%word% un total $2%num% $1claimeado %plot%.
|
||||
area_list_header_paged: $2(Página $1%cur$2/$1%max$2) $1lista de %amount% areas
|
||||
left:
|
||||
left_plot: $2Has abandonado una parcela.
|
||||
chat:
|
||||
@ -305,6 +318,7 @@ chat:
|
||||
plot_chat_forced: $2Este mundo obliga a usar el chat de parcela.
|
||||
plot_chat_on: $4Chat de parcela activado.
|
||||
plot_chat_off: $4Chat de parcela desactivado.
|
||||
plot_chat_spy_format: '$2[$1Plot Spy$2][$1%plot_id%$2] $1%sender%$2: $1%msg%'
|
||||
deny:
|
||||
denied_removed: $4Este usuario ya no esta denegado en esta parcela.
|
||||
denied_added: $4Has denegado este usuario de tu parcela.
|
||||
@ -325,6 +339,7 @@ flag:
|
||||
flag_not_added: $2La flag no se ha podido añadir.
|
||||
flag_removed: $4Flag removida con exito.
|
||||
flag_added: $4Flag añadida con exito.
|
||||
not_valid_flag_suggested: '$2Eso no es una bandera válida. Querías decir: $1%s'
|
||||
trusted:
|
||||
trusted_added: $4Has añadido un usuario de confianza en esta parcela.
|
||||
trusted_removed: $4Has removido un usuario de confianza en esta parcela.
|
||||
@ -341,17 +356,39 @@ member:
|
||||
owner:
|
||||
set_owner: $4Has añadido con exito el dueño de la parcela.
|
||||
now_owner: $4Ahora eres dueño de esta parcela %s
|
||||
set_owner_cancelled: $2La setowner la acción fue cancelada
|
||||
signs:
|
||||
owner_sign_line_1: '$1ID: $1%id%'
|
||||
owner_sign_line_2: '$1Propietario:'
|
||||
owner_sign_line_3: $2%plr%
|
||||
owner_sign_line_4: $3Claimeado
|
||||
help:
|
||||
help_header: "$3&m---------&r $1Plot\xb2 Ayuda $3&m---------"
|
||||
help_header: $3&m---------&r $1Plot² Ayuda $3&m---------
|
||||
help_page_header: '$1Categoria: $2%category%$2,$1 Página: $2%current%$3/$2%max%$2'
|
||||
help_footer: "$3&m---------&r $1Plot\xb2 Ayuda $3&m---------"
|
||||
help_footer: $3&m---------&r $1Plot² Ayuda $3&m---------
|
||||
help_info_item: $1/plot help %category% $3- $2%category_desc%
|
||||
help_item: $1%usage% [%alias%]&- $3- $2%desc%&-
|
||||
direction: '$1Direccion actual: %dir%'
|
||||
'-':
|
||||
custom_string: '-'
|
||||
commandconfig:
|
||||
not_valid_subcommand: $2No es un subcomando valido.
|
||||
did_you_mean: '$2Quisiste decir: $1%s'
|
||||
name_little: $2%s0 el nombre es muy corto, $1%s1$2<$1%s3
|
||||
no_commands: $2No tienes permitido utilizar cualquier subcomando.
|
||||
subcommand_set_options_header: '$2Valores posibles: '
|
||||
command_syntax: '$1Usos: $2%s'
|
||||
flag_tutorial_usage: '$1Haz que un administrador coloque la bandera: $2%s'
|
||||
bar api: {}
|
||||
set:
|
||||
set_attribute: $4Establecer con éxito %s0 ajustado a %s1
|
||||
cap:
|
||||
entity_cap: $2No tienes permitido engendrar más mobs
|
||||
near:
|
||||
plot_near: '$1Jugadores: %s0'
|
||||
kick:
|
||||
you_got_kicked: $4Te patearon!
|
||||
grants:
|
||||
granted_plots: '$1Resultado: $2%s $1grants left'
|
||||
granted_plot: $1You granted %s0 plot to $2%s1
|
||||
granted_plot_failed: '$1Subvención fallida: $2%s'
|
@ -19,9 +19,9 @@ web:
|
||||
compass:
|
||||
compass_target: $4Lotto mirato con successo con la bussola
|
||||
cluster:
|
||||
cluster_available_args: '$1Sono disponibili i seguenti sotto comandi: $4list$2, $4create$2,
|
||||
$4delete$2, $4resize$2, $4invite$2, $4kick$2, $4leave$2, $4members$2, $4info$2,
|
||||
$4tp$2, $4sethome'
|
||||
cluster_available_args: '$1Sono disponibili i seguenti sotto comandi: $4list$2,
|
||||
$4create$2, $4delete$2, $4resize$2, $4invite$2, $4kick$2, $4leave$2, $4members$2,
|
||||
$4info$2, $4tp$2, $4sethome'
|
||||
cluster_list_heading: $2Ci sono $1%s$2 cluster in questo mondo
|
||||
cluster_list_element: $2 - $1%s&-
|
||||
cluster_intersection: '$2L''area proposta si sovrappone a: %s0'
|
||||
@ -50,12 +50,9 @@ unclaim:
|
||||
worldedit masks:
|
||||
worldedit_delayed: $2Attendi durante l'elaborazione della tua azione WorldEdit...
|
||||
worldedit_run: '$2Scuse per il ritardo. Ora in esecuzione: %s'
|
||||
require_selection_in_mask: $2%s della tua selezione non è all'interno del tuo lotto.
|
||||
Puoi apportare modifiche solo dentro il tuo lotto.
|
||||
worldedit_volume: $2Non puoi selezionare un volume di %current%. Il volume massimo
|
||||
che puoi modificare è %max%.
|
||||
worldedit_iterations: $2Non puoi iterare %current% volte. Il massimo numero di
|
||||
iterazioni consentite è %max%.
|
||||
require_selection_in_mask: $2%s della tua selezione non è all'interno del tuo lotto. Puoi apportare modifiche solo dentro il tuo lotto.
|
||||
worldedit_volume: $2Non puoi selezionare un volume di %current%. Il volume massimo che puoi modificare è %max%.
|
||||
worldedit_iterations: $2Non puoi iterare %current% volte. Il massimo numero di iterazioni consentite è %max%.
|
||||
worldedit_unsafe: $2L'accesso a quel comando è stato bloccato
|
||||
worldedit_bypass: $2&oPer bypassare le tue restrizioni usa $4/plot wea
|
||||
worldedit_bypassed: $2Attualmente bypassando le restrizioni di WorldEdit.
|
||||
@ -139,15 +136,15 @@ setup:
|
||||
setup_invalid_arg: '$2%s0 non è un argomento valido per il passaggio %s1. Per cancellare il setup usa: $1/plot setup cancel'
|
||||
setup_valid_arg: $2Valore $1%s0 $2impostato a %s1
|
||||
setup_finished: $4Dovresti essere stato teletrasportato nel mondo creato. Altrimenti
|
||||
sarà necessario impostare manualmente il generatore usando il file bukkit.yml o il tuo plugin
|
||||
di gestione dei mondi scelto.
|
||||
sarà necessario impostare manualmente il generatore usando il file bukkit.yml
|
||||
o il tuo plugin di gestione dei mondi scelto.
|
||||
setup_world_taken: $2%s è già un mondo lotti
|
||||
setup_missing_world: $2Devi specificare un nome per il mondo ($1/plot setup &l<mondo>$1
|
||||
<generatore>$2)&-$1Comandi aggiuntivi:&-$2 - $1/plot setup <valore>&-$2 - $1/plot
|
||||
setup back&-$2 - $1/plot setup cancel
|
||||
setup_missing_generator: $2Devi specificare un generatore ($1/plot setup <mondo>
|
||||
&l<generatore>&r$2)&-$1Comandi aggiuntivi:&-$2 - $1/plot setup <valore>&-$2 - $1/plot
|
||||
setup back&-$2 - $1/plot setup cancel
|
||||
&l<generatore>&r$2)&-$1Comandi aggiuntivi:&-$2 - $1/plot setup <valore>&-$2 -
|
||||
$1/plot setup back&-$2 - $1/plot setup cancel
|
||||
setup_invalid_generator: '$2Generatore non valido. Opzioni possibili: %s'
|
||||
schematics:
|
||||
schematic_too_large: $2Il lotto è troppo grande per questa azione!
|
||||
@ -271,7 +268,7 @@ invalid:
|
||||
no_such_plot: $2Quel lotto non esiste
|
||||
player_has_not_been_on: $2Quel giocatore non è mai stato nel mondo lotti
|
||||
found_no_plots: $2Non sono stati trovati lotti con la tua ricerca
|
||||
found_no_plots_for_player: $2Nessun lotto trovato per il giocatore: %s
|
||||
found_no_plots_for_player: '$2Nessun lotto trovato per il giocatore: %s'
|
||||
camera:
|
||||
camera_started: $2Hai inserito la modalità telecamera per il lotto $1%s
|
||||
camera_stopped: $2Non sei più in modalità telecamera
|
||||
@ -293,8 +290,9 @@ info:
|
||||
plot_info_unclaimed: $2Il lotto $1%s$2 non è ancora claimato
|
||||
plot_info_header: $3&m---------&r $1INFO $3&m---------
|
||||
plot_info: '$1ID: $2%id%$1&-$1Alias: $2%alias%$1&-$1Proprietario: $2%owner%$1&-$1Bioma:
|
||||
$2%biome%$1&-$1Puoi costruire: $2%build%$1&-$1Valutazione: $2%rating%&-$1Visto: $2%seen%&-$1Membri fidati:
|
||||
$2%trusted%$1&-$1Membri: $2%members%$1&-$1Bloccati: $2%denied%$1&-$1Flag: $2%flags%'
|
||||
$2%biome%$1&-$1Puoi costruire: $2%build%$1&-$1Valutazione: $2%rating%&-$1Visto:
|
||||
$2%seen%&-$1Membri fidati: $2%trusted%$1&-$1Membri: $2%members%$1&-$1Bloccati:
|
||||
$2%denied%$1&-$1Flag: $2%flags%'
|
||||
plot_info_footer: $3&m---------&r $1INFO $3&m---------
|
||||
plot_info_trusted: $1Membri fidati:$2 %trusted%
|
||||
plot_info_members: $1Membri:$2 %members%
|
||||
@ -365,8 +363,8 @@ trusted:
|
||||
plot_removed_user: $1Il lotto %s in cui eri aggiunto è stato eliminato a causa dell'inattività del proprietario
|
||||
member:
|
||||
removed_players: $2Rimossi %s giocatori dal lotto.
|
||||
already_owner: '$2L''utente %s0 è già il proprietario di questo lotto.'
|
||||
already_added: '$2L''utente %s0 è già aggiunto a quella categoria.'
|
||||
already_owner: $2L'utente %s0 è già il proprietario di questo lotto.
|
||||
already_added: $2L'utente %s0 è già aggiunto a quella categoria.
|
||||
member_added: $4Quell'utente ora può costruire quando il proprietario è online
|
||||
member_removed: $1Hai rimosso con successo un utente dal lotto
|
||||
member_was_not_added: $2Quel giocatore non è aggiunto a questo lotto
|
||||
@ -374,6 +372,7 @@ member:
|
||||
owner:
|
||||
set_owner: $4Hai impostato correttamente il proprietario del lotto
|
||||
now_owner: $4Sei ora proprietario del lotto %s
|
||||
set_owner_cancelled: $2L'azione del proprietario è stata annullata
|
||||
signs:
|
||||
owner_sign_line_1: '$1ID: $1%id%'
|
||||
owner_sign_line_2: '$1Proprietario:'
|
@ -1,12 +1,12 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# Translate by Protocodyne Korean Translate team
|
||||
# First Author <bmr02039@protocodyne.com>, 2015.
|
||||
confirm:
|
||||
failed_confirm: $2이 작업이 완료되기 위한 행동이 당신에게 존재하지 않습니다!
|
||||
requires_confirm: '$2정말로 실행되길 원하나요: $1%s$2?&-$2이 작업은 되돌릴 수
|
||||
없습니다! 확실하다면 다음 명령어를 입력하세요: $1/plot confirm'
|
||||
requires_confirm: '$2정말로 실행되길 원하나요: $1%s$2?&-$2이 작업은 되돌릴 수 없습니다! 확실하다면 다음 명령어를 입력하세요:
|
||||
$1/plot confirm'
|
||||
expired_confirm: $2확인이 만료되었습니다. 명령을 다시 실행하십시오.!
|
||||
move:
|
||||
move_success: $4성공적으로 땅이 옮겨졌습니다.
|
||||
copy_success: $4성공적으로 땅이 복사되었습니다.
|
||||
@ -20,14 +20,13 @@ web:
|
||||
load_list: '$2schematic로드를 원한다면, 다음명령어를 사용하세요 $1/plot load #'
|
||||
save_success: $1성공적으로 저장되었습니다!
|
||||
compass:
|
||||
compass_target: $4Successfully targeted plot with compass
|
||||
compass_target: $4나침반과 함께 음모를 성공적으로 지정했습니다.
|
||||
cluster:
|
||||
cluster_available_args: '$1다음 하위명령어가 사용 가능합니다.: $4list$2, $4create$2,
|
||||
$4delete$2, $4resize$2, $4invite$2, $4kick$2, $4leave$2, $4members$2, $4info$2,
|
||||
$4tp$2, $4sethome'
|
||||
cluster_available_args: '$1다음 하위명령어가 사용 가능합니다.: $4list$2, $4create$2, $4delete$2,
|
||||
$4resize$2, $4invite$2, $4kick$2, $4leave$2, $4members$2, $4info$2, $4tp$2, $4sethome'
|
||||
cluster_list_heading: $2이 월드에 $1%s$2 cluster가 있습니다
|
||||
cluster_list_element: $2 - $1%s&-
|
||||
cluster_intersection: $2The proposed area overlaps with $1%s$2 existing cluster/s
|
||||
cluster_intersection: $2제안 된 영역이 겹칩니다 와 $1%s$2 기존의 cluster
|
||||
cluster_added: $4cluster가 성공적으로 생성되었습니다.
|
||||
cluster_deleted: $4cluster가 성공적으로 삭제되었습니다.
|
||||
cluster_resized: $4cluster가 성공적으로 재조정 되었습니다.
|
||||
@ -43,9 +42,9 @@ cluster:
|
||||
cluster_removed_helper: $4helper가 성공적으로 cluster에서 제거되었습니다
|
||||
cluster_regenerated: $4성공적으로 cluster가 재생성 되었습니다
|
||||
cluster_teleporting: $4이동중...
|
||||
cluster_info: '$1현재 cluster: $2%id%&-$1이름: $2%name%&-$1소유자: $2%owner%&-$1크기:
|
||||
$2%size%&-$1Rights: $2%rights%'
|
||||
cluster_current_plotid: '$1현재 땅: $2%s'
|
||||
cluster_info: '$1현재 cluster: $2%id%&-$1이름: $2%name%&-$1소유자: $2%owner%&-$1크기: $2%size%&-$1Rights:
|
||||
$2%rights%'
|
||||
cluster_outside: '$2제안 된 영역이 플롯 영역 밖에 있습니다: %s0'
|
||||
border:
|
||||
border: $2당신은 현재 지도의 경계 밖에 있습니다
|
||||
unclaim:
|
||||
@ -54,7 +53,8 @@ unclaim:
|
||||
worldedit masks:
|
||||
worldedit_delayed: $2당신의 WorldEdit 행동을 처리중이니 기다려주시기 바랍니다...
|
||||
worldedit_run: '$2처리가 지연되어 죄송합니다. 해당 명령어를 실행합니다: %s'
|
||||
require_selection_in_mask: $2%s of your selection is not within your plot mask. You can only make edits within your plot.
|
||||
require_selection_in_mask: $2%s 선택한 마스크가 플롯 마스크 안에 있지 않습니다..
|
||||
플롯 내에서만 편집 할 수 있습니다..
|
||||
worldedit_volume: $2당신은 a volume of %current%를 선택 할 수 없습니다. 당신이 수정할 수 있는 최대부피는 %max% 입니다.
|
||||
worldedit_iterations: $2당신은 %current%번 반복 적용시킬 수 없습니다. 당신이 수정가능한 최대 부피는 %max% 입니다.
|
||||
worldedit_unsafe: $2해당 명령어는 실행 될 수 없습니다.
|
||||
@ -84,10 +84,10 @@ comment:
|
||||
invalid_inbox: '$2올바르지 않은 메일함 입니다..&-$1Accepted values: %s'
|
||||
no_perm_inbox: $2당신은 해당 메일함에 권한이 없습니다
|
||||
no_perm_inbox_modify: $2당신은 해당 메일함을 수정할 권한이 없습니다
|
||||
no_plot_inbox: $2You must stand in or supply a plot argument
|
||||
no_plot_inbox: $2당신은 서 있거나 줄거리를 제공해야합니다
|
||||
comment_removed: $4comment가 성공적으로 삭제되었습니다/s:n$2 - '$3%s$2'
|
||||
comment_added: $4A comment가 남아있습니다
|
||||
comment_header: $2&m---------&r $1Comments $2&m---------&r
|
||||
comment_header: $2&m---------&r $1댓글 $2&m---------&r
|
||||
inbox_empty: $2comment가 없습니다
|
||||
console:
|
||||
not_console: $2보안상의 이유로, 이 명령어는 Console에서만 입력 가능합니다.
|
||||
@ -101,8 +101,7 @@ clipboard:
|
||||
pasted: $4해당 땅은 성공적으로 붙여넣어졌습니다. 해당 땅은 클립보드로부터 제거됩니다.
|
||||
paste_failed: '$2선택된 땅의 복사가 실패했습니다. 사유: $2%s'
|
||||
no_clipboard: $2클립보드에 복사된 땅이 존재하지 않습니다
|
||||
clipboard_info: '$2현재 선택 - Plot ID: $1%id$2, Width: $1%width$2, Total
|
||||
Blocks: $1%total$2'
|
||||
clipboard_info: '$2현재 선택 - Plot ID: $1%id$2, Width: $1%width$2, Total Blocks: $1%total$2'
|
||||
toggle:
|
||||
toggle_enabled: '$2가능한 세팅: %s'
|
||||
toggle_disabled: '$2불가능한 세팅: %s'
|
||||
@ -121,6 +120,7 @@ ratings:
|
||||
rating_not_your_own: $2당신은 자신의 땅에 투표 할 수 없습니다
|
||||
rating_not_done: $2당신은 완료된 땅에만 투표 할 수 있습니다.
|
||||
rating_not_owned: $2당신은 소유자가 없는 땅에 투표 할 수 없습니다
|
||||
ratings_purged: $2Purged ratings for this plot
|
||||
tutorial:
|
||||
rate_this: $2이 땅에 투표해보세요!
|
||||
comment_this: '$2이땅에 피드백을 남겨보세요: %s'
|
||||
@ -129,43 +129,47 @@ economy:
|
||||
cannot_afford_plot: $2당신은 이 땅을 구입 할 수 없습니다. 이 땅의 가격은 $1%s 입니다
|
||||
not_for_sale: $2이 땅은 판매 불가능합니다
|
||||
cannot_buy_own: $2당신은 본인의 땅을 구입 불가능 합니다
|
||||
plot_sold: $4당신의 땅; $1%s0$4, has been sold to $1%s1$4 for $1$%s2
|
||||
plot_sold: $4당신의 땅; $1%s0$4, 판매 된 $1%s1$4 에 대한 $1$%s2
|
||||
cannot_afford_merge: $2당신은 이 땅을 함칠 수 없습니다. 이 땅의 가격은 $1%s 입니다
|
||||
added_balance: $1%s $2이 당신의 통장에 추가되었습니다
|
||||
removed_balance: $1%s $2이 당신의 통장에서 빠져나갔습니다
|
||||
removed_granted_plot: $2너는 사용했다 %s 계획 교부금 (들), 당신이있어 $1%s $2왼쪽
|
||||
setup:
|
||||
setup_init: '$1Usage: $2/plot setup <value>'
|
||||
setup_step: '$3[$1Step %s0$3] $1%s1 $2- $1Expecting: $2%s2 $1Default: $2%s3'
|
||||
setup_invalid_arg: '$2%s0 는 올바르지 않은 값입니다 %s1. 설정 취소를 원하시면
|
||||
다음 명령어를 사용하십시오: $1/plot setup cancel'
|
||||
setup_init: '$1용법: $2/plot setup <value>'
|
||||
setup_step: '$3[$1Step %s0$3] $1%s1 $2- $1기대: $2%s2 $1태만: $2%s3'
|
||||
setup_invalid_arg: '$2%s0 는 올바르지 않은 값입니다 %s1. 설정 취소를 원하시면 다음 명령어를 사용하십시오: $1/plot
|
||||
setup cancel'
|
||||
setup_valid_arg: $2Value $1%s0 $2set to %s1
|
||||
setup_finished: $4당신은 만들어진 World로 이동되있어야 합니다. 그렇지 않으면 당신은 bukkit.yml를 통하여 워드를 설정하거나 다중월드 플러그인을 사용하여 월드를 생성하여야 합니다.
|
||||
setup_finished: $4당신은 만들어진 World로 이동되있어야 합니다. 그렇지 않으면 당신은 bukkit.yml를 통하여 워드를 설정하거나
|
||||
다중월드 플러그인을 사용하여 월드를 생성하여야 합니다.
|
||||
setup_world_taken: $2%s 는 이미 등록된 Plot World 입니다
|
||||
setup_missing_world: $2당신은 월드의 이름을 지정해야 합니다 ($1/plot setup &l<world>$1 <generator>$2)&-$1Additional commands:&-$2 - $1/plot setup <value>&-$2 - $1/plot setup back&-$2 - $1/plot setup cancel
|
||||
setup_missing_generator: $2당신은 생성기를 지정해야 합니다 ($1/plot setup <world> &l<generator>&r$2)&-$1Additional commands:&-$2 - $1/plot setup <value>&-$2 - $1/plot setup back&-$2 - $1/plot setup cancel
|
||||
setup_missing_world: $2당신은 월드의 이름을 지정해야 합니다 ($1/plot setup &l<world>$1 <generator>$2)&-$1Additional
|
||||
commands:&-$2 - $1/plot setup <value>&-$2 - $1/plot setup back&-$2 - $1/plot setup
|
||||
cancel
|
||||
setup_missing_generator: $2당신은 생성기를 지정해야 합니다 ($1/plot setup <world> &l<generator>&r$2)&-$1Additional
|
||||
commands:&-$2 - $1/plot setup <value>&-$2 - $1/plot setup back&-$2 - $1/plot setup
|
||||
cancel
|
||||
setup_invalid_generator: '$2올바르지 않은 생성기 입니다. 가능한 옵션: %s'
|
||||
schematics:
|
||||
schematic_missing_arg: '$2당신은 인수를 지정해야 합니다. 가능한 값: $1test
|
||||
<name>$2 , $1save$2 , $1paste $2, $1exportall'
|
||||
schematic_missing_arg: '$2당신은 인수를 지정해야 합니다. 가능한 값: $1test <name>$2 , $1save$2 ,
|
||||
$1paste $2, $1exportall'
|
||||
schematic_invalid: '$2이것은 올바르지 않은 schematic파일 입니다. 사유: $2%s'
|
||||
schematic_valid: $2이것은 올바른 schematic파일 입니다
|
||||
schematic_paste_failed: $2schematic 적용에 실패하엿습니다
|
||||
schematic_paste_success: $4schematic이 성공적으로 적용되었습니다
|
||||
schematic_too_large: $2플롯이 너무 커서이 작업을 수행 할 수 없습니다!
|
||||
titles:
|
||||
title_entered_plot: '$1Plot: %world%;%x%;%z%'
|
||||
title_entered_plot_sub: $4Owned by %s
|
||||
title_entered_plot_sub: $4에게 소유 된 %s
|
||||
prefix_greeting: '$1%id%$2> '
|
||||
prefix_farewell: '$1%id%$2> '
|
||||
core:
|
||||
task_start: 작업을 시작합니다...
|
||||
prefix: $3[$1P2$3] $2
|
||||
enabled: $1PlotSquared 가 실행됩니다
|
||||
example_message: $2This Korean Translation Make by Protocodyne &k!!!
|
||||
reload:
|
||||
reloaded_configs: $1번역 파일 및 월드 설정 파일이 성공적으로 리로드 되었습니다
|
||||
reload_failed: $2설정파일의 리로드에 실패하였습니다
|
||||
bar api:
|
||||
bossbar_clearing: '$2Clearing plot: $1%id%'
|
||||
desc:
|
||||
desc_set: $2Plot 설명 설정
|
||||
desc_unset: $2Plot 설명 설정취소
|
||||
@ -175,6 +179,7 @@ alias:
|
||||
missing_alias: $2당신은 별명을 설정해야 합니다
|
||||
alias_too_long: $2별명은 50자 이내여야 합니다
|
||||
alias_is_taken: $2이 별명은 이미 존재합니다
|
||||
alias_removed: $2플롯 별칭이 제거되었습니다
|
||||
position:
|
||||
missing_position: '$2당신은 위치를 지정해야합니다. 가능한 값: $1none'
|
||||
position_set: $1Home 위치를 현재 위치로 지정합니다
|
||||
@ -193,24 +198,18 @@ permission:
|
||||
cant_claim_more_plots_num: $2당신은 한번에 $1%s $2plots보다 더 많이 소유할 수 없습니다
|
||||
you_be_denied: $2당신은 이 땅에 들어갈 수 없습니다
|
||||
merge_request_confirm: 병합요청이 들어왔습니다 %s
|
||||
cant_claim_more_clusters: $2더 많은 클러스터를 청구 할 수 없습니다.
|
||||
merge:
|
||||
merge_not_valid: $2이 병합 요청은 더이상 유효하지 않습니다
|
||||
merge_accepted: $2병합 요청이 수락되었습니다
|
||||
success_merge: $2땅이 병합되었습니다
|
||||
merge_requested: $2병합요청이 성공적으로 전송되었습니다
|
||||
no_perm_merge: '$2당신은 이 땅의 소유자가 아닙니다: $1%plot%'
|
||||
no_available_automerge: $2당신은 지정한 방향으로 인접한 plots를 소유하지 않았거나 plots를 필요한 크기로 합병 할 수 없습니다.
|
||||
no_available_automerge: $2당신은 지정한 방향으로 인접한 plots를 소유하지 않았거나 plots를 필요한 크기로 합병 할
|
||||
수 없습니다.
|
||||
unlink_required: $2An unlink는 이것을 하는데 요구 됩니다.
|
||||
unlink_impossible: $2당신은 오직 mega-plot만 unlink 할 수 있습니다
|
||||
unlink_success: $2성공적으로 plots을 unlink 하였습니다.
|
||||
commands:
|
||||
not_valid_subcommand: $2이것은 유효하지 않은 하위 명령어 입니다
|
||||
did_you_mean: '$2이것을 명령어를 의미하나요: $1%s'
|
||||
name_little: $2%s0 아름이 너무 짧습니다, $1%s1$2<$1%s3
|
||||
no_commands: $2죄송합니다 당신은 하위명령어 사용을 허가받지 못했습니다.
|
||||
subcommand_set_options_header: '$2Possible Values: '
|
||||
command_syntax: '$1Usage: $2%s'
|
||||
flag_tutorial_usage: '$1Have an admin set the flag: $2%s'
|
||||
errors:
|
||||
invalid_player_wait: '$2플레이어를 찾지 못했습니다: $1%s$2, fetching it. 잠시 후 시도해주세요.'
|
||||
invalid_player_offline: '$2플레이어는 반드시 접속 중이어야 합니다: $1%s.'
|
||||
@ -224,22 +223,22 @@ errors:
|
||||
not_valid_world: $2옳바르지 않은 World 입니다
|
||||
not_valid_plot_world: $2올바르지 않은 plot world 입니다 (case sensitive)
|
||||
no_plots: $2당신은 어떤 땅도 가지고 있지 않습니다
|
||||
not_using_plotme: $2이 서버는 상위버전의 $1PlotSquared $2plot 관리 시스템을 사용합니다. Please use the $1/ps $2or $1/p2 $2or $1/plot $2instead
|
||||
wait_for_timer: $2A setblock 타이머는 현재의 땅 또는 당신에게 묶여있습니다. 완료까지 잠시 기다려주시기 바랍니다
|
||||
invalid_command_flag: '$2잘못된 명령 플래그: %s0'
|
||||
error: '$2오류가 발생했습니다: %s'
|
||||
not_loaded: $2플롯을로드 할 수 없습니다
|
||||
paste:
|
||||
debug_report_created: '$1Uploaded a full debug to: $1%url%'
|
||||
debug_report_created: '$1전체 디버그를에 업로드했습니다.: $1%url%'
|
||||
purge:
|
||||
purge_syntax: Use /plot purge <x;z|player|unowned|unknown|all> <world>
|
||||
purge_success: $4%s 땅들을 성공적으로 제거하였습니다
|
||||
trim:
|
||||
trim_syntax: Use /plot trim <all|x;y> <world>
|
||||
trim_in_progress: 최적화 작업이 이미 진행중입니다!
|
||||
not_valid_hybrid_plot_world: 이 행동을 위하여 hybrid plot manager가 필요합니다.
|
||||
block list:
|
||||
block_list_separater: '$1,$2 '
|
||||
biome:
|
||||
need_biome: $2당신은 유효한 생태계를 지정해야 합니다.
|
||||
biome_set_to: $2Plot biome set to $2
|
||||
biome_set_to: $2플롯 생물 설정 $2
|
||||
teleport:
|
||||
teleported_to_plot: $1당신은 이동 되었습니다.
|
||||
teleported_to_road: $2당신은 길로 이동 되었습니다.
|
||||
@ -258,13 +257,14 @@ invalid:
|
||||
not_valid_data: $2그것은 유효한 데이터 ID가 아닙니다.
|
||||
not_valid_block: '$2그것은 유효한 블록이 아닙니다.: %s 그것은 유효한 블록이 아닙니다.'
|
||||
not_allowed_block: '$2그 블록은 허락되지 않았습니다 : %s'
|
||||
not_valid_number: '$2그것은 %s범위내에서 유효하지 않은 숫자입니다.'
|
||||
not_valid_number: $2그것은 %s범위내에서 유효하지 않은 숫자입니다.
|
||||
not_valid_plot_id: $2그 땅의 ID는 유효하지 않습니다.
|
||||
plot_id_form: '$2땅의 ID는 반드시 형식에 있어야 합니다: $1X;Y $2e.g. $1-5;7'
|
||||
plot_id_form: '$2땅의 ID는 반드시 형식에 있어야 합니다: $1X;Y $2e.g. $1-5;7'
|
||||
not_your_plot: $2그것은 당신의 땅이 아닙니다.
|
||||
no_such_plot: $2거기엔 어떤 땅도 없습니다.
|
||||
player_has_not_been_on: $2해당 플레이어는 plotworld에 없습니다.
|
||||
found_no_plots: $2당신의 검색에서 아무 땅도 발견하지 못했습니다
|
||||
found_no_plots_for_player: '$2No plots found for player: %s'
|
||||
camera:
|
||||
camera_started: $2당신은 땅을 위한 카메라 모드에 입장했습니다 $1%s
|
||||
camera_stopped: $2카메라 모드를 종료합니다
|
||||
@ -297,32 +297,40 @@ info:
|
||||
plot_info_size: $1Size:$2 %size%
|
||||
plot_user_list: ' $1%user%$2,'
|
||||
info_syntax_console: $2/plot info X;Y
|
||||
now: 지금
|
||||
never: 못
|
||||
plot_info_seen: $1Seen:$2 %seen%
|
||||
plot_flag_list: $1%s0:%s1$2
|
||||
working:
|
||||
generating_component: $1당신의 설정값으로부터 component 생성을 시작합니다
|
||||
clearing_plot: $2Clearing plot async.
|
||||
clearing_done: $4Clear completed! Took %sms.
|
||||
clearing_plot: $2플롯 비동기 지우기.
|
||||
clearing_done: $4명확한 완료. 했다 %sms.
|
||||
plot_not_claimed: $2땅이 판매되지 않았습니다
|
||||
plot_is_claimed: $2이 땅은 이미 판매되었습니다
|
||||
claimed: $4성공적으로 땅을 판매하였습니다
|
||||
deleting_done: $4삭제가 완료되었습니다! 가져왔다 %sms.
|
||||
list:
|
||||
comment_list_header_paged: $2(Page $1%cur$2/$1%max$2) $1List of %amount% comments
|
||||
clickable: ' (interactive)'
|
||||
plot_list_header_paged: $2(Page $1%cur$2/$1%max$2) $1List of %amount% plots
|
||||
plot_list_header: $1List of %word% plots
|
||||
comment_list_header_paged: $2(페이지 $1%cur$2/$1%max$2) $1목록 %amount% 코멘트
|
||||
clickable: ' (상호 작용하는)'
|
||||
plot_list_header_paged: $2(페이지 $1%cur$2/$1%max$2) $1목록 %amount% plots
|
||||
plot_list_header: $1목록 %word% plots
|
||||
plot_list_item: $2>> $1%id$2:$1%world $2- $1%owner
|
||||
plot_list_item_ordered: $2[$1%in$2] >> $1%id$2:$1%world $2- $1%owner
|
||||
plot_list_footer: $2>> $1%word% a total of $2%num% $1claimed %plot%.
|
||||
plot_list_footer: $2>> $1%word% 총 $2%num% $1claimed %plot%.
|
||||
area_list_header_paged: $2(페이지 $1%cur$2/$1%max$2) $1목록f %amount% areas
|
||||
left:
|
||||
left_plot: $2당신은 땅을 떠났습니다.
|
||||
chat:
|
||||
plot_chat_format: '$2[$1Plot Chat$2][$1%plot_id%$2] $1%sender%$2: $1%msg%'
|
||||
plot_chat_forced: $이 월드는 모두가 plot chat을 쓰도록 강제합니다
|
||||
plot_chat_on: $4Plot chat enabled.
|
||||
plot_chat_off: $4Plot chat disabled.
|
||||
plot_chat_on: $4플롯 채팅 사용 설정 됨.
|
||||
plot_chat_off: $4플롯 채팅 사용 중지됨.
|
||||
plot_chat_spy_format: '$2[$1Plot Spy$2][$1%plot_id%$2] $1%sender%$2: $1%msg%'
|
||||
deny:
|
||||
denied_removed: $4당신은 이 땅으로부터 플레이어를 차단 해제 했습니다.
|
||||
denied_added: $4당신은 이 땅으로부터 플레이어를 성공적으로 차단 했습니다.
|
||||
denied_need_argument: $2변수가 빠졌습니다. $1/plot denied add <name> $2or $1/plot denied remove <name>
|
||||
denied_need_argument: $2변수가 빠졌습니다. $1/plot denied add <name> $2or $1/plot denied
|
||||
remove <name>
|
||||
was_not_denied: $2해당 플레이어는 이 땅에서 차단되지 않았습니다.
|
||||
you_got_denied: $4당신은 해당 땅으로부터 차단되었습니다 따라서 spawn으로 자동 이동 되었습니다.
|
||||
rain:
|
||||
@ -339,6 +347,7 @@ flag:
|
||||
flag_not_added: $2그 깃발은 추가될 수 없습니다
|
||||
flag_removed: $4깃발이 성공적으로 제거되었습니다
|
||||
flag_added: $4깃발이 성공적으로 추가되었습니다
|
||||
not_valid_flag_suggested: '$2That is not a valid flag. Did you mean: $1%s'
|
||||
trusted:
|
||||
trusted_added: $4당신은 그 땅에 유저를 성공적으로 위탁했습니다
|
||||
trusted_removed: $4당신은 그 땅으로부터 신용(위탁)받은 유저를 성공적으로 제거했습니다.
|
||||
@ -355,18 +364,39 @@ member:
|
||||
owner:
|
||||
set_owner: $4당신은 땅의 소유자를 성공적으로 설정했습니다
|
||||
now_owner: $4당신은 이제 %s땅의 소유자입니다
|
||||
set_owner_cancelled: $2The setowner action was cancelled
|
||||
signs:
|
||||
owner_sign_line_1: '$1ID: $1%id%'
|
||||
owner_sign_line_2: '$1소유자:'
|
||||
owner_sign_line_3: $2%plr%
|
||||
owner_sign_line_4: $3Claimed
|
||||
help:
|
||||
help_header: "$3&m---------&r $1Plot\xb2 도움말 $3&m---------"
|
||||
help_page_header: '$1Category: $2%category%$2,$1 Page: $2%current%$3/$2%max%$2'
|
||||
help_footer: "$3&m---------&r $1Plot\xb2 도움말 $3&m---------"
|
||||
help_header: $3&m---------&r $1Plot² 도움말 $3&m---------
|
||||
help_page_header: '$1범주: $2%category%$2,$1 페이지: $2%current%$3/$2%max%$2'
|
||||
help_footer: $3&m---------&r $1Plot² 도움말 $3&m---------
|
||||
help_info_item: $1/plot help %category% $3- $2%category_desc%
|
||||
help_item: $1%usage% [%alias%]&- $3- $2%desc%&-
|
||||
direction: '$1Current direction: %dir%'
|
||||
direction: '$1현재 방향: %dir%'
|
||||
'-':
|
||||
custom_string: '-'
|
||||
|
||||
commandconfig:
|
||||
not_valid_subcommand: $2이것은 유효하지 않은 하위 명령어 입니다
|
||||
did_you_mean: '$2이것을 명령어를 의미하나요: $1%s'
|
||||
name_little: $2%s0 아름이 너무 짧습니다, $1%s1$2<$1%s3
|
||||
no_commands: $2죄송합니다 당신은 하위명령어 사용을 허가받지 못했습니다.
|
||||
subcommand_set_options_header: '$2Possible Values: '
|
||||
command_syntax: '$1Usage: $2%s'
|
||||
flag_tutorial_usage: '$1관리자에게 국기를 설정하게하십시오: $2%s'
|
||||
bar api: {}
|
||||
set:
|
||||
set_attribute: $4설정 완료 %s0 로 설정 %s1
|
||||
cap:
|
||||
entity_cap: $2더 많은 몹을 스폰하는 것은 허용되지 않습니다.
|
||||
near:
|
||||
plot_near: '$1선수: %s0'
|
||||
kick:
|
||||
you_got_kicked: $4너는 쫓겨났다
|
||||
grants:
|
||||
granted_plots: '$1결과: $2%s $1grants left'
|
||||
granted_plot: $1You granted %s0 plot to $2%s1
|
||||
granted_plot_failed: '$1Grant failed: $2%s'
|
@ -1,378 +0,0 @@
|
||||
#Translator: c7w/1345979462
|
||||
confirm:
|
||||
failed_confirm: $2\u4f60\u5f53\u524d\u6ca1\u6709\u53ef\u4ee5\u63a5\u53d7\u7684\u884c\u52a8\uff01
|
||||
requires_confirm: '$2\u4f60\u662f\u5426\u8981\u6267\u884c: $1%s$2?&-$2\u8be5\u64cd\u4f5c\u4e0d\u53ef\u9006! \u5982\u679c\u786e\u5b9a\u8bf7\u8f93\u5165: $1/plot confirm'
|
||||
move:
|
||||
move_success: $4\u6210\u529f\u7684\u79fb\u52a8\u4e86\u5730\u76ae\u3002
|
||||
copy_success: $4\u6210\u529f\u7684\u590d\u5236\u4e86\u5730\u76ae\u3002
|
||||
requires_unowned: $2\u4f60\u6307\u5b9a\u7684\u4f4d\u7f6e\u5df2\u88ab\u5360\u7528\u3002
|
||||
set:
|
||||
set_attribute: $4\u6210\u529f\u5c06 %s0 \u8bbe\u7f6e\u4e3a %s1
|
||||
web:
|
||||
generating_link: $1\u5904\u7406\u5730\u76ae\u4e2d...
|
||||
generating_link_failed: $2\u521b\u5efa\u4e0b\u8f7d\u94fe\u63a5\u5931\u8d25\u4e86\uff01
|
||||
save_failed: $2\u4fdd\u5b58\u5931\u8d25
|
||||
load_null: $2\u8bf7\u4f7f\u7528 $4/plot load $2\u6765\u83b7\u53d6\u6a21\u578b\u5217\u8868
|
||||
load_failed: $2\u8bfb\u53d6\u6a21\u578b\u5931\u8d25
|
||||
load_list: '$2\u82e5\u8981\u8bfb\u53d6\u4e00\u4e2a\u6a21\u578b\uff0c\u8bf7\u4f7f\u7528 $1/plot load #'
|
||||
save_success: $1\u6210\u529f\u4fdd\u5b58\uff01
|
||||
compass:
|
||||
compass_target: $4\u6210\u529f\u7684\u7528\u6307\u5357\u9488\u6307\u5411\u4e86\u5730\u76ae\uff01
|
||||
cluster:
|
||||
cluster_available_args: '''$1\u4e0b\u9762\u7684\u5b50\u6307\u4ee4\u662f\u53ef\u884c\u7684: $4list$2, $4create$2, $4delete$2, $4resize$2,
|
||||
$4invite$2, $4kick$2, $4leave$2, $4members$2, $4info$2, $4tp$2, $4sethome'''
|
||||
cluster_list_heading: $2\u5728\u8fd9\u4e2a\u4e16\u754c\u4e2d\u6709 $1%s$2 \u4e2a\u5730\u76ae\u7fa4
|
||||
cluster_list_element: $2 - $1%s&-
|
||||
cluster_intersection: $2\u76ee\u6807\u533a\u57df\u88ab %s0 \u8986\u76d6'
|
||||
cluster_added: $4\u6210\u529f\u7684\u521b\u5efa\u4e86\u7fa4\u3002
|
||||
cluster_deleted: $4\u6210\u529f\u7684\u5220\u9664\u4e86\u7fa4\u3002
|
||||
cluster_resized: $4\u6210\u529f\u4e3a\u7fa4\u91cd\u65b0\u8bbe\u7f6e\u5927\u5c0f\u3002
|
||||
cluster_added_user: $4\u6210\u529f\u4e3a\u7fa4\u589e\u52a0\u7528\u6237\u3002
|
||||
cannot_kick_player: $2\u4f60\u4e0d\u80fd\u4ece\u5730\u76ae\u4e2d\u79fb\u9664\u90a3\u4f4d\u73a9\u5bb6\uff01
|
||||
cluster_invited: $1\u4f60\u88ab\u9080\u8bf7\u53bb\u4e0b\u5217\u7fa4\uff1a $2%s
|
||||
cluster_removed: $1\u4f60\u88ab\u8be5\u7fa4\u79fb\u9664\uff1a $2%s
|
||||
cluster_kicked_user: $4\u6210\u529f\u79fb\u9664\u4e86\u7528\u6237\u3002
|
||||
invalid_cluster: '''$1\u4e0d\u5408\u6cd5\u7684\u7fa4\u540d\u79f0\uff1a $2%s'''
|
||||
cluster_not_added: $2\u90a3\u4e2a\u73a9\u5bb6\u6ca1\u6709\u88ab\u6dfb\u52a0\u5230\u5730\u76ae\u7fa4\u4e2d
|
||||
cluster_cannot_leave: $1\u4f60\u5728\u79bb\u5f00\u4e4b\u524d\u5fc5\u987b\u5220\u9664\u6216\u8f6c\u8ba9\u7fa4
|
||||
cluster_added_helper: $4\u6210\u529f\u4e3a\u5730\u76ae\u7fa4\u589e\u52a0\u4e86\u63f4\u5efa\u8005
|
||||
cluster_removed_helper: $4\u6210\u529f\u4e3a\u5730\u76ae\u7fa4\u79fb\u9664\u4e86\u4e00\u4f4d\u63f4\u5efa\u8005
|
||||
cluster_regenerated: $4\u6210\u529f\u7684\u5f00\u59cb\u4e86\u5730\u76ae\u7fa4\u91cd\u5efa\u4efb\u52a1
|
||||
cluster_teleporting: $4\u4f20\u9001\u4e2d...
|
||||
cluster_info: '''$1\u5f53\u524d\u7fa4\uff1a $2%id%&-$1\u540d\u79f0\uff1a $2%name%&-$1\u6240\u6709\u8005\uff1a $2%owner%&-$1\u5927\u5c0f\uff1a $2%size%&-$1\u6743\u5229\uff1a
|
||||
$2%rights%'''
|
||||
cluster_outside: '$2The proposed area is outside the plot area: %s0'
|
||||
border:
|
||||
border: $2\u4f60\u5728\u5f53\u524d\u5730\u56fe\u8fb9\u754c\u4e4b\u5916
|
||||
unclaim:
|
||||
unclaim_success: $4\u4f60\u6210\u529f\u7684\u653e\u5f03\u4e86\u5730\u76ae
|
||||
unclaim_failed: $2\u4e0d\u80fd\u653e\u5f03\u5730\u76ae
|
||||
worldedit masks:
|
||||
worldedit_delayed: $2\u8bf7\u7b49\u5f85\u6211\u4eec\u5904\u7406\u4f60\u7684 Worldedit \u884c\u52a8...
|
||||
worldedit_run: '''$2\u8bf7\u7b49\u5f85\u5f53\u524d\u4efb\u52a1\u5b8c\u6210\u3002\u5f53\u524d\u6b63\u5728\u8fdb\u884c\u7684\u4efb\u52a1\uff1a%s'''
|
||||
require_selection_in_mask: $2\u4f60\u5f53\u524d\u9009\u62e9\u8303\u56f4\u4e2d %s \u4e0d\u662f\u4f60\u7684\u5730\u76ae\uff0c\u4f60\u53ea\u80fd\u5728\u4f60\u81ea\u5df1\u7684\u5730\u76ae\u4e0a\u66f4\u6539\u3002
|
||||
worldedit_volume: $2\u4f60\u76ee\u524d\u9009\u533a\u4e2d\u6709 %current%\u4e2a\u65b9\u5757\uff0c\u4f60\u6700\u5927\u53ef\u4ee5\u4e00\u6b21\u6027\u7f16\u8f91\u7684\u65b9\u5757\u6570\u76ee\u4e3a %max%\u3002
|
||||
worldedit_iterations: $2\u4f60\u4e0d\u80fd\u91cd\u590d %current% \u6b21\u3002\u4f60\u53ef\u4ee5\u91cd\u590d\u7684\u6700\u5927\u6b21\u6570\u4e3a %max%\u6b21\u3002
|
||||
worldedit_unsafe: $2\u90a3\u4e2a\u6307\u4ee4\u5df2\u88ab\u7981\u7528
|
||||
worldedit_bypass: $2&o\u82e5\u8981\u89e3\u9664\u4f60\u7684 Worldedit \u9650\u5236\uff0c\u8f93\u5165 $4/plot wea
|
||||
worldedit_bypassed: $2\u5f53\u524d\u89e3\u9664\u4e86\u4f60\u7684 WorldEdit \u9650\u5236
|
||||
worldedit_unmasked: $1\u4f60\u7684 WorldEdit \u73b0\u5728\u88ab\u89e3\u9664\u9650\u5236\u3002
|
||||
worldedit_restricted: $1\u4f60\u7684 WorldEdit \u73b0\u5728\u88ab\u9650\u5236\u3002
|
||||
gamemode:
|
||||
gamemode_was_bypassed: $1\u4f60\u4e3a\u5730\u76ae $2{plot} $1\u8df3\u8fc7\u4e86\u6e38\u620f\u6a21\u5f0f \u2014\u2014 ($2{gamemode}$1) $1
|
||||
height limit:
|
||||
height_limit: $1\u8fd9\u4e2a\u5730\u76ae\u7684\u5efa\u7b51\u9ad8\u5ea6\u9650\u5236\u4e3a $2{limit}
|
||||
records:
|
||||
record_play: $2%player $2\u5f00\u59cb\u4e86 $1%name \u7684\u8bb0\u5f55
|
||||
notify_enter: $2%player $2\u8fdb\u5165\u4e86\u4f60\u7684\u5730\u76ae ($1%plot$2)
|
||||
notify_leave: $2%player $2\u79bb\u5f00\u4e86\u4f60\u7684\u5730\u76ae ($1%plot$2)
|
||||
swap:
|
||||
swap_overlap: $2\u76ee\u6807\u533a\u57df\u4e0d\u5141\u8bb8\u88ab\u8986\u76d6
|
||||
swap_dimensions: $2\u548c\u76ee\u6807\u533a\u57df\u5fc5\u987b\u62e5\u6709\u76f8\u540c\u7684\u4e16\u754c\u7c7b\u578b
|
||||
swap_syntax: $2/plots swap <id>
|
||||
swap_success: $4\u6210\u529f\u7684\u4ea4\u6362\u4e86\u5730\u76ae
|
||||
started_swap: $2\u4ea4\u6362\u5730\u76ae\u4efb\u52a1\u5df2\u5f00\u59cb\uff0c\u4f60\u5c06\u4f1a\u5728\u5b8c\u6210\u540e\u6536\u5230\u901a\u77e5\u3002
|
||||
comment:
|
||||
inbox_notification: '%s \u6761\u672a\u8bfb\u4fe1\u606f\u3002\u4f7f\u7528 /plot inbox \u6765\u8bfb\u53d6'
|
||||
not_valid_inbox_index: $2\u5728\u7b2c %s \u9875\u6ca1\u6709\u4fe1\u606f
|
||||
inbox_item: $2 - $4%s
|
||||
comment_syntax: $2\u8bf7\u4f7f\u7528 /plots comment [X;Z] <%s> <comment>
|
||||
invalid_inbox: $2\u90a3\u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u6536\u4ef6\u7bb1&-$1\u5141\u8bb8\u7684\u503c\uff1a %s
|
||||
no_perm_inbox: $2\u4f60\u6ca1\u6709\u67e5\u770b\u90a3\u4e2a\u6536\u4ef6\u7bb1\u7684\u6743\u9650
|
||||
no_perm_inbox_modify: $2\u4f60\u6ca1\u6709\u66f4\u6539\u90a3\u4e2a\u6536\u4ef6\u7bb1\u7684\u6743\u9650
|
||||
no_plot_inbox: $2\u4f60\u5fc5\u987b\u7ad9\u5728\u6216\u6307\u5b9a\u4e00\u4e2a\u5730\u76ae\u53c2\u6570
|
||||
comment_removed: $4\u6210\u529f\u7684\u5220\u9664\u4e86\u8bc4\u8bba\uff1a$2 - '$3%s$2'
|
||||
comment_added: $4\u4e00\u6761\u8bc4\u8bba\u88ab\u7559\u4e0b
|
||||
comment_header: $2&m---------&r $1\u8bc4\u8bba $2&m---------&r
|
||||
inbox_empty: $2\u6ca1\u6709\u8bc4\u8bba
|
||||
console:
|
||||
not_console: $2\u4e3a\u4e86\u5b89\u5168\uff0c\u8fd9\u4e2a\u6307\u4ee4\u53ea\u80fd\u7531\u63a7\u5236\u53f0\u6267\u884c\u3002
|
||||
is_console: $2\u8fd9\u4e2a\u6307\u4ee4\u53ea\u80fd\u7531\u73a9\u5bb6\u6267\u884c\u3002
|
||||
inventory:
|
||||
inventory_usage: '&c\u4f7f\u7528\uff1a &6{usage}'
|
||||
inventory_desc: '&c\u63cf\u8ff0\uff1a &6{desc}'
|
||||
inventory_category: '&c\u7c7b\u578b\uff1a &6{category}'
|
||||
clipboard:
|
||||
clipboard_set: $2\u5f53\u524d\u5730\u76ae\u5df2\u88ab\u590d\u5236\u5230\u4f60\u7684\u526a\u5207\u677f\u4e2d\uff0c\u4f7f\u7528 $1/plot paste$2 \u6765\u7c98\u8d34\u3002
|
||||
pasted: $4\u5730\u76ae\u5df2\u88ab\u6210\u529f\u7c98\u8d34\u3002\u5b83\u4ece\u4f60\u7684\u526a\u5207\u677f\u4e2d\u88ab\u79fb\u9664\u3002
|
||||
paste_failed: $2\u7c98\u8d34\u9009\u4e2d\u533a\u57df\u65f6\u5931\u8d25\u4e86\uff0c\u5931\u8d25\u539f\u56e0\uff1a $2%s
|
||||
no_clipboard: $2\u4f60\u7684\u526a\u5207\u677f\u4e2d\u6ca1\u6709\u9009\u62e9\u3002
|
||||
clipboard_info: '$2\u5f53\u524d\u9009\u62e9 - \u5730\u76aeID: $1%id$2, \u5bbd\u5ea6: $1%width$2, \u603b\u8ba1\u65b9\u5757\u6570\uff1a$1%total$2'
|
||||
toggle:
|
||||
toggle_enabled: $2\u542f\u7528\u8bbe\u7f6e\uff1a %s
|
||||
toggle_disabled: $2\u7981\u7528\u8bbe\u7f6e\uff1a %s
|
||||
blocked command:
|
||||
command_blocked: $2\u5728\u8fd9\u4e2a\u5730\u76ae\u4e2d\u90a3\u4e2a\u6307\u4ee4\u4e0d\u88ab\u5141\u8bb8
|
||||
done:
|
||||
done_already_done: $2\u8fd9\u4e2a\u5730\u76ae\u5df2\u7ecf\u88ab\u6807\u8bb0\u5b8c\u6210\u3002
|
||||
done_not_done: $2\u8fd9\u4e2a\u5730\u76ae\u6ca1\u6709\u88ab\u6807\u8bb0\u5b8c\u6210\u3002
|
||||
done_insufficient_complexity: $2\u8fd9\u4e2a\u5730\u76ae\u592a\u8fc7\u4e8e\u7b80\u5355\u3002\u8bf7\u5728\u4f7f\u7528\u8fd9\u4e2a\u6307\u4ee4\u4e4b\u524d\u589e\u52a0\u589e\u52a0\u66f4\u591a\u7ec6\u8282\u3002
|
||||
done_success: $1\u6210\u529f\u5c06\u5730\u76ae\u6807\u8bb0\u5b8c\u6210\u3002
|
||||
done_removed: $1\u4f60\u73b0\u5728\u53ef\u4ee5\u7ee7\u7eed\u5728\u5730\u76ae\u4e2d\u5efa\u7b51\u4e86\u3002
|
||||
ratings:
|
||||
rating_not_valid: $2\u4f60\u9700\u8981\u5728 1 - 10 \u4e4b\u524d\u6307\u5b9a\u4e00\u4e2a\u6570\u5b57
|
||||
rating_already_exists: $2\u4f60\u5df2\u7ecf\u4e3a\u5730\u76ae $2%s \u6295\u8fc7\u7968\u4e86
|
||||
rating_applied: $4\u4f60\u6210\u529f\u7684\u4e3a\u5730\u76ae $2%s \u6295\u4e86\u4e00\u7968
|
||||
rating_not_your_own: $2\u4f60\u4e0d\u80fd\u4e3a\u81ea\u5df1\u7684\u5730\u76ae\u6295\u7968
|
||||
rating_not_done: $2\u4f60\u53ea\u80fd\u4e3a\u5b8c\u6210\u7684\u5730\u76ae\u6295\u7968\u3002
|
||||
rating_not_owned: $2\u4f60\u4e0d\u80fd\u4e3a\u65e0\u4e3b\u7684\u5730\u76ae\u6295\u7968\u3002
|
||||
tutorial:
|
||||
rate_this: $2\u4e3a\u8fd9\u4e2a\u5730\u76ae\u6295\u7968\uff01
|
||||
comment_this: $2\u4e3a\u8fd9\u4e2a\u5730\u76ae\u7559\u4e00\u4e9b\u53cd\u9988\uff1a %s
|
||||
economy:
|
||||
econ_disabled: $2\u73b0\u5728\u6ca1\u6709\u542f\u52a8\u7ecf\u6d4e\u7cfb\u7edf
|
||||
cannot_afford_plot: $2\u4f60\u6ca1\u6709\u8db3\u591f\u7684\u94b1\u4e70\u8fd9\u5757\u5730\u76ae\u3002\u5b83\u9700\u8981\u82b1\u8d39 $1%s
|
||||
not_for_sale: $2\u8fd9\u5757\u5730\u76ae\u6ca1\u6709\u51fa\u552e
|
||||
cannot_buy_own: $2\u4f60\u4e0d\u80fd\u8d2d\u4e70\u4f60\u81ea\u5df1\u7684\u5730\u76ae
|
||||
plot_sold: $4\u4f60\u7684\u5730\u76ae $1%s0$4\uff0c\u4ee5 $1$%s2 \u7684\u4ef7\u683c\u88ab\u5356\u7ed9\u4e86 $1%s1$4
|
||||
cannot_afford_merge: $2\u4f60\u6ca1\u6709\u8db3\u591f\u7684\u94b1\u6765\u5408\u5e76\u5730\u76ae\u3002\u5b83\u9700\u8981\u82b1\u8d39 $1%s
|
||||
added_balance: $1%s $2\u88ab\u6253\u5165\u4f60\u7684\u8d26\u6237
|
||||
removed_balance: $1%s $2\u4ece\u4f60\u7684\u8d26\u6237\u53d6\u51fa
|
||||
removed_granted_plot: $2\u4f60\u4f7f\u7528\u4e86 %s \u4e2a\u5730\u76ae\u6388\u6743\uff0c\u4f60\u8fd8\u5269\u4e0b $1%s $2\u4e2a
|
||||
setup:
|
||||
setup_init: $1\u8bf7\u4f7f\u7528\uff1a $2/plot setup <value>
|
||||
setup_step: $3[$1\u7b2c %s0 $1\u6b65$3] $1%s1 $2- $1\u53c2\u6570\u7c7b\u578b\uff1a $2%s2 $1\u9ed8\u8ba4\u503c\uff1a $2%s3
|
||||
setup_invalid_arg: $2%s0 \u4e0d\u662f\u5bf9\u4e8e\u7b2c %s1 \u6b65\u7684\u6b63\u786e\u7684\u53c2\u6570\u3002\u8981\u60f3\u53d6\u6d88\u8bbe\u7f6e\u4f7f\u7528\uff1a $1/plot setup cancel
|
||||
setup_valid_arg: $2\u4f60\u5c06\u503c $1%s0 $2\u8bbe\u7f6e\u4e3a\u4e86 %s1
|
||||
setup_finished: $4\u4f60\u5e94\u8be5\u88ab\u4f20\u9001\u5230\u4e86\u521b\u5efa\u7684\u4e16\u754c\u3002\u5426\u5219\u4f60\u9700\u8981\u624b\u52a8\u8bbe\u7f6e\u5728 bukkit.yml \u4e2d\u7684\u4e16\u754c\u521b\u5efa\u5668\u6216\u8005\u4f60\u9009\u62e9\u7684\u4e16\u754c\u7684\u7ba1\u7406\u63d2\u4ef6\u3002
|
||||
setup_world_taken: $2%s \u662f\u4e00\u4e2a\u5df2\u7ecf\u521b\u5efa\u7684\u5730\u76ae\u4e16\u754c
|
||||
setup_missing_world: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u4e16\u754c\u540d($1/plot setup &l<world>$1 <generator>$2)&-$1\u9644\u52a0\u6307\u4ee4\uff1a&-$2 - $1/plot setup <value>&-$2 - $1/plot setup back&-$2 - $1/plot setup cancel
|
||||
setup_missing_generator: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u4e16\u754c\u751f\u6210\u5668 ($1/plot setup <world> &l<generator>&r$2)&-$1\u9644\u52a0\u6307\u4ee4\uff1a&-$2 - $1/plot setup <value>&-$2 - $1/plot setup back&-$2 - $1/plot setup cancel
|
||||
setup_invalid_generator: $2\u9519\u8bef\u7684\u751f\u6210\u5668\u3002\u6b63\u786e\u7684\u751f\u6210\u5668\u6709\uff1a %s
|
||||
schematics:
|
||||
schematic_too_large: $2\u8fd9\u4e2a\u5730\u76ae\u5bf9\u6b64\u884c\u52a8\u592a\u5927\u4e86\uff01
|
||||
schematic_missing_arg: $2\u4f60\u9700\u8981\u5236\u5b9a\u4e00\u4e2a\u53c2\u6570\u3002\u6b63\u786e\u7684\u503c\uff1a $1test <name>$2 , $1save$2 , $1paste $2, $1exportall
|
||||
schematic_invalid: $2\u90a3\u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u6a21\u677f\u3002\u539f\u56e0\uff1a $2%s
|
||||
schematic_valid: $2\u90a3\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u6a21\u677f
|
||||
schematic_paste_failed: $2\u7c98\u8d34\u6a21\u677f\u5931\u8d25\u4e86
|
||||
schematic_paste_success: $4\u6210\u529f\u7684\u7c98\u8d34\u4e86\u6a21\u677f
|
||||
titles:
|
||||
title_entered_plot: $1\u5730\u76ae\uff1a %world%;%x%;%z%
|
||||
title_entered_plot_sub: $4\u5730\u76ae\u4e3b\u4eba %s
|
||||
prefix_greeting: '$1%id%$2> '
|
||||
prefix_farewell: '$1%id%$2> '
|
||||
core:
|
||||
task_start: \u4efb\u52a1\u5f00\u59cb...
|
||||
prefix: $3[$1\u5730\u76ae\u7cfb\u7edf$3] $2
|
||||
enabled: $1PlotSquared \u73b0\u5df2\u5f00\u542f
|
||||
reload:
|
||||
reloaded_configs: $1\u7ffb\u8bd1\u548c\u4e16\u754c\u8bbe\u7f6e\u88ab\u91cd\u65b0\u8bfb\u53d6
|
||||
reload_failed: $2\u8bfb\u53d6\u6587\u4ef6\u914d\u7f6e\u5931\u8d25
|
||||
desc:
|
||||
desc_set: $2\u5730\u76ae\u7684\u63cf\u8ff0\u88ab\u8bbe\u7f6e
|
||||
desc_unset: $2\u5730\u76ae\u7684\u63cf\u8ff0\u88ab\u91cd\u7f6e
|
||||
missing_desc: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u63cf\u8ff0
|
||||
alias:
|
||||
alias_set_to: $2\u5730\u76ae\u7b80\u79f0\u8bbe\u7f6e\u4e3a $1%alias%
|
||||
missing_alias: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u7b80\u79f0
|
||||
alias_too_long: $2\u5728\u957f\u5ea6\u4e0a\u7b80\u79f0\u5fc5\u987b\u5c0f\u4e8e50\u5b57\u7b26
|
||||
alias_is_taken: $2\u5df2\u7ecf\u6709\u5730\u76ae\u547d\u540d\u4e3a\u90a3\u4e2a\u7b80\u79f0\u4e86
|
||||
position:
|
||||
missing_position: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u65b9\u4f4d\u3002\u6b63\u786e\u7684\u503c\uff1a \u00d7\u65e0\u00d7
|
||||
position_set: $1\u5c06\u5bb6\u8bbe\u7f6e\u4e3a\u5f53\u524d\u4f4d\u7f6e
|
||||
position_unset: $1\u5bb6\u7684\u4f4d\u7f6e\u91cd\u7f6e\u5230\u9ed8\u8ba4\u4f4d\u7f6e
|
||||
home_argument: $2\u8bf7\u4f7f\u7528 /plot set home [none]
|
||||
invalid_position: $2\u90a3\u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u4f4d\u7f6e\u7684\u503c
|
||||
cap:
|
||||
entity_cap: $2\u4f60\u4e0d\u80fd\u518d\u751f\u6210\u66f4\u591a\u602a\u7269\u4e86\uff01
|
||||
time:
|
||||
time_format: $1%hours%, %min%, %sec%
|
||||
permission:
|
||||
no_schematic_permission: $2\u4f60\u6ca1\u6709\u6743\u9650\u6765\u4f7f\u7528\u6a21\u677f $1%s
|
||||
no_permission: $2\u4f60\u6ca1\u6709\u6743\u9650\uff01 ($1%s)
|
||||
no_permission_event: $2\u4f60\u6ca1\u6709\u6743\u9650\u8fd9\u6837\u505a\uff01 ($1%s)
|
||||
no_plot_perms: $2\u4f60\u9700\u8981\u5730\u76ae\u4e3b\u4eba\u6743\u9650
|
||||
cant_claim_more_plots: $2\u4f60\u4e0d\u80fd\u518d\u9886\u53d6\u66f4\u591a\u5730\u76ae\u4e86
|
||||
cant_transfer_more_plots: $2\u4f60\u4e0d\u80fd\u7ed9\u90a3\u4e2a\u73a9\u5bb6\u66f4\u591a\u5730\u76ae\u4e86
|
||||
cant_claim_more_plots_num: $2\u4f60\u4e0d\u80fd\u540c\u65f6\u9886\u53d6\u8d85\u8fc7 $1%s $2\u4e2a\u5730\u76ae
|
||||
you_be_denied: $2\u4f60\u4e0d\u80fd\u8fdb\u5165\u90a3\u4e2a\u5730\u76ae
|
||||
merge_request_confirm: \u6765\u81ea %s \u7684\u5730\u76ae\u5408\u5e76\u7533\u8bf7
|
||||
cant_claim_more_clusters: $2You can't claim more clusters.
|
||||
merge:
|
||||
merge_not_valid: $2\u8fd9\u4e2a\u5408\u5e76\u8bf7\u6c42\u4e0d\u518d\u5408\u6cd5
|
||||
merge_accepted: $2\u5408\u5e76\u8bf7\u6c42\u88ab\u63a5\u53d7
|
||||
success_merge: $2\u5730\u76ae\u6210\u529f\u88ab\u5408\u5e76\uff01
|
||||
merge_requested: $2\u6210\u529f\u7684\u53d1\u9001\u4e86\u4e00\u4e2a\u5408\u5e76\u8bf7\u6c42
|
||||
no_perm_merge: $2\u4f60\u4e0d\u662f\u5730\u76ae $1%plot% \u7684\u4e3b\u4eba
|
||||
no_available_automerge: $2\u4f60\u5728\u6307\u5b9a\u4f4d\u7f6e\u6ca1\u6709\u90bb\u8fd1\u7684\u5730\u76ae\u6216\u4e0d\u5141\u8bb8\u4f60\u5408\u5e76\u6210\u90a3\u6837\u5927\u5c0f\u3002
|
||||
unlink_required: $2\u4f60\u9700\u8981\u5148\u89e3\u9664\u5730\u76ae\u7684\u5408\u5e76\u3002
|
||||
unlink_impossible: $2\u4f60\u53ea\u80fd\u89e3\u9664\u8d85\u7ea7\u5730\u76ae\u7684\u5408\u5e76
|
||||
unlink_success: $2\u6210\u529f\u7684\u89e3\u9664\u4e86\u5730\u76ae\u7684\u5408\u5e76\u3002
|
||||
commandconfig:
|
||||
not_valid_subcommand: $2\u90a3\u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u5b50\u547d\u4ee4
|
||||
did_you_mean: $2\u4f60\u60f3\u8f93\u5165\uff1a $1%s$2\u5417
|
||||
name_little: $2%s0 \u7684\u540d\u5b57\u592a\u77ed\u4e86\uff0c$1%s1$2<$1%s3
|
||||
no_commands: $2\u5f88\u62b1\u6b49\uff0c\u4f60\u6ca1\u6709\u6743\u9650\u4f7f\u7528\u4efb\u4f55\u5b50\u6307\u4ee4\u3002
|
||||
subcommand_set_options_header: '$2\u6b63\u786e\u7684\u503c\uff1a '
|
||||
command_syntax: $1\u8bf7\u4f7f\u7528\uff1a $2%s
|
||||
flag_tutorial_usage: $1\u4f7f\u4e00\u4f4d\u7ba1\u7406\u5458\u8bbe\u7f6e\u6807\u5fd7\uff1a $2%s
|
||||
errors:
|
||||
invalid_player_wait: $2\u6ca1\u6709\u627e\u5230\u73a9\u5bb6\uff1a$1%s$2\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002
|
||||
invalid_player: $2\u6ca1\u6709\u627e\u5230\u73a9\u5bb6\uff1a $1%s$2.
|
||||
invalid_player_offline: $2\u8fd9\u4e2a\u73a9\u5bb6\u5fc5\u987b\u5728\u7ebf\uff1a $1%s.
|
||||
error: $2\u53d1\u751f\u4e86\u4e00\u4e2a\u9519\u8bef\uff1a %s
|
||||
command_went_wrong: $2\u5f53\u4f7f\u7528\u6307\u4ee4\u65f6\u53d1\u751f\u4e86\u9519\u8bef...
|
||||
no_free_plots: $2\u73b0\u5728\u6ca1\u6709\u53ef\u83b7\u5f97\u7684\u514d\u8d39\u5730\u76ae
|
||||
not_in_plot: $2\u4f60\u4e0d\u5728\u4e00\u4e2a\u5730\u76ae\u4e2d
|
||||
not_in_cluster: $2\u4f60\u5fc5\u987b\u5728\u4e00\u4e2a\u5730\u76ae\u7fa4\u7ec4\u4e2d\u624d\u80fd\u4f7f\u7528\u8fd9\u4e2a\u547d\u4ee4
|
||||
not_in_plot_world: $2\u4f60\u4e0d\u5728\u4e00\u4e2a\u5730\u76ae\u4e16\u754c\u4e2d
|
||||
plotworld_incompatible: $2\u4e24\u4e2a\u4e16\u754c\u5fc5\u987b\u662f\u517c\u5bb9\u7684
|
||||
not_valid_world: $2\u90a3\u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u4e16\u754c(\u533a\u5206\u5927\u5c0f\u5199)
|
||||
not_valid_plot_world: $2\u90a3\u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u5730\u76ae\u4e16\u754c(\u533a\u5206\u5927\u5c0f\u5199)
|
||||
no_plots: $2\u4f60\u4e0d\u62e5\u6709\u4efb\u4f55\u5730\u76ae
|
||||
wait_for_timer: $2A setblock timer is bound to either the current plot or you. Please wait for it to finish
|
||||
invalid_command_flag: '$2Invalid command flag: %s0'
|
||||
paste:
|
||||
debug_report_created: $1U\u5c06DEBUG\u4fe1\u606f\u7c98\u8d34\u5230\u4e86\uff1a $1%url%
|
||||
purge:
|
||||
purge_success: $4\u6210\u529f\u7684\u5408\u5e76\u4e86 %s \u5757\u5730\u76ae
|
||||
trim:
|
||||
trim_in_progress: \u5df2\u7ecf\u6709\u4e00\u4e2a\u5730\u76ae\u6e05\u7406\u4efb\u52a1\u5728\u8fdb\u884c\uff01
|
||||
not_valid_hybrid_plot_world: \u8981\u8fdb\u884c\u8fd9\u4e2a\u884c\u52a8\uff0c\u4f60\u9700\u8981\u7acb\u65b9\u4f53\u5730\u76ae\u7ba1\u7406\u7cfb\u7edf\u3002
|
||||
block list:
|
||||
block_list_separater: '$1,$2 '
|
||||
biome:
|
||||
need_biome: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u6b63\u786e\u7684\u751f\u7269\u7fa4\u7cfb
|
||||
biome_set_to: $2\u5730\u76ae\u7684\u751f\u7269\u7fa4\u7cfb\u8bbe\u7f6e\u4e3a $2
|
||||
teleport:
|
||||
teleported_to_plot: $1\u4f60\u5df2\u88ab\u4f20\u9001
|
||||
teleported_to_road: $2\u4f60\u88ab\u4f20\u9001\u5230\u4e86\u9053\u8def\u4e0a
|
||||
teleport_in_seconds: $1\u4f20\u9001\u5c06\u5728 %s \u79d2\u540e\u8fdb\u884c\u3002\u4e0d\u8981\u79fb\u52a8...
|
||||
teleport_failed: $2\u4f20\u9001\u56e0\u79fb\u52a8\u6216\u4f24\u5bb3\u88ab\u53d6\u6d88
|
||||
set block:
|
||||
set_block_action_finished: $1\u4e0a\u4e00\u4e2a\u65b9\u5757\u8bbe\u7f6e\u884c\u52a8\u73b0\u5728\u5b8c\u6210\u4e86\u3002
|
||||
unsafe:
|
||||
debugallowunsafe_on: $2\u5141\u8bb8\u4e86\u4e0d\u5b89\u5168\u7684\u884c\u52a8
|
||||
debugallowunsafe_off: $2\u4e0d\u5b89\u5168\u7684\u884c\u52a8\u88ab\u7981\u7528
|
||||
debug:
|
||||
debug_header: $1Debug \u4fe1\u606f&-
|
||||
debug_section: $2>> $1&l%val%
|
||||
debug_line: $2>> $1%var%$2:$1 %val%&-
|
||||
invalid:
|
||||
not_valid_data: $2\u90a3\u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u6570\u636eID
|
||||
not_valid_block: $2%s \u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u65b9\u5757
|
||||
not_allowed_block: $2\u8fd9\u4e2a\u65b9\u5757\u88ab\u7981\u7528\uff1a %s
|
||||
not_valid_number: $2\u5728\u8303\u56f4\u4e0a\u8fd9\u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u6570\u503c\uff1a %s
|
||||
not_valid_plot_id: $2\u90a3\u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u5730\u76aeID
|
||||
plot_id_form: $2\u5730\u76ae ID \u7684\u683c\u5f0f\u5fc5\u987b\u4e3a\uff1a $1X;Y $2\u4f8b\u5982\uff1a $1-5;7
|
||||
not_your_plot: $2\u90a3\u4e0d\u662f\u4f60\u7684\u5730\u76ae
|
||||
no_such_plot: $2\u6ca1\u6709\u8fd9\u4e2a\u5730\u76ae
|
||||
player_has_not_been_on: $2\u90a3\u4f4d\u73a9\u5bb6\u4e0d\u5728\u5730\u76ae\u4e2d
|
||||
found_no_plots: $2\u5728\u4f60\u7684\u641c\u7d22\u8bf7\u6c42\u4e2d\u627e\u4e0d\u5230\u5339\u914d\u7684\u5730\u76ae
|
||||
camera:
|
||||
camera_started: $2\u4f60\u8fdb\u5165\u4e86\u5730\u76ae $1%s \u7684\u6444\u50cf\u673a\u6a21\u5f0f
|
||||
camera_stopped: $2\u4f60\u9000\u51fa\u4e86\u6444\u50cf\u673a\u6a21\u5f0f
|
||||
need:
|
||||
need_plot_number: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u5730\u76aeID\u6216\u5730\u76ae\u7b80\u79f0
|
||||
need_block: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u65b9\u5757
|
||||
need_plot_id: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u65b9\u5757 ID\u3002
|
||||
need_plot_world: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u5730\u76ae\u533a\u57df\u3002
|
||||
need_user: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u7528\u6237\u540d
|
||||
info:
|
||||
none: \u65e0
|
||||
now: \u73b0\u5728
|
||||
never: \u4ece\u4e0d
|
||||
unknown: \u672a\u77e5
|
||||
everyone: \u6240\u6709\u4eba
|
||||
plot_unowned: $2\u6267\u884c\u8fd9\u4e2a\u884c\u52a8\u5f53\u524d\u5730\u76ae\u5fc5\u987b\u6709\u4e3b\u4eba
|
||||
plot_info_unclaimed: $2\u5730\u76ae $1%s$2 \u8fd8\u6ca1\u6709\u88ab\u9886\u53d6
|
||||
plot_info_header: $3&m---------&r $1\u4fe1\u606f $3&m---------
|
||||
plot_info: $1ID\uff1a $2%id%$1&-$1\u522b\u79f0\uff1a $2%alias%$1&-$1\u5730\u76ae\u4e3b\u4eba\uff1a $2%owner%$1&-$1\u751f\u7269\u7fa4\u7cfb\uff1a $2%biome%$1&-$1\u662f\u5426\u53ef\u5efa\u7b51\uff1a $2%build%$1&-$1\u8bc4\u7ea7\uff1a $2%rating%&-$1\u53ef\u89c1\uff1a $2%seen%&-$1\u63f4\u5efa\u8005\uff1a $2%trusted%$1&-$1\u6210\u5458\uff1a $2%members%$1&-$1\u9ed1\u540d\u5355\uff1a $2%denied%$1&-$1\u6807\u5fd7\uff1a $2%flags%
|
||||
plot_info_footer: $3&m---------&r $1\u4fe1\u606f $3&m---------
|
||||
plot_info_trusted: $1\u63f4\u5efa\u8005\uff1a$2 %trusted%
|
||||
plot_info_members: $1\u6210\u5458\uff1a$2 %members%
|
||||
plot_info_denied: $1\u9ed1\u540d\u5355\uff1a$2 %denied%
|
||||
plot_info_flags: $1\u6807\u5fd7\uff1a$2 %flags%
|
||||
plot_info_biome: $1\u751f\u7269\u7fa4\u7cfb\uff1a$2 %biome%
|
||||
plot_info_rating: $1\u8bc4\u7ea7\uff1a$2 %rating%
|
||||
plot_info_owner: $1\u5730\u76ae\u4e3b\u4eba\uff1a$2 %owner%
|
||||
plot_info_id: $1\u5730\u76aeID\uff1a$2 %id%
|
||||
plot_info_alias: $1\u5730\u76ae\u522b\u79f0\uff1a$2 %alias%
|
||||
plot_info_size: $1\u5730\u76ae\u5927\u5c0f\uff1a$2 %size%
|
||||
plot_info_seen: $1\u5730\u76ae\u53ef\u89c1\uff1a$2 %seen%
|
||||
plot_user_list: ' $1%user%$2,'
|
||||
plot_flag_list: $1%s0:%s1$2
|
||||
info_syntax_console: $2/plot info X;Y
|
||||
working:
|
||||
generating_component: $1\u4ece\u60a8\u7684\u8bbe\u7f6e\u4e2d\u5f00\u59cb\u7ec4\u6210\u90e8\u4ef6
|
||||
clearing_plot: $2\u6e05\u9664\u5730\u76ae\u5f02\u6b65\u5904\u7406\u3002
|
||||
clearing_done: $4\u6e05\u7406\u5b8c\u6210\uff01\u82b1\u8d39\u4e86 %s \u6beb\u79d2\u3002
|
||||
plot_not_claimed: $2\u5730\u76ae\u6ca1\u6709\u88ab\u9886\u53d6
|
||||
plot_is_claimed: $2\u8fd9\u4e2a\u5730\u76ae\u5df2\u7ecf\u88ab\u9886\u53d6
|
||||
claimed: $4\u4f60\u6210\u529f\u7684\u9886\u53d6\u4e86\u5730\u76ae
|
||||
deleting_done: $4Delete completed! Took %sms.
|
||||
list:
|
||||
comment_list_header_paged: $2(\u7b2c $1%cur$2 \u9875/\u5171 $1%max$2 \u9875) $1\u5217\u51fa\u4e86 %amount% \u6761\u8bc4\u8bba
|
||||
clickable: ' \uff08\u53ef\u70b9\u51fb\uff09'
|
||||
area_list_header_paged: $2(\u7b2c $1%cur$2 \u9875/\u5171 $1%max$2 \u9875) $1\u5217\u51fa\u4e86 %amount% \u7247\u533a\u57df
|
||||
plot_list_header_paged: $2(\u7b2c $1%cur$2 \u9875/\u5171 $1%max$2 \u9875) $1\u5217\u51fa\u4e86 %amount% \u5757\u5730\u76ae
|
||||
plot_list_header: $1\u5217\u51fa\u4e86 %word% \u5730\u76ae
|
||||
plot_list_item: $2>> $1%id$2:$1%world $2- $1%owner
|
||||
plot_list_item_ordered: $2[$1%in$2] >> $1%id$2:$1%world $2- $1%owner
|
||||
plot_list_footer: $2>> $1%word% \u603b\u8ba1\u6709\u5757 $2%num% $1\u9886\u53d6\u7684 %plot%.
|
||||
left:
|
||||
left_plot: $2\u4f60\u79bb\u5f00\u4e86\u4e00\u4e2a\u5730\u76ae
|
||||
chat:
|
||||
plot_chat_format: '$2[$1\u5730\u76ae\u804a\u5929$2][$1%plot_id%$2] $1%sender%$2: $1%msg%'
|
||||
plot_chat_forced: $2\u8fd9\u4e2a\u4e16\u754c\u5f3a\u5236\u6240\u6709\u4eba\u4f7f\u7528\u5730\u76ae\u804a\u5929
|
||||
plot_chat_on: $4\u5f00\u542f\u4e86\u5730\u76ae\u804a\u5929\u3002
|
||||
plot_chat_off: $4\u5173\u95ed\u4e86\u5730\u76ae\u804a\u5929\u3002
|
||||
deny:
|
||||
denied_removed: $4Y\u4f60\u6210\u529f\u7684\u4ece\u6b64\u5730\u76ae\u9ed1\u540d\u5355\u89e3\u9664\u4e86\u4e00\u4f4d\u73a9\u5bb6
|
||||
denied_added: $4\u4f60\u6210\u529f\u7684\u5c06\u8fd9\u4f4d\u73a9\u5bb6\u52a0\u5165\u6b64\u5730\u76ae\u7684\u9ed1\u540d\u5355\u4e2d
|
||||
denied_need_argument: $2\u7f3a\u5c11\u53c2\u6570\u3002\u8bf7\u4f7f\u7528$1/plot denied add <name> $2\u6216\u8005 $1/plot denied remove <name>
|
||||
was_not_denied: $2\u90a3\u4f4d\u73a9\u5bb6\u4e0d\u5728\u6b64\u5730\u76ae\u7684\u9ed1\u540d\u5355\u4e2d
|
||||
you_got_denied: $4\u4f60\u88ab\u6240\u5728\u7684\u5730\u76ae\u52a0\u5165\u4e86\u9ed1\u540d\u5355\uff0c\u6240\u4ee5\u4f60\u88ab\u4f20\u9001\u5230\u4e86\u51fa\u751f\u70b9\u3002
|
||||
kick:
|
||||
you_got_kicked: $4\u4f60\u88ab\u8e22\u51fa\u4e86\u5730\u76ae\uff01
|
||||
rain:
|
||||
need_on_off: $2\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u503c\u3002\u6b63\u786e\u7684\u503c\uff1a $1on$2, $1off
|
||||
setting_updated: $4\u4f60\u6210\u529f\u7684\u66f4\u65b0\u4e86\u8bbe\u7f6e\u3002
|
||||
flag:
|
||||
flag_key: $2\u5173\u952e\u8bcd\uff1a %s
|
||||
flag_type: $2\u7c7b\u578b\uff1a %s
|
||||
flag_desc: $2\u63cf\u8ff0\uff1a %s
|
||||
not_valid_flag: $2\u90a3\u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u6807\u5fd7
|
||||
not_valid_flag_suggested: $2\u90a3\u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684\u6807\u5fd7\u3002\u4f60\u60f3\u7528\uff1a $1%s \u5417\uff1f
|
||||
not_valid_value: $2\u5730\u76ae\u503c\u5fc5\u987b\u4e3a\u4ee3\u6570
|
||||
flag_not_in_plot: $2\u8fd9\u4e2a\u5730\u76ae\u76ee\u524d\u6ca1\u6709\u6807\u5fd7
|
||||
flag_not_removed: $2\u8fd9\u4e2a\u6807\u5fd7\u4e0d\u80fd\u88ab\u79fb\u9664
|
||||
flag_not_added: $2\u8fd9\u4e2a\u6807\u5fd7\u4e0d\u80fd\u88ab\u6dfb\u52a0
|
||||
flag_removed: $4\u6210\u529f\u7684\u79fb\u9664\u4e86\u6807\u5fd7
|
||||
flag_added: $4\u6210\u529f\u7684\u6dfb\u52a0\u4e86\u6807\u5fd7
|
||||
trusted:
|
||||
trusted_added: $4\u4f60\u6210\u529f\u7684\u4e3a\u5730\u76ae\u6dfb\u52a0\u4e86\u4e00\u4f4d\u4fe1\u4efb\u73a9\u5bb6
|
||||
trusted_removed: $4\u4f60\u6210\u529f\u7684\u4e3a\u5730\u76ae\u79fb\u9664\u4e86\u4e00\u4f4d\u4fe1\u4efb\u73a9\u5bb6
|
||||
was_not_added: $2\u90a3\u4f4d\u73a9\u5bb6\u5728\u8fd9\u4e2a\u5730\u76ae\u4e2d\u4e0d\u662f\u4fe1\u4efb\u73a9\u5bb6
|
||||
plot_removed_user: $1\u56e0\u4e3a\u5730\u76ae\u4e3b\u4eba\u7684\u957f\u671f\u4e0d\u5728\u7ebf\uff0c\u4f60\u6240\u4f5c\u4e3a\u4fe1\u4efb\u73a9\u5bb6\u7684\u5730\u76ae %s \u5df2\u88ab\u5220\u9664
|
||||
member:
|
||||
removed_players: $2Removed %s players from this plot.
|
||||
already_owner: $2\u73a9\u5bb6 %s0 \u5df2\u7ecf\u662f\u5730\u76ae\u4e3b\u4eba\u4e86
|
||||
already_added: $2\u73a9\u5bb6 %s0 \u5df2\u7ecf\u88ab\u6dfb\u52a0\u5230\u6b64\u7c7b\u4e86
|
||||
member_added: $4\u90a3\u4f4d\u73a9\u5bb6\u73b0\u5728\u5728\u5730\u76ae\u4e3b\u4eba\u5728\u7ebf\u65f6\u53ef\u4ee5\u7f16\u8f91\u5730\u76ae
|
||||
member_removed: $1\u4f60\u6210\u529f\u7684\u4e3a\u5730\u76ae\u79fb\u9664\u4e86\u4e00\u4f4d\u6210\u5458
|
||||
member_was_not_added: $2\u90a3\u4f4d\u73a9\u5bb6\u4e0d\u662f\u5730\u76ae\u7684\u4e00\u4f4d\u6210\u5458
|
||||
plot_max_members: $2\u4f60\u4e0d\u88ab\u5141\u8bb8\u518d\u4e3a\u5730\u76ae\u589e\u52a0\u6210\u5458\u4e86
|
||||
owner:
|
||||
set_owner: $4\u4f60\u6210\u529f\u7684\u8bbe\u7f6e\u4e86\u5730\u76ae\u4e3b\u4eba
|
||||
now_owner: $4\u4f60\u73b0\u5728\u662f\u5730\u76ae %s \u7684\u4e3b\u4eba\u4e86
|
||||
signs:
|
||||
owner_sign_line_1: $1\u5730\u76aeID\uff1a $1%id%
|
||||
owner_sign_line_2: '$1\u6240\u6709\u8005:'
|
||||
owner_sign_line_3: $2%plr%
|
||||
owner_sign_line_4: $3\u88ab\u9886\u53d6
|
||||
help:
|
||||
help_header: $3&m---------&r $1\u5730\u76ae\u7cfb\u7edf\u2461\u5e2e\u52a9\u6587\u4ef6 $3&m---------
|
||||
help_page_header: '$1\u7c7b\u578b: $2%category%$2,$1 \u9875\u9762\uff1a $2%current%$3/$2%max%$2'
|
||||
help_footer: $3&m---------&r $1\u5730\u76ae\u7cfb\u7edf\u2461\u5e2e\u52a9\u6587\u4ef6 $3&m---------
|
||||
help_info_item: $1/plots help %category% $3- $2%category_desc%
|
||||
help_item: $1%usage% [%alias%]&- $3- $2%desc%&-
|
||||
direction: $1\u5f53\u524d\u8def\u5f84\uff1a %dir%
|
||||
grants:
|
||||
granted_plots: $1\u7ed3\u679c\uff1a $1\u5269\u4f59 $2%s
|
||||
granted_plot: $1\u4f60\u5c06 %s0 \u5730\u76ae\u8d60\u4e88 $2%s1
|
||||
granted_plot_failed: $1\u8d60\u4e88\u5931\u8d25\u4e86\uff1a$2%s
|
||||
'-':
|
||||
custom_string: '-'
|
||||
near:
|
||||
plot_near: '$1Players: %s0'
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user