mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2025-02-25 16:51:59 +01:00
Improved handling of gamemode default placeholders
This commit is contained in:
parent
5ff2bc1d6a
commit
01e1147c7f
@ -0,0 +1,16 @@
|
|||||||
|
package world.bentobox.bentobox.api.placeholders;
|
||||||
|
|
||||||
|
import world.bentobox.bentobox.api.addons.GameModeAddon;
|
||||||
|
import world.bentobox.bentobox.api.user.User;
|
||||||
|
import world.bentobox.bentobox.database.objects.Island;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @since 1.5.0
|
||||||
|
* @author Poslovitch
|
||||||
|
*/
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface GameModePlaceholderReplacer {
|
||||||
|
|
||||||
|
String onReplace(GameModeAddon addon, User user, Island island);
|
||||||
|
}
|
@ -2,6 +2,7 @@ package world.bentobox.bentobox.api.placeholders;
|
|||||||
|
|
||||||
import world.bentobox.bentobox.api.user.User;
|
import world.bentobox.bentobox.api.user.User;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
public interface PlaceholderReplacer {
|
public interface PlaceholderReplacer {
|
||||||
|
|
||||||
String onReplace(User user);
|
String onReplace(User user);
|
||||||
|
@ -1,22 +1,41 @@
|
|||||||
package world.bentobox.bentobox.lists;
|
package world.bentobox.bentobox.lists;
|
||||||
|
|
||||||
|
import world.bentobox.bentobox.api.placeholders.GameModePlaceholderReplacer;
|
||||||
|
import world.bentobox.bentobox.util.Util;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
public enum GameModePlaceholders {
|
public enum GameModePlaceholders {
|
||||||
|
|
||||||
WORLD_FRIENDLY_NAME("world-friendlyname"),
|
WORLD_FRIENDLY_NAME("world-friendlyname", (addon, user, island) -> addon.getWorldSettings().getFriendlyName()),
|
||||||
ISLAND_DISTANCE("island-distance"),
|
ISLAND_DISTANCE("island-distance", (addon, user, island) -> DateFormat.getInstance().format(Date.from(Instant.ofEpochMilli(island.getCreatedDate())))),
|
||||||
ISLAND_PROTECTION_RANGE("island-protection-range"),
|
ISLAND_PROTECTION_RANGE("island-protection-range", (addon, user, island) -> String.valueOf(addon.getWorldSettings().getIslandDistance())),
|
||||||
ISLAND_OWNER("island-owner"),
|
ISLAND_OWNER("island-owner", (addon, user, island) -> addon.getPlayers().getName(island.getOwner())),
|
||||||
ISLAND_CREATION_DATE("island-creation-date"),
|
ISLAND_CREATION_DATE("island-creation-date", (addon, user, island) -> String.valueOf(island.getProtectionRange())),
|
||||||
ISLAND_SPAWNPOINT("island-spawnpoint"),
|
ISLAND_SPAWNPOINT("island-spawnpoint", (addon, user, island) -> Util.xyz(island.getCenter().toVector())),
|
||||||
ISLAND_NAME("island-name");
|
ISLAND_NAME("island-name", (addon, user, island) -> island.getName() == null ? "" : island.getName());
|
||||||
|
|
||||||
private String placeholder;
|
private String placeholder;
|
||||||
|
/**
|
||||||
|
* @since 1.5.0
|
||||||
|
*/
|
||||||
|
private GameModePlaceholderReplacer replacer;
|
||||||
|
|
||||||
GameModePlaceholders(String placeholder) {
|
GameModePlaceholders(String placeholder, GameModePlaceholderReplacer replacer) {
|
||||||
this.placeholder = placeholder;
|
this.placeholder = placeholder;
|
||||||
|
this.replacer = replacer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPlaceholder() {
|
public String getPlaceholder() {
|
||||||
return placeholder;
|
return placeholder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @since 1.5.0
|
||||||
|
*/
|
||||||
|
public GameModePlaceholderReplacer getReplacer() {
|
||||||
|
return replacer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,20 +6,15 @@ import world.bentobox.bentobox.api.placeholders.PlaceholderReplacer;
|
|||||||
import world.bentobox.bentobox.api.user.User;
|
import world.bentobox.bentobox.api.user.User;
|
||||||
import world.bentobox.bentobox.database.objects.Island;
|
import world.bentobox.bentobox.database.objects.Island;
|
||||||
import world.bentobox.bentobox.lists.GameModePlaceholders;
|
import world.bentobox.bentobox.lists.GameModePlaceholders;
|
||||||
import world.bentobox.bentobox.util.Util;
|
|
||||||
|
|
||||||
import java.text.DateFormat;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.EnumMap;
|
import java.util.EnumMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* Registers default placeholders for all GameModes. Will not overwrite any that the gamemode addon itself implements.
|
* Registers default placeholders for all GameModes. Will not overwrite any that the gamemode addon itself implements.
|
||||||
* @author tastybento
|
* @author tastybento
|
||||||
*
|
* @since 1.4.0
|
||||||
*/
|
*/
|
||||||
public class GameModePlaceholderManager {
|
public class GameModePlaceholderManager {
|
||||||
|
|
||||||
@ -41,6 +36,11 @@ public class GameModePlaceholderManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers default placeholders for all GameModes. Will not overwrite any that the gamemode addon itself implements.
|
||||||
|
* @author tastybento
|
||||||
|
* @since 1.4.0
|
||||||
|
*/
|
||||||
class DefaultPlaceholder implements PlaceholderReplacer {
|
class DefaultPlaceholder implements PlaceholderReplacer {
|
||||||
private final GameModeAddon addon;
|
private final GameModeAddon addon;
|
||||||
private final GameModePlaceholders type;
|
private final GameModePlaceholders type;
|
||||||
@ -58,26 +58,12 @@ class DefaultPlaceholder implements PlaceholderReplacer {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
Island island = addon.getIslands().getIsland(addon.getOverWorld(), user);
|
Island island = addon.getIslands().getIsland(addon.getOverWorld(), user);
|
||||||
switch (type) {
|
if (island == null) {
|
||||||
case WORLD_FRIENDLY_NAME:
|
|
||||||
return addon.getWorldSettings().getFriendlyName();
|
|
||||||
case ISLAND_CREATION_DATE:
|
|
||||||
return island == null ? "" : DateFormat.getInstance().format(Date.from(Instant.ofEpochMilli(island.getCreatedDate())));
|
|
||||||
case ISLAND_DISTANCE:
|
|
||||||
return String.valueOf(addon.getWorldSettings().getIslandDistance());
|
|
||||||
case ISLAND_NAME:
|
|
||||||
return island == null ? "" : (island.getName() == null ? "" : island.getName());
|
|
||||||
case ISLAND_OWNER:
|
|
||||||
return island == null ? "" : addon.getPlayers().getName(island.getOwner());
|
|
||||||
case ISLAND_PROTECTION_RANGE:
|
|
||||||
return island == null ? "" : String.valueOf(island.getProtectionRange());
|
|
||||||
case ISLAND_SPAWNPOINT:
|
|
||||||
return island == null ? "" : Util.xyz(island.getCenter().toVector());
|
|
||||||
default:
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
return type.getReplacer().onReplace(addon, user, island);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user