Skip to content

Commit

Permalink
work on tags menu, fix some import ordering
Browse files Browse the repository at this point in the history
  • Loading branch information
broccolai committed Oct 31, 2023
1 parent fae72de commit 934ab01
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 19 deletions.
14 changes: 7 additions & 7 deletions paper/src/main/java/broccolai/tags/paper/PaperTagsPlatform.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
package broccolai.tags.paper;

import broccolai.tags.api.service.MessageService;
import broccolai.tags.core.TagsPlugin;
import broccolai.tags.core.commands.PluginCommand;
import broccolai.tags.core.commands.arguments.TagArgument;
import broccolai.tags.core.commands.arguments.UserArgument;
import broccolai.tags.core.commands.context.CommandUser;
import broccolai.tags.core.platform.TagsPlatform;
import broccolai.tags.core.util.ArrayUtilities;
import broccolai.tags.paper.commands.PaperTagsCommand;
import broccolai.tags.paper.commands.context.PaperCommandUser;
import broccolai.tags.paper.commands.context.PaperConsoleCommandUser;
Expand All @@ -10,13 +17,6 @@
import broccolai.tags.paper.integrations.BasicIntegration;
import broccolai.tags.paper.integrations.PapiIntegration;
import broccolai.tags.paper.listeners.PlayerListener;
import broccolai.tags.core.TagsPlugin;
import broccolai.tags.core.commands.PluginCommand;
import broccolai.tags.core.commands.arguments.TagArgument;
import broccolai.tags.core.commands.arguments.UserArgument;
import broccolai.tags.core.commands.context.CommandUser;
import broccolai.tags.core.platform.TagsPlatform;
import broccolai.tags.core.util.ArrayUtilities;
import cloud.commandframework.CommandManager;
import cloud.commandframework.bukkit.CloudBukkitCapabilities;
import cloud.commandframework.execution.AsynchronousCommandExecutionCoordinator;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
import broccolai.tags.api.model.tag.TagDisplayInformation;
import broccolai.tags.api.model.user.TagsUser;
import broccolai.tags.api.service.UserService;
import broccolai.tags.paper.commands.context.PaperPlayerCommandUser;
import broccolai.tags.paper.menu.TagsMenuFactory;
import broccolai.tags.core.commands.PluginCommand;
import broccolai.tags.core.commands.arguments.modes.TagParserMode;
import broccolai.tags.core.commands.context.CommandUser;
import broccolai.tags.core.factory.CloudArgumentFactory;
import broccolai.tags.paper.commands.context.PaperPlayerCommandUser;
import broccolai.tags.paper.menu.TagsMenuFactory;
import cloud.commandframework.Command;
import cloud.commandframework.CommandManager;
import cloud.commandframework.context.CommandContext;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
import broccolai.tags.api.service.PermissionService;
import broccolai.tags.api.service.TaskService;
import broccolai.tags.api.service.UserService;
import broccolai.tags.core.platform.TagsPlatform;
import broccolai.tags.paper.PaperTagsPlatform;
import broccolai.tags.paper.service.PaperPermissionService;
import broccolai.tags.paper.service.PaperPipelineUserService;
import broccolai.tags.paper.service.PaperTaskService;
import broccolai.tags.core.platform.TagsPlatform;
import com.google.inject.AbstractModule;
import java.io.File;
import org.bukkit.plugin.Plugin;
Expand Down
44 changes: 35 additions & 9 deletions paper/src/main/java/broccolai/tags/paper/menu/TagsMenuFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
import com.google.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.incendo.interfaces.core.click.ClickHandler;
import org.incendo.interfaces.core.transform.InterfaceProperty;
import org.incendo.interfaces.core.transform.types.PaginatedTransform;
import org.incendo.interfaces.core.util.Vector2;
import org.incendo.interfaces.core.view.InterfaceView;
Expand Down Expand Up @@ -64,11 +66,15 @@ public TagsMenuFactory(
}

public ChestInterface create(final @NonNull TagsUser user) {
InterfaceProperty<UUID> refreshProperty = InterfaceProperty.of(UUID.randomUUID());
var tagTransform = this.createTagTransform(user, refreshProperty);

return ChestInterface.builder()
.title(this.locale.title.asComponent())
.rows(4)
.cancelClicksInPlayerInventory(true)
.addTransform(this::createFillTransform)
.addReactiveTransform(this.createTagTransform(user))
.addTransform(tagTransform, tagTransform.pageProperty(), refreshProperty)
.build();
}

Expand All @@ -82,11 +88,14 @@ private ChestPane createFillTransform(ChestPane pane, InterfaceView<ChestPane, P
return result;
}

private PaginatedTransform<ItemStackElement<ChestPane>, ChestPane, PlayerViewer> createTagTransform(final @NonNull TagsUser user) {
private PaginatedTransform<ItemStackElement<ChestPane>, ChestPane, PlayerViewer> createTagTransform(
final @NonNull TagsUser user,
final @NonNull InterfaceProperty<UUID> refreshProperty
) {
PaginatedTransform<ItemStackElement<ChestPane>, ChestPane, PlayerViewer> transform = new PaginatedTransform<>(
Vector2.at(0, 0),
Vector2.at(8, 2),
() -> this.createTagElements(user)
() -> this.createTagElements(user, refreshProperty)
);

transform.backwardElement(Vector2.at(0, 3), unused -> {
Expand All @@ -104,33 +113,46 @@ private PaginatedTransform<ItemStackElement<ChestPane>, ChestPane, PlayerViewer>
return transform;
}

private List<ItemStackElement<ChestPane>> createTagElements(final @NonNull TagsUser user) {
private List<ItemStackElement<ChestPane>> createTagElements(
final @NonNull TagsUser user,
final @NonNull InterfaceProperty<UUID> refreshProperty
) {
return this.tagsService.allTags(user)
.stream()
.map(tag -> this.createTagElement(user, tag))
.map(tag -> this.createTagElement(user, tag, refreshProperty))
.toList();
}

private ItemStackElement<ChestPane> createTagElement(final @NonNull TagsUser user, final @NonNull ConstructedTag tag) {
private ItemStackElement<ChestPane> createTagElement(
final @NonNull TagsUser user,
final @NonNull ConstructedTag tag,
final @NonNull InterfaceProperty<UUID> refreshProperty
) {
Material material = this.matchMaterialOrDefault(tag.displayInformation().material());
ItemStack item = PaperItemBuilder.ofType(material)
.name(tag.component())
.lore(this.createTagLore(tag))
.lore(this.createTagLore(user, tag))
.build();

return ItemStackElement.of(item, ctx -> {
ctx.cancel(true);
this.actionService.select(user, tag);
refreshProperty.set(UUID.randomUUID());
});
}

private List<Component> createTagLore(final @NonNull ConstructedTag tag) {
private List<Component> createTagLore(final @NonNull TagsUser user, final @NonNull ConstructedTag tag) {
List<Component> result = new ArrayList<>();

result.addAll(this.formatTagReason(tag.reason()));

result.add(Component.empty());
result.add(this.locale.equip.asComponent());

if (this.userHasTagEquipped(user, tag)) {
result.add(Component.text("currently equipped"));
} else {
result.add(this.locale.equip.asComponent());
}

return result;
}
Expand All @@ -153,4 +175,8 @@ private Material matchMaterialOrDefault(final @NonNull String input) {
return material;
}

private boolean userHasTagEquipped(final @NonNull TagsUser user, final @NonNull ConstructedTag tag) {
return user.current().isPresent() && user.current().get() == tag.id();
}

}

0 comments on commit 934ab01

Please sign in to comment.