some fixes
This commit is contained in:
13
.idea/workspace.xml
generated
13
.idea/workspace.xml
generated
@@ -5,21 +5,14 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="46146984-f46a-4efa-a29f-c0632c66dbea" name="Changes" comment="">
|
<list default="true" id="46146984-f46a-4efa-a29f-c0632c66dbea" name="Changes" comment="">
|
||||||
<change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/deploy.sh" beforeDir="false" afterPath="$PROJECT_DIR$/deploy.sh" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/BlockAndSeek.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/BlockAndSeek.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/items/FreezeItem.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/items/FreezeItem.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/BlocksGenerator.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/BlocksGenerator.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/Config.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/Config.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/CommandManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/CommandManager.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/CommandManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/CommandManager.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/MapsManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/MapsManager.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/PropManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/PropManager.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/TranslationManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/TranslationManager.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/TranslationManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/managers/TranslationManager.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/menus/GamesMenu.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/menus/GamesMenu.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/menus/MapsMenu.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/menus/MapsMenu.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/BlockAndSeekGame.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/BlockAndSeekGame.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/BlockAndSeekGame.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/BlockAndSeekGame.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/LazyLocation.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/LazyLocation.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/LazyLocation.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/LazyLocation.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/PropBlock.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/PropBlock.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/Rarity.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/Rarity.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/TranslationKey.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/TranslationKey.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/TranslationKey.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/hdvtdev/blockandseek/objects/TranslationKey.java" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ dependencies {
|
|||||||
implementation "eu.okaeri:okaeri-configs-serdes-commons:$okaeriConfigsVersion"
|
implementation "eu.okaeri:okaeri-configs-serdes-commons:$okaeriConfigsVersion"
|
||||||
|
|
||||||
implementation "org.incendo:cloud-paper:2.0.0-beta.13"
|
implementation "org.incendo:cloud-paper:2.0.0-beta.13"
|
||||||
|
implementation "org.incendo:cloud-annotations:2.0.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class FreezeItem extends BlockAndSeekItem {
|
|||||||
@Override
|
@Override
|
||||||
protected void onInteract(@NotNull PlayerInteractEvent event) {
|
protected void onInteract(@NotNull PlayerInteractEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
player.sendActionBar(Component.text(PropManager.freezeOrUnfreeze(player).toString()));
|
player.sendMessage(TranslationKey.valueOf(PropManager.freezeOrUnfreeze(player).name()).translate(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -5,11 +5,13 @@ import hdvtdev.blockandseek.BlocksGenerator;
|
|||||||
import hdvtdev.blockandseek.Config;
|
import hdvtdev.blockandseek.Config;
|
||||||
import hdvtdev.blockandseek.GlowUtil;
|
import hdvtdev.blockandseek.GlowUtil;
|
||||||
import hdvtdev.blockandseek.objects.BlockAndSeekGame;
|
import hdvtdev.blockandseek.objects.BlockAndSeekGame;
|
||||||
|
import hdvtdev.blockandseek.objects.BlockAndSeekMap;
|
||||||
import hdvtdev.blockandseek.objects.Items;
|
import hdvtdev.blockandseek.objects.Items;
|
||||||
import hdvtdev.blockandseek.objects.TranslationKey;
|
import hdvtdev.blockandseek.objects.TranslationKey;
|
||||||
import me.libraryaddict.disguise.DisguiseAPI;
|
import me.libraryaddict.disguise.DisguiseAPI;
|
||||||
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
|
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
|
||||||
import me.libraryaddict.disguise.disguisetypes.MiscDisguise;
|
import me.libraryaddict.disguise.disguisetypes.MiscDisguise;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@@ -21,7 +23,11 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.util.RayTraceResult;
|
import org.bukkit.util.RayTraceResult;
|
||||||
import org.incendo.cloud.Command;
|
|
||||||
|
import org.incendo.cloud.annotations.AnnotationParser;
|
||||||
|
import org.incendo.cloud.annotations.Argument;
|
||||||
|
import org.incendo.cloud.annotations.Command;
|
||||||
|
import org.incendo.cloud.annotations.Permission;
|
||||||
import org.incendo.cloud.bukkit.CloudBukkitCapabilities;
|
import org.incendo.cloud.bukkit.CloudBukkitCapabilities;
|
||||||
import org.incendo.cloud.bukkit.parser.location.LocationParser;
|
import org.incendo.cloud.bukkit.parser.location.LocationParser;
|
||||||
import org.incendo.cloud.execution.ExecutionCoordinator;
|
import org.incendo.cloud.execution.ExecutionCoordinator;
|
||||||
@@ -33,10 +39,15 @@ import java.util.List;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import static java.util.Map.entry;
|
||||||
|
|
||||||
public final class CommandManager {
|
public final class CommandManager {
|
||||||
|
|
||||||
private static final LegacyPaperCommandManager<CommandSender> commandManager;
|
private static final LegacyPaperCommandManager<CommandSender> commandManager;
|
||||||
private static final String perm = "blockandseek.manage";
|
private static final AnnotationParser<CommandSender> annotationParser;
|
||||||
|
private static final String PERM = "blockandseek.manage";
|
||||||
|
private static final String CMD = "blockandseek|bs";
|
||||||
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
commandManager = LegacyPaperCommandManager.createNative(
|
commandManager = LegacyPaperCommandManager.createNative(
|
||||||
@@ -54,62 +65,54 @@ public final class CommandManager {
|
|||||||
} catch (IllegalStateException ignored) {
|
} catch (IllegalStateException ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
annotationParser = new AnnotationParser<>(
|
||||||
|
commandManager,
|
||||||
|
CommandSender.class
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Command(CMD + " create map <name>")
|
||||||
|
@Permission(PERM)
|
||||||
|
public void createMap(CommandSender sender, @Argument("name") String mapName) {
|
||||||
|
if (MapsManager.hasMap(mapName)) {
|
||||||
|
sender.sendMessage(TranslationKey.MAP_EXIST.translate(sender, entry("%map%", mapName)));
|
||||||
|
} else {
|
||||||
|
MapsManager.addMap(mapName);
|
||||||
|
sender.sendMessage(TranslationKey.MAP_CREATED.translate(sender, entry("%map%", mapName)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ToReload {
|
||||||
|
CONFIG,
|
||||||
|
MAPS,
|
||||||
|
LANGUAGES
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(CMD + " reload [toReload]")
|
||||||
|
public void reload(CommandSender commandSender, @Argument("toReload") ToReload toReload) {
|
||||||
|
Component msg = switch (toReload) {
|
||||||
|
case CONFIG -> null;
|
||||||
|
case MAPS -> null;
|
||||||
|
case LANGUAGES -> null;
|
||||||
|
case null -> null;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Deprecated(forRemoval = true)
|
||||||
public static void registerCommands() {
|
public static void registerCommands() {
|
||||||
|
|
||||||
var root = commandManager.commandBuilder("blockandseek", "bs");
|
var root = commandManager.commandBuilder("blockandseek", "bs");
|
||||||
if (Config.debugEnabled()) testCommands(root);
|
if (Config.debugEnabled()) testCommands(root);
|
||||||
|
|
||||||
|
|
||||||
commandManager.command(
|
|
||||||
root
|
|
||||||
.literal("generateBlocks")
|
|
||||||
.required("worldName", StringParser.stringParser(), MapsManager.mapSuggestions)
|
|
||||||
.handler(ctx -> {
|
|
||||||
|
|
||||||
BlocksGenerator.applyBlocks(ctx.get("worldName"));
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
commandManager.command(
|
|
||||||
root
|
|
||||||
.literal("newMap")
|
|
||||||
.required("worldName", StringParser.stringParser(), MapsManager.worldSuggestions)
|
|
||||||
.handler(ctx -> {
|
|
||||||
MapsManager.addMap(ctx.get("worldName"));
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
commandManager.command(
|
|
||||||
root
|
|
||||||
.literal("newwwwGame")
|
|
||||||
.required("worldName", StringParser.stringParser(), MapsManager.mapSuggestions)
|
|
||||||
.handler(ctx -> {
|
|
||||||
GamesManager.createGame(ctx.get("worldName"));
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var partyBase = root.literal("party");
|
|
||||||
var reloadBase = root.literal("reload").permission(perm); //all, config, langs, maps
|
|
||||||
var createBase = root.literal("create"); //party, map, game
|
|
||||||
var mapBase = root.literal("map").permission(perm); //name <set action> <val>
|
|
||||||
var editMapBase = mapBase.literal("set");
|
|
||||||
|
|
||||||
commandManager.command(
|
|
||||||
createBase
|
|
||||||
.literal("map")
|
|
||||||
.required("worldName", StringParser.stringParser(), MapsManager.worldSuggestions)
|
|
||||||
.handler(ctx -> {
|
|
||||||
|
|
||||||
MapsManager.addMap(ctx.get("worldName"));
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
public class PropManager {
|
public class PropManager {
|
||||||
|
|
||||||
@@ -89,7 +88,7 @@ public class PropManager {
|
|||||||
Location blockLocation = block.getLocation();
|
Location blockLocation = block.getLocation();
|
||||||
|
|
||||||
if (props.containsKey(blockLocation)) {
|
if (props.containsKey(blockLocation)) {
|
||||||
return PropState.FAILED;
|
return PropState.FREEZE_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
Location centerLocation = blockLocation.toCenterLocation();
|
Location centerLocation = blockLocation.toCenterLocation();
|
||||||
@@ -125,7 +124,7 @@ public class PropManager {
|
|||||||
return PropState.FROZEN;
|
return PropState.FROZEN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return PropState.FAILED;
|
return PropState.FREEZE_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final BlockFace[] rotationOrder = {
|
private static final BlockFace[] rotationOrder = {
|
||||||
@@ -185,7 +184,7 @@ public class PropManager {
|
|||||||
|
|
||||||
|
|
||||||
public enum PropState {
|
public enum PropState {
|
||||||
FROZEN, UNFROZEN, FAILED
|
FROZEN, UNFROZEN, FREEZE_FAILED
|
||||||
}
|
}
|
||||||
|
|
||||||
private record PropData(ArmorStand armorStand, BlockData blockData, Location propLocation) {
|
private record PropData(ArmorStand armorStand, BlockData blockData, Location propLocation) {
|
||||||
|
|||||||
@@ -25,12 +25,12 @@ public final class TranslationManager {
|
|||||||
private TranslationManager() {
|
private TranslationManager() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String defaultLanguage = "en_US";
|
public static final String defaultLanguage = "en_US";
|
||||||
public static final MiniMessage mm = MiniMessage.miniMessage();
|
public static final MiniMessage mm = MiniMessage.miniMessage();
|
||||||
public static final PlainTextComponentSerializer plaintText = PlainTextComponentSerializer.plainText();
|
public static final PlainTextComponentSerializer plaintText = PlainTextComponentSerializer.plainText();
|
||||||
|
|
||||||
public static final Component prefix = mm.deserialize("<gradient:#FFAA00:#FFD700><bold>BlockAndSeek</bold></gradient> <dark_gray>»</dark_gray>");
|
private static final Component prefix = mm.deserialize("<gradient:#FFAA00:#FFD700><bold>BlockAndSeek</bold></gradient> ");
|
||||||
public static final Component bracedPrefix = mm.deserialize("<gradient:#FFAA00:#FFD700><bold>[BlockAndSeek]</bold></gradient>");
|
private static final Component bracedPrefix = mm.deserialize("<gradient:#FFAA00:#FFD700><bold>[BlockAndSeek]</bold></gradient> ");
|
||||||
|
|
||||||
private static final Map<String, EnumMap<TranslationKey, String>> translations = new HashMap<>();
|
private static final Map<String, EnumMap<TranslationKey, String>> translations = new HashMap<>();
|
||||||
|
|
||||||
@@ -39,6 +39,18 @@ public final class TranslationManager {
|
|||||||
return get(player.locale().toString(), key, placeholders);
|
return get(player.locale().toString(), key, placeholders);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
|
public static Component get(Player player, TranslationKey key, boolean useBracedPrefix, @NotNull Map.Entry<String, String>... placeholders) {
|
||||||
|
Component pref = useBracedPrefix ? bracedPrefix : prefix;
|
||||||
|
return pref.append(get(player.locale().toString(), key, placeholders));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
|
public static Component get(TranslationKey key, boolean useBracedPrefix, @NotNull Map.Entry<String, String>... placeholders) {
|
||||||
|
Component pref = useBracedPrefix ? bracedPrefix : prefix;
|
||||||
|
return pref.append(get(defaultLanguage, key, placeholders));
|
||||||
|
}
|
||||||
|
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public static Component get(TranslationKey key, @NotNull Map.Entry<String, String>... placeholders) {
|
public static Component get(TranslationKey key, @NotNull Map.Entry<String, String>... placeholders) {
|
||||||
return get(defaultLanguage, key, placeholders);
|
return get(defaultLanguage, key, placeholders);
|
||||||
@@ -102,11 +114,10 @@ public final class TranslationManager {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Обработка экранирования \%
|
|
||||||
if (start > cursor && text.charAt(start - 1) == '\\') {
|
if (start > cursor && text.charAt(start - 1) == '\\') {
|
||||||
sb.append(text, cursor, start - 1); // Добавляем всё до слэша
|
sb.append(text, cursor, start - 1);
|
||||||
sb.append('%'); // Добавляем сам процент
|
sb.append('%');
|
||||||
cursor = start + 1; // Сдвигаем курсор за процент
|
cursor = start + 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -109,26 +109,13 @@ public class BlockAndSeekGame {
|
|||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Проходим по всем игрокам на сервере
|
|
||||||
for (UUID uuid : stateManager.getPlayersInState(PlayerType.PROP)) {
|
for (UUID uuid : stateManager.getPlayersInState(PlayerType.PROP)) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 2. Проверяем, находится ли игрок в воде
|
|
||||||
// Метод .isInWater() доступен в новых версиях (1.13+).
|
|
||||||
// Для старых версий используйте проверку блока (см. ниже).
|
|
||||||
|
|
||||||
Player player = Bukkit.getPlayer(uuid);
|
Player player = Bukkit.getPlayer(uuid);
|
||||||
if (player == null) continue;
|
if (player == null) continue;
|
||||||
|
|
||||||
if (player.isInWater()) {
|
if (player.isInWater()) {
|
||||||
|
|
||||||
// 3. Наносим урон
|
|
||||||
// 1.0 = половина сердца. 2.0 = полное сердце.
|
|
||||||
player.damage(0.5);
|
player.damage(0.5);
|
||||||
|
|
||||||
// Опционально: можно проиграть звук или эффект
|
|
||||||
player.playSound(player.getLocation(), Sound.BLOCK_SCULK_SHRIEKER_SHRIEK, 1f, 1f);
|
player.playSound(player.getLocation(), Sound.BLOCK_SCULK_SHRIEKER_SHRIEK, 1f, 1f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -245,6 +232,7 @@ public class BlockAndSeekGame {
|
|||||||
for (UUID uuid : stateManager.getPlayersInState(PlayerType.PROP)) {
|
for (UUID uuid : stateManager.getPlayersInState(PlayerType.PROP)) {
|
||||||
Player player = Bukkit.getPlayer(uuid);
|
Player player = Bukkit.getPlayer(uuid);
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
|
PropManager.forceUnfreeze(uuid);
|
||||||
new RouletteCreator(player, map.getBlocks());
|
new RouletteCreator(player, map.getBlocks());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -267,6 +255,7 @@ public class BlockAndSeekGame {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
sendToAll(TranslationKey.GAME_STARTED);
|
||||||
Plugin instance = BlockAndSeek.getInstance();
|
Plugin instance = BlockAndSeek.getInstance();
|
||||||
instance.getServer().getPluginManager().registerEvents(this, instance);
|
instance.getServer().getPluginManager().registerEvents(this, instance);
|
||||||
selectSeekers(1 + (stateManager.playerCount() / 7));
|
selectSeekers(1 + (stateManager.playerCount() / 7));
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ import lombok.Setter;
|
|||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
@Setter
|
@Setter
|
||||||
public class LazyLocation extends OkaeriConfig {
|
public class LazyLocation extends OkaeriConfig {
|
||||||
|
|
||||||
@@ -58,8 +60,9 @@ public class LazyLocation extends OkaeriConfig {
|
|||||||
if (loc.getWorld() != null) {
|
if (loc.getWorld() != null) {
|
||||||
ll.worldName = loc.getWorld().getName();
|
ll.worldName = loc.getWorld().getName();
|
||||||
} else {
|
} else {
|
||||||
BlockAndSeek.getPluginLogger().severe("World in location is null! Using default placeholder BlockAndSeekWorld!");
|
String id = "BlockAndSeekWorld" + ThreadLocalRandom.current().nextInt(0, Integer.MAX_VALUE);
|
||||||
ll.worldName = "BlockAndSeekWorld";
|
BlockAndSeek.getPluginLogger().severe("World in location is null! Using default placeholder " + id);
|
||||||
|
ll.worldName = id;
|
||||||
}
|
}
|
||||||
ll.x = loc.getX();
|
ll.x = loc.getX();
|
||||||
ll.y = loc.getY();
|
ll.y = loc.getY();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package hdvtdev.blockandseek.objects;
|
|||||||
|
|
||||||
import hdvtdev.blockandseek.managers.TranslationManager;
|
import hdvtdev.blockandseek.managers.TranslationManager;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -58,6 +59,9 @@ public enum TranslationKey {
|
|||||||
SUPER_ITEM_SPAWNED,
|
SUPER_ITEM_SPAWNED,
|
||||||
BLOCK_SWAP,
|
BLOCK_SWAP,
|
||||||
BLOCK_SWAPPING,
|
BLOCK_SWAPPING,
|
||||||
|
FROZEN,
|
||||||
|
UNFROZEN,
|
||||||
|
FREEZE_FAILED,
|
||||||
|
|
||||||
// Items
|
// Items
|
||||||
FREEZE_ITEM,
|
FREEZE_ITEM,
|
||||||
@@ -67,7 +71,8 @@ public enum TranslationKey {
|
|||||||
GAME_START_ITEM,
|
GAME_START_ITEM,
|
||||||
DASH_ITEM,
|
DASH_ITEM,
|
||||||
MORPH_ITEM,
|
MORPH_ITEM,
|
||||||
PISTOL, GRENADE,
|
PISTOL,
|
||||||
|
GRENADE,
|
||||||
DECOY,
|
DECOY,
|
||||||
DEATH_BELT,
|
DEATH_BELT,
|
||||||
ANTI_GRAVITY;
|
ANTI_GRAVITY;
|
||||||
@@ -77,5 +82,10 @@ public enum TranslationKey {
|
|||||||
return TranslationManager.get(player, this, placeholders);
|
return TranslationManager.get(player, this, placeholders);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
|
public final Component translate(CommandSender sender, Map.Entry<String, String>... placeholders) {
|
||||||
|
return TranslationManager.get(sender instanceof Player player ? player.locale().toString() : TranslationManager.defaultLanguage, this, placeholders);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user