tweak: Show common trigger blocks for tag, then all if none match (#468)

This commit is contained in:
Sekwah 2024-12-09 03:31:43 +00:00 committed by GitHub
parent d8c8aa408a
commit a9ff2b5a69
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 28 additions and 31 deletions

View File

@ -16,12 +16,6 @@ public interface PlayerContainer extends EntityContainer, HasPermission {
void sendActionBar(String message);
/**
* @param blockPos
* @param material
*/
void sendFakeBlock(BlockLocation blockPos, String material);
void giveItem(String material, String itemName, String... itemDescription);
/**

View File

@ -11,7 +11,9 @@ public interface ServerContainer {
PlayerContainer getPlayer(UUID name);
List<String> getTriggerBlocks();
List<String> getAllTriggerBlocks();
List<String> getCommonTriggerBlocks();
PlayerContainer[] getPlayers();

View File

@ -37,7 +37,16 @@ public class TriggerBlockTag implements Tag.AutoComplete, Tag.Split {
@Override
public List<String> autoComplete(String argData) {
return serverContainer.getTriggerBlocks();
System.out.println("Auto complete");
System.out.println(argData);
var triggerBlocks = serverContainer.getCommonTriggerBlocks().stream().filter(block -> block.contains(argData)).toList();
if(triggerBlocks.isEmpty()) {
return serverContainer.getAllTriggerBlocks();
}
return triggerBlocks;
}
@Nullable

View File

@ -72,14 +72,6 @@ public class SpigotPlayerContainer
return this.player.hasPermission(permission);
}
/**
* @param blockPos
* @param material
*/
@Override
public void sendFakeBlock(BlockLocation blockPos, String material) {
}
@Override
public void giveItem(String material, String itemName,
String... itemDescription) {

View File

@ -19,11 +19,14 @@ public class SpigotServerContainer implements ServerContainer {
@Inject
private CoreListeners coreListeners;
private final Server server;
private final List<String> triggerBlockList =
Arrays.stream(Material.values())
.filter(this::isAdvancedPortalBlock)
.map(Enum::name)
.toList();
// Create an array of items
private final List<String> commonTriggerBlockList = Arrays.asList(
Material.WATER, Material.LAVA, Material.AIR, Material.NETHER_PORTAL, Material.END_GATEWAY, Material.END_PORTAL).stream().map(Enum::name).toList();
private final List<String> fullTriggerBlockList =
Arrays.stream(Material.values())
.map(Enum::name)
.toList();
public SpigotServerContainer(Server server) {
this.server = server;
@ -60,8 +63,13 @@ public class SpigotServerContainer implements ServerContainer {
}
@Override
public List<String> getTriggerBlocks() {
return this.triggerBlockList;
public List<String> getAllTriggerBlocks() {
return this.fullTriggerBlockList;
}
@Override
public List<String> getCommonTriggerBlocks() {
return this.commonTriggerBlockList;
}
@Override
@ -87,14 +95,6 @@ public class SpigotServerContainer implements ServerContainer {
new SpigotPlayerContainer(player), s, bytes));
}
// Check if it's a material compatible with making portals
private boolean isAdvancedPortalBlock(Material material) {
return switch (material) {
case WATER, LAVA, AIR, NETHER_PORTAL, END_GATEWAY, END_PORTAL -> true;
default -> false;
};
}
@Override
public void dispatchCommand(UUID uuid, String command, CommandTag.CommandLevel commandLevel) {
Player player = server.getPlayer(uuid);