Skip to content

Commit ba31f5c

Browse files
committed
feat: port changes from SBW 0.2.35
1 parent aad855d commit ba31f5c

File tree

14 files changed

+184
-57
lines changed

14 files changed

+184
-57
lines changed

api/src/main/java/org/screamingsandals/bedwars/api/game/ItemSpawner.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ public interface ItemSpawner extends Upgrade {
3333
/**
3434
* @return
3535
*/
36-
ItemSpawnerType getItemSpawnerType();
36+
ItemSpawnerTypeHolder getItemSpawnerType();
3737

38-
void setItemSpawnerType(ItemSpawnerType spawnerType);
38+
void setItemSpawnerType(ItemSpawnerTypeHolder spawnerType);
3939

4040
/**
4141
* @return

api/src/main/java/org/screamingsandals/bedwars/api/game/ItemSpawnerType.java

+5
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,9 @@ public interface ItemSpawnerType {
7979
* @return
8080
*/
8181
ItemStackHolder getItem(int amount);
82+
83+
/**
84+
* @since 0.3.0
85+
*/
86+
ItemSpawnerTypeHolder toHolder();
8287
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.screamingsandals.bedwars.api.game;
2+
3+
import org.jetbrains.annotations.NotNull;
4+
import org.jetbrains.annotations.Nullable;
5+
import org.screamingsandals.bedwars.api.variants.Variant;
6+
7+
/**
8+
* @since 0.3.0
9+
*/
10+
public interface ItemSpawnerTypeHolder {
11+
/**
12+
* @since 0.3.0
13+
*/
14+
@NotNull String configKey();
15+
16+
/**
17+
* @since 0.3.0
18+
*/
19+
@Nullable ItemSpawnerType toSpawnerType(@NotNull LocalGame variant);
20+
21+
/**
22+
* @since 0.3.0
23+
*/
24+
@Nullable ItemSpawnerType toSpawnerType(@Nullable Variant variant);
25+
26+
/**
27+
* @since 0.3.0
28+
*/
29+
default boolean isValid(@NotNull LocalGame game) {
30+
return toSpawnerType(game) != null;
31+
}
32+
33+
/**
34+
* @since 0.3.0
35+
*/
36+
default boolean isValid(@Nullable Variant variant) {
37+
return toSpawnerType(variant) != null;
38+
}
39+
}

api/src/main/java/org/screamingsandals/bedwars/api/upgrades/UpgradeStorage.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,8 @@ public List<Upgrade> findItemSpawnerUpgrades(LocalGame game, Team team, ItemSpaw
218218
}
219219

220220
final var name = itemSpawner.getTeam();
221-
if (name != null && team.getName().equals(name.getName()) && itemSpawnerType.getName().equals(itemSpawner.getItemSpawnerType().getName())) {
221+
final var type = itemSpawner.getItemSpawnerType().toSpawnerType(game);
222+
if (name != null && type != null && team.getName().equals(name.getName()) && itemSpawnerType.getName().equals(type.getName())) {
222223
upgrades.add(upgrade);
223224
}
224225
}

api/src/main/java/org/screamingsandals/bedwars/api/variants/Variant.java

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
package org.screamingsandals.bedwars.api.variants;
2121

22+
import org.jetbrains.annotations.ApiStatus;
2223
import org.jetbrains.annotations.NotNull;
2324
import org.jetbrains.annotations.Nullable;
2425
import org.screamingsandals.bedwars.api.config.GameConfigurationContainer;
@@ -32,6 +33,7 @@
3233
* @author ScreamingSandals
3334
* @since 0.3.0
3435
*/
36+
@ApiStatus.NonExtendable
3537
public interface Variant {
3638

3739
/**

plugin/common/src/main/java/org/screamingsandals/bedwars/commands/DumpCommand.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ protected void construct(Command.Builder<CommandSender> commandSenderWrapperBuil
170170
"pos2", locationToMap(game.getPos2()),
171171
"weather", game.getArenaWeather() != null ? game.getArenaWeather().location().asString() : null,
172172
"spawners", game.getSpawners().stream().map(itemSpawner -> nullValuesAllowingMap(
173-
"type", itemSpawner.getItemSpawnerType().getConfigKey(),
173+
"type", itemSpawner.getItemSpawnerType().configKey(),
174174
"location", locationToMap(itemSpawner.getLocation()),
175175
"maxSpawnedResources", itemSpawner.getMaxSpawnedResources(),
176176
"startLevel", itemSpawner.getBaseAmountPerSpawn(),

plugin/common/src/main/java/org/screamingsandals/bedwars/commands/admin/InfoCommand.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.screamingsandals.bedwars.lang.LangKeys;
2828
import org.screamingsandals.lib.lang.Message;
2929
import org.screamingsandals.lib.sender.CommandSender;
30+
import org.screamingsandals.lib.spectator.Color;
3031
import org.screamingsandals.lib.spectator.Component;
3132
import org.screamingsandals.lib.spectator.event.ClickEvent;
3233
import org.screamingsandals.lib.utils.annotations.Service;
@@ -240,9 +241,11 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
240241
spawnerTeam = Message.of(LangKeys.ADMIN_INFO_SPAWNER_NO_TEAM).asComponent(sender);
241242
}
242243

244+
var spawnerType = spawner.getItemSpawnerType().toSpawnerType(game);
245+
243246
Message
244247
.of(LangKeys.ADMIN_INFO_SPAWNER)
245-
.placeholder("resource", spawner.getItemSpawnerType().getItemName())
248+
.placeholder("resource", spawnerType == null ? Component.text(spawner.getItemSpawnerType().configKey(), Color.RED) : spawnerType.getItemName())
246249
.placeholder("x", loc_spawner.getBlockX())
247250
.placeholder("y", loc_spawner.getBlockY())
248251
.placeholder("z", loc_spawner.getBlockZ())

plugin/common/src/main/java/org/screamingsandals/bedwars/commands/admin/SpawnerCommand.java

+24-21
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.screamingsandals.lib.lang.Message;
3535
import org.screamingsandals.lib.player.Player;
3636
import org.screamingsandals.lib.sender.CommandSender;
37+
import org.screamingsandals.lib.spectator.Color;
3738
import org.screamingsandals.lib.spectator.Component;
3839
import org.screamingsandals.lib.spectator.event.ClickEvent;
3940
import org.screamingsandals.lib.tasker.TaskerTime;
@@ -80,7 +81,7 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
8081
loc = loc.withYaw(0).withPitch(0);
8182
var spawnerType = game.getGameVariant().getItemSpawnerType(type);
8283
if (spawnerType != null) {
83-
game.getSpawners().add(new ItemSpawnerImpl(loc, spawnerType));
84+
game.getSpawners().add(new ItemSpawnerImpl(loc, spawnerType.toHolder()));
8485
sender.sendMessage(
8586
Message
8687
.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_ADDED)
@@ -145,7 +146,7 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
145146

146147
itemSpawner.setMaxSpawnedResources(amount);
147148
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_MAX_SPAWNED_RESOURCES_SET)
148-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
149+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName())
149150
.placeholder("amount", amount)
150151
.defaultPrefix()
151152
);
@@ -162,7 +163,7 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
162163

163164
itemSpawner.setRotationMode(rotationMode);
164165
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_ROTATION_MODE_SET)
165-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
166+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName())
166167
.placeholder("rotation", rotationMode.name())
167168
.defaultPrefix()
168169
);
@@ -183,9 +184,9 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
183184
var spawnerType = game.getGameVariant().getItemSpawnerType(type);
184185
if (spawnerType != null) {
185186
var old = itemSpawner.getItemSpawnerType();
186-
itemSpawner.setItemSpawnerType(spawnerType);
187+
itemSpawner.setItemSpawnerType(spawnerType.toHolder());
187188
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_TYPE_CHANGED)
188-
.placeholder("type", old.getItemName())
189+
.placeholder("type", old.toSpawnerType(game).getItemName())
189190
.placeholder("new_type", spawnerType.getItemName())
190191
.defaultPrefix()
191192
);
@@ -208,7 +209,7 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
208209
itemSpawner.setCustomName(customName);
209210
}
210211
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_CUSTOM_NAME_SET)
211-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
212+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName())
212213
.placeholder("name", customName)
213214
.defaultPrefix()
214215
);
@@ -225,7 +226,7 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
225226

226227
itemSpawner.setHologramType(type);
227228
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_HOLOGRAM_TYPE_SET)
228-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
229+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName())
229230
.placeholder("type", type.name())
230231
.defaultPrefix()
231232
);
@@ -255,12 +256,12 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
255256
itemSpawner.setTeam(team);
256257
if (team == null) {
257258
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_TEAM_UNLINKED)
258-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
259+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName())
259260
.defaultPrefix()
260261
);
261262
} else {
262263
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_TEAM_LINKED)
263-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
264+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName())
264265
.placeholder("team", team.getName())
265266
.defaultPrefix()
266267
);
@@ -278,7 +279,7 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
278279

279280
itemSpawner.setBaseAmountPerSpawn(amount);
280281
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_BASE_AMOUNT_SET)
281-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
282+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName())
282283
.placeholder("amount", amount)
283284
.defaultPrefix()
284285
);
@@ -296,10 +297,10 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
296297
itemSpawner.setFloatingBlockEnabled(enabled);
297298
if (enabled) {
298299
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_FLOATING_ENABLED)
299-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName()).defaultPrefix());
300+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName()).defaultPrefix());
300301
} else {
301302
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_FLOATING_DISABLED)
302-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName()).defaultPrefix());
303+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName()).defaultPrefix());
303304
}
304305
}))
305306
);
@@ -316,10 +317,10 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
316317
itemSpawner.setHologramEnabled(enabled);
317318
if (enabled) {
318319
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_HOLOGRAM_ENABLED)
319-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName()).defaultPrefix());
320+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName()).defaultPrefix());
320321
} else {
321322
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_HOLOGRAM_DISABLED)
322-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName()).defaultPrefix());
323+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName()).defaultPrefix());
323324
}
324325
}))
325326
);
@@ -336,7 +337,7 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
336337

337338
itemSpawner.setInitialInterval(Pair.of(value, unit));
338339
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_INITIAL_INTERVAL_SET)
339-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
340+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName())
340341
.placeholder("interval", value)
341342
.placeholder("unit", Message.of(LangKeys.toUnitLangKey(unit, value != 1)))
342343
.defaultPrefix()
@@ -352,7 +353,7 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
352353
.handler(commandContext -> changeSettingCommand(commandContext, (sender, game, itemSpawner) -> {
353354
itemSpawner.setInitialInterval(null);
354355
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_INITIAL_INTERVAL_RESET)
355-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
356+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName())
356357
.defaultPrefix());
357358
}))
358359
);
@@ -367,7 +368,7 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
367368

368369
itemSpawner.setCustomSpread(spread);
369370
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_SPREAD_SET)
370-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
371+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName())
371372
.placeholder("spread", spread)
372373
.defaultPrefix());
373374
}))
@@ -381,7 +382,7 @@ public void construct(CommandManager<CommandSender> manager, Command.Builder<Com
381382
.handler(commandContext -> changeSettingCommand(commandContext, (sender, game, itemSpawner) -> {
382383
itemSpawner.setCustomSpread(null);
383384
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_SUCCESS_SPAWNER_SPREAD_RESET)
384-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
385+
.placeholder("type", itemSpawner.getItemSpawnerType().toSpawnerType(game).getItemName())
385386
.defaultPrefix());
386387
}))
387388
);
@@ -424,7 +425,7 @@ private void changeSettingCommand(CommandContext<CommandSender> commandContext,
424425
.filter(spawner -> spawner.getLocation().getBlock().equals(loc.getBlock()))
425426
.collect(Collectors.toList());
426427

427-
if (spawners.size() == 0) {
428+
if (spawners.isEmpty()) {
428429
sender.sendMessage(Message.of(LangKeys.ADMIN_ARENA_EDIT_ERRORS_NO_SPAWNER).defaultPrefix());
429430
} else if (spawners.size() == 1) {
430431
var itemSpawner = spawners.get(0);
@@ -441,8 +442,9 @@ private void changeSettingCommand(CommandContext<CommandSender> commandContext,
441442
var rawInput = new ArrayList<>(commandContext.getRawInput());
442443
rawInput.remove(rawInput.size() - 1);
443444
var command = String.join(" ", rawInput) + " " + number.getAndIncrement();
445+
var type = itemSpawner.getItemSpawnerType().toSpawnerType(game);
444446
Message.of(LangKeys.ADMIN_ARENA_EDIT_ERRORS_MULTIPLE_SPAWNERS_LINE)
445-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
447+
.placeholder("type", type == null ? Component.text(itemSpawner.getItemSpawnerType().configKey(), Color.RED) : type.getItemName())
446448
.placeholder("command", Component.text().content(command).clickEvent(ClickEvent.runCommand(command)))
447449
.send(sender);
448450
});
@@ -452,8 +454,9 @@ private void changeSettingCommand(CommandContext<CommandSender> commandContext,
452454
AtomicInteger number = new AtomicInteger(1);
453455
spawners.forEach(itemSpawner -> {
454456
var command = commandContext.getRawInputJoined() + " " + number.getAndIncrement();
457+
var type = itemSpawner.getItemSpawnerType().toSpawnerType(game);
455458
Message.of(LangKeys.ADMIN_ARENA_EDIT_ERRORS_MULTIPLE_SPAWNERS_LINE)
456-
.placeholder("type", itemSpawner.getItemSpawnerType().getItemName())
459+
.placeholder("type", type == null ? Component.text(itemSpawner.getItemSpawnerType().configKey(), Color.RED) : type.getItemName())
457460
.placeholder("command", Component.text().content(command).clickEvent(ClickEvent.runCommand(command)))
458461
.send(sender);
459462
});

0 commit comments

Comments
 (0)