Support for kyori adventure components

This commit is contained in:
NichtStudioCode 2022-06-13 16:07:21 +02:00
parent bc993f0e50
commit 749bd35a26
76 changed files with 470 additions and 278 deletions

@ -87,6 +87,11 @@
<artifactId>IA-R9</artifactId>
<version>0.7-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>de.studiocode.invui</groupId>
<artifactId>IA-R10</artifactId>
<version>0.7-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

@ -2,7 +2,6 @@ package de.studiocode.invui.gui.impl;
import de.studiocode.invui.gui.GUI;
import de.studiocode.invui.gui.SlotElement;
import de.studiocode.invui.gui.structure.Markers;
import de.studiocode.invui.gui.structure.Structure;
import de.studiocode.invui.util.SlotUtils;

@ -1,5 +1,7 @@
package de.studiocode.invui.item.builder;
import de.studiocode.inventoryaccess.component.BaseComponentWrapper;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.version.InventoryAccess;
import de.studiocode.invui.item.ItemProvider;
import de.studiocode.invui.util.ComponentUtils;
@ -26,8 +28,8 @@ abstract class BaseItemBuilder<T> implements ItemProvider {
protected int amount = 1;
protected int damage;
protected int customModelData;
protected BaseComponent[] displayName;
protected List<BaseComponent[]> lore;
protected ComponentWrapper displayName;
protected List<ComponentWrapper> lore;
protected List<ItemFlag> itemFlags;
protected HashMap<Enchantment, Pair<Integer, Boolean>> enchantments;
protected List<Function<ItemStack, ItemStack>> modifiers;
@ -142,7 +144,7 @@ abstract class BaseItemBuilder<T> implements ItemProvider {
public T setLegacyLore(@NotNull List<String> lore) {
this.lore = lore.stream()
.map(ComponentUtils::withoutPreFormatting)
.map(line -> new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(line)))
.collect(Collectors.toList());
return getThis();
}
@ -151,14 +153,27 @@ abstract class BaseItemBuilder<T> implements ItemProvider {
if (lore == null) lore = new ArrayList<>();
for (String line : lines)
lore.add(ComponentUtils.withoutPreFormatting(line));
lore.add(new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(line)));
return getThis();
}
public T addLoreLines(@NotNull BaseComponent[]... lines) {
if (lore == null) lore = new ArrayList<>();
lore.addAll(Arrays.stream(lines).map(ComponentUtils::withoutPreFormatting).collect(Collectors.toList()));
lore.addAll(
Arrays.stream(lines)
.map(line -> new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(line)))
.collect(Collectors.toList())
);
return getThis();
}
public T addLoreLines(@NotNull ComponentWrapper... lines) {
if (lore == null) lore = new ArrayList<>();
lore.addAll(Arrays.asList(lines));
return getThis();
}
@ -257,25 +272,30 @@ abstract class BaseItemBuilder<T> implements ItemProvider {
return getThis();
}
public BaseComponent[] getDisplayName() {
public ComponentWrapper getDisplayName() {
return displayName;
}
public T setDisplayName(String displayName) {
this.displayName = ComponentUtils.withoutPreFormatting(displayName);
this.displayName = new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(displayName));
return getThis();
}
public T setDisplayName(BaseComponent... displayName) {
this.displayName = ComponentUtils.withoutPreFormatting(displayName);
this.displayName = new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(displayName));
return getThis();
}
public List<BaseComponent[]> getLore() {
public T setDisplayName(ComponentWrapper component) {
this.displayName = component;
return getThis();
}
public List<ComponentWrapper> getLore() {
return lore;
}
public T setLore(List<BaseComponent[]> lore) {
public T setLore(List<ComponentWrapper> lore) {
this.lore = lore;
return getThis();
}

@ -1,5 +1,6 @@
package de.studiocode.invui.window;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.invui.gui.GUI;
import de.studiocode.invui.gui.GUIParent;
import de.studiocode.invui.item.Item;
@ -176,6 +177,13 @@ public interface Window extends GUIParent {
*/
void setCloseable(boolean closeable);
/**
* Changes the title of the {@link Inventory}.
*
* @param title The new title
*/
void changeTitle(@NotNull ComponentWrapper title);
/**
* Changes the title of the {@link Inventory}.
*

@ -1,5 +1,7 @@
package de.studiocode.invui.window.impl;
import de.studiocode.inventoryaccess.component.BaseComponentWrapper;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.version.InventoryAccess;
import de.studiocode.invui.InvUI;
import de.studiocode.invui.gui.GUI;
@ -40,11 +42,11 @@ public abstract class BaseWindow implements Window {
private final boolean removeOnClose;
private final SlotElement[] elementsDisplayed;
private final ArrayList<Runnable> closeHandlers = new ArrayList<>();
private BaseComponent[] title;
private ComponentWrapper title;
private boolean closeable;
private boolean closed;
public BaseWindow(UUID viewerUUID, BaseComponent[] title, int size, boolean closeable, boolean removeOnClose) {
public BaseWindow(UUID viewerUUID, ComponentWrapper title, int size, boolean closeable, boolean removeOnClose) {
this.viewerUUID = viewerUUID;
this.title = title;
this.closeable = closeable;
@ -252,7 +254,7 @@ public abstract class BaseWindow implements Window {
}
@Override
public void changeTitle(@NotNull BaseComponent[] title) {
public void changeTitle(@NotNull ComponentWrapper title) {
this.title = title;
Player currentViewer = getCurrentViewer();
if (currentViewer != null) {
@ -260,6 +262,11 @@ public abstract class BaseWindow implements Window {
}
}
@Override
public void changeTitle(@NotNull BaseComponent[] title) {
changeTitle(new BaseComponentWrapper(title));
}
@Override
public void changeTitle(@NotNull String title) {
changeTitle(TextComponent.fromLegacyText(title));

@ -1,5 +1,6 @@
package de.studiocode.invui.window.impl.merged;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.version.InventoryAccess;
import de.studiocode.invui.gui.GUI;
import de.studiocode.invui.gui.SlotElement;
@ -7,7 +8,6 @@ import de.studiocode.invui.util.Pair;
import de.studiocode.invui.util.SlotUtils;
import de.studiocode.invui.window.Window;
import de.studiocode.invui.window.impl.BaseWindow;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
@ -28,7 +28,7 @@ public abstract class MergedWindow extends BaseWindow {
protected Inventory upperInventory;
private boolean isCurrentlyOpened;
public MergedWindow(Player player, BaseComponent[] title, int size, Inventory upperInventory, boolean closeable, boolean removeOnClose) {
public MergedWindow(Player player, ComponentWrapper title, int size, Inventory upperInventory, boolean closeable, boolean removeOnClose) {
super(player.getUniqueId(), title, size, closeable, removeOnClose);
this.upperInventory = upperInventory;
this.playerInventory = player.getInventory();

@ -1,12 +1,12 @@
package de.studiocode.invui.window.impl.merged.combined;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.invui.gui.GUI;
import de.studiocode.invui.gui.SlotElement;
import de.studiocode.invui.util.Pair;
import de.studiocode.invui.util.SlotUtils;
import de.studiocode.invui.window.Window;
import de.studiocode.invui.window.impl.merged.MergedWindow;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
@ -18,7 +18,7 @@ public abstract class CombinedWindow extends MergedWindow {
private final GUI gui;
public CombinedWindow(Player player, BaseComponent[] title, GUI gui, Inventory upperInventory, boolean closeable, boolean removeOnClose) {
public CombinedWindow(Player player, ComponentWrapper title, GUI gui, Inventory upperInventory, boolean closeable, boolean removeOnClose) {
super(player, title, gui.getSize(), upperInventory, closeable, removeOnClose);
this.gui = gui;

@ -1,5 +1,7 @@
package de.studiocode.invui.window.impl.merged.combined;
import de.studiocode.inventoryaccess.component.BaseComponentWrapper;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.invui.gui.GUI;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
@ -9,11 +11,23 @@ import org.bukkit.inventory.Inventory;
public final class SimpleCombinedWindow extends CombinedWindow {
public SimpleCombinedWindow(Player player, BaseComponent[] title, GUI gui, boolean closeable, boolean removeOnClose) {
public SimpleCombinedWindow(Player player, ComponentWrapper title, GUI gui, boolean closeable, boolean removeOnClose) {
super(player, title, gui, createInventory(gui), closeable, removeOnClose);
register();
}
public SimpleCombinedWindow(Player player, ComponentWrapper title, GUI gui) {
this(player, title, gui, true, true);
}
public SimpleCombinedWindow(Player player, BaseComponent[] title, GUI gui, boolean closeable, boolean removeOnClose) {
this(player, new BaseComponentWrapper(title), gui, closeable, removeOnClose);
}
public SimpleCombinedWindow(Player player, BaseComponent[] title, GUI gui) {
this(player, title, gui, true, true);
}
public SimpleCombinedWindow(Player player, String title, GUI gui, boolean closeable, boolean removeOnClose) {
this(player, TextComponent.fromLegacyText(title), gui, closeable, removeOnClose);
}
@ -22,10 +36,6 @@ public final class SimpleCombinedWindow extends CombinedWindow {
this(player, title, gui, true, true);
}
public SimpleCombinedWindow(Player player, BaseComponent[] title, GUI gui) {
this(player, title, gui, true, true);
}
private static Inventory createInventory(GUI gui) {
if (gui.getWidth() != 9)
throw new IllegalArgumentException("GUI width has to be 9");

@ -1,6 +1,8 @@
package de.studiocode.invui.window.impl.merged.split;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.BaseComponentWrapper;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.version.InventoryAccess;
import de.studiocode.invui.gui.GUI;
import net.md_5.bungee.api.chat.BaseComponent;
@ -14,7 +16,7 @@ public final class AnvilSplitWindow extends SplitWindow {
private final AnvilInventory anvilInventory;
public AnvilSplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, boolean closeable, Consumer<String> renameHandler) {
public AnvilSplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui, boolean closeable, Consumer<String> renameHandler) {
super(player, title, upperGui, lowerGui, null, false, closeable, true);
anvilInventory = InventoryAccess.createAnvilInventory(player, title, renameHandler);
@ -24,6 +26,14 @@ public final class AnvilSplitWindow extends SplitWindow {
register();
}
public AnvilSplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui, Consumer<String> renameHandler) {
this(player, title, upperGui, lowerGui, true, renameHandler);
}
public AnvilSplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, boolean closeable, Consumer<String> renameHandler) {
this(player, new BaseComponentWrapper(title), upperGui, lowerGui, closeable, renameHandler);
}
public AnvilSplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, Consumer<String> renameHandler) {
this(player, title, upperGui, lowerGui, true, renameHandler);
}

@ -1,6 +1,8 @@
package de.studiocode.invui.window.impl.merged.split;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.BaseComponentWrapper;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.map.MapIcon;
import de.studiocode.inventoryaccess.map.MapPatch;
import de.studiocode.inventoryaccess.version.InventoryAccess;
@ -22,19 +24,7 @@ public final class CartographySplitWindow extends SplitWindow {
private final CartographyInventory cartographyInventory;
private int mapId;
public CartographySplitWindow(Player player, String title, GUI upperGui, GUI lowerGui) {
this(player, TextComponent.fromLegacyText(title), upperGui, lowerGui, true);
}
public CartographySplitWindow(Player player, String title, GUI upperGui, GUI lowerGui, boolean closeable) {
this(player, TextComponent.fromLegacyText(title), upperGui, lowerGui, closeable);
}
public CartographySplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui) {
this(player, title, upperGui, lowerGui, true);
}
public CartographySplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, boolean closeable) {
public CartographySplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui, boolean closeable) {
super(player, title, createWrappingGUI(upperGui), lowerGui, null, false, closeable, true);
cartographyInventory = InventoryAccess.createCartographyInventory(player, title);
@ -45,6 +35,26 @@ public final class CartographySplitWindow extends SplitWindow {
register();
}
public CartographySplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui) {
this(player, title, upperGui, lowerGui, true);
}
public CartographySplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui) {
this(player, new BaseComponentWrapper(title), upperGui, lowerGui, true);
}
public CartographySplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, boolean closeable) {
this(player, new BaseComponentWrapper(title), upperGui, lowerGui, closeable);
}
public CartographySplitWindow(Player player, String title, GUI upperGui, GUI lowerGui) {
this(player, TextComponent.fromLegacyText(title), upperGui, lowerGui, true);
}
public CartographySplitWindow(Player player, String title, GUI upperGui, GUI lowerGui, boolean closeable) {
this(player, TextComponent.fromLegacyText(title), upperGui, lowerGui, closeable);
}
private static GUI createWrappingGUI(GUI upperGui) {
if (upperGui.getWidth() != 2 || upperGui.getHeight() != 1)
throw new IllegalArgumentException("GUI has to be 2x1");

@ -1,5 +1,7 @@
package de.studiocode.invui.window.impl.merged.split;
import de.studiocode.inventoryaccess.component.BaseComponentWrapper;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.invui.gui.GUI;
import de.studiocode.invui.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
@ -8,11 +10,19 @@ import org.bukkit.entity.Player;
public final class SimpleSplitWindow extends SplitWindow {
public SimpleSplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, boolean closeable, boolean removeOnClose) {
public SimpleSplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui, boolean closeable, boolean removeOnClose) {
super(player, title, upperGui, lowerGui, InventoryUtils.createMatchingInventory(upperGui, ""), true, closeable, removeOnClose);
register();
}
public SimpleSplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui) {
this(player, title, upperGui, lowerGui, true, true);
}
public SimpleSplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, boolean closeable, boolean removeOnClose) {
this(player, new BaseComponentWrapper(title), upperGui, lowerGui, closeable, removeOnClose);
}
public SimpleSplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui) {
this(player, title, upperGui, lowerGui, true, true);
}

@ -1,12 +1,12 @@
package de.studiocode.invui.window.impl.merged.split;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.invui.gui.GUI;
import de.studiocode.invui.gui.SlotElement;
import de.studiocode.invui.util.Pair;
import de.studiocode.invui.util.SlotUtils;
import de.studiocode.invui.window.Window;
import de.studiocode.invui.window.impl.merged.MergedWindow;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
@ -19,7 +19,7 @@ public abstract class SplitWindow extends MergedWindow {
private final GUI upperGui;
private final GUI lowerGui;
public SplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, Inventory upperInventory, boolean initItems, boolean closeable, boolean removeOnClose) {
public SplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui, Inventory upperInventory, boolean initItems, boolean closeable, boolean removeOnClose) {
super(player, title, upperGui.getSize() + lowerGui.getSize(), upperInventory, closeable, removeOnClose);
this.upperGui = upperGui;
this.lowerGui = lowerGui;

@ -1,6 +1,8 @@
package de.studiocode.invui.window.impl.single;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.BaseComponentWrapper;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.version.InventoryAccess;
import de.studiocode.invui.gui.GUI;
import net.md_5.bungee.api.chat.BaseComponent;
@ -14,7 +16,7 @@ public final class AnvilWindow extends SingleWindow {
private final AnvilInventory anvilInventory;
public AnvilWindow(Player player, BaseComponent[] title, GUI gui, boolean closable, Consumer<String> renameHandler) {
public AnvilWindow(Player player, ComponentWrapper title, GUI gui, boolean closable, Consumer<String> renameHandler) {
super(player.getUniqueId(), title, gui, null, false, closable, true);
anvilInventory = InventoryAccess.createAnvilInventory(player, title, renameHandler);
inventory = anvilInventory.getBukkitInventory();
@ -23,6 +25,18 @@ public final class AnvilWindow extends SingleWindow {
register();
}
public AnvilWindow(Player player, ComponentWrapper title, GUI gui, Consumer<String> renameHandler) {
this(player, title, gui, true, renameHandler);
}
public AnvilWindow(Player player, BaseComponent[] title, GUI gui, boolean closeable, Consumer<String> renameHandler) {
this(player, new BaseComponentWrapper(title), gui, closeable, renameHandler);
}
public AnvilWindow(Player player, BaseComponent[] title, GUI gui, Consumer<String> renameHandler) {
this(player, title, gui, true, renameHandler);
}
public AnvilWindow(Player player, String title, GUI gui, boolean closeable, Consumer<String> renameHandler) {
this(player, TextComponent.fromLegacyText(title), gui, closeable, renameHandler);
}
@ -31,10 +45,6 @@ public final class AnvilWindow extends SingleWindow {
this(player, title, gui, true, renameHandler);
}
public AnvilWindow(Player player, BaseComponent[] title, GUI gui, Consumer<String> renameHandler) {
this(player, title, gui, true, renameHandler);
}
@Override
protected void setInvItem(int slot, ItemStack itemStack) {
anvilInventory.setItem(slot, itemStack);

@ -1,6 +1,8 @@
package de.studiocode.invui.window.impl.single;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.BaseComponentWrapper;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.map.MapIcon;
import de.studiocode.inventoryaccess.map.MapPatch;
import de.studiocode.inventoryaccess.version.InventoryAccess;
@ -23,19 +25,7 @@ public final class CartographyWindow extends SingleWindow {
private final CartographyInventory cartographyInventory;
private int mapId;
public CartographyWindow(Player player, String title, GUI gui) {
this(player, TextComponent.fromLegacyText(title), gui, true);
}
public CartographyWindow(Player player, String title, GUI gui, boolean closeable) {
this(player, TextComponent.fromLegacyText(title), gui, closeable);
}
public CartographyWindow(Player player, BaseComponent[] title, GUI gui) {
this(player, title, gui, true);
}
public CartographyWindow(Player player, BaseComponent[] title, GUI gui, boolean closeable) {
public CartographyWindow(Player player, ComponentWrapper title, GUI gui, boolean closeable) {
super(player.getUniqueId(), title, gui, null, false, closeable, true);
if (gui.getWidth() != 2 || gui.getHeight() != 1) throw new IllegalArgumentException("GUI has to be 2x1");
@ -47,6 +37,26 @@ public final class CartographyWindow extends SingleWindow {
register();
}
public CartographyWindow(Player player, ComponentWrapper title, GUI gui) {
this(player, title, gui, true);
}
public CartographyWindow(Player player, BaseComponent[] title, GUI gui) {
this(player, new BaseComponentWrapper(title), gui, true);
}
public CartographyWindow(Player player, BaseComponent[] title, GUI gui, boolean closeable) {
this(player, new BaseComponentWrapper(title), gui, closeable);
}
public CartographyWindow(Player player, String title, GUI gui) {
this(player, TextComponent.fromLegacyText(title), gui, true);
}
public CartographyWindow(Player player, String title, GUI gui, boolean closeable) {
this(player, TextComponent.fromLegacyText(title), gui, closeable);
}
public void updateMap(@Nullable MapPatch patch, @Nullable List<MapIcon> icons) {
InventoryAccess.getPlayerUtils().sendMapUpdate(getViewer(), mapId, (byte) 0, false, patch, icons);
}

@ -1,5 +1,7 @@
package de.studiocode.invui.window.impl.single;
import de.studiocode.inventoryaccess.component.BaseComponentWrapper;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.invui.gui.GUI;
import de.studiocode.invui.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
@ -10,23 +12,39 @@ import java.util.UUID;
public final class SimpleWindow extends SingleWindow {
public SimpleWindow(UUID viewerUUID, BaseComponent[] title, GUI gui, boolean closeable, boolean removeOnClose) {
public SimpleWindow(UUID viewerUUID, ComponentWrapper title, GUI gui, boolean closeable, boolean removeOnClose) {
super(viewerUUID, title, gui, InventoryUtils.createMatchingInventory(gui, ""), true, closeable, removeOnClose);
register();
}
public SimpleWindow(UUID viewerUUID, BaseComponent[] title, GUI gui) {
public SimpleWindow(UUID viewerUUID, ComponentWrapper title, GUI gui) {
this(viewerUUID, title, gui, true, true);
}
public SimpleWindow(Player player, BaseComponent[] title, GUI gui, boolean closeable, boolean removeOnClose) {
public SimpleWindow(Player player, ComponentWrapper title, GUI gui, boolean closeable, boolean removeOnClose) {
this(player.getUniqueId(), title, gui, closeable, removeOnClose);
}
public SimpleWindow(Player player, BaseComponent[] title, GUI gui) {
public SimpleWindow(Player player, ComponentWrapper title, GUI gui) {
this(player, title, gui, true, true);
}
public SimpleWindow(UUID viewerUUID, BaseComponent[] title, GUI gui, boolean closeable, boolean removeOnClose) {
this(viewerUUID, new BaseComponentWrapper(title), gui, closeable, removeOnClose);
}
public SimpleWindow(UUID viewerUUID, BaseComponent[] title, GUI gui) {
this(viewerUUID, new BaseComponentWrapper(title), gui);
}
public SimpleWindow(Player player, BaseComponent[] title, GUI gui, boolean closeable, boolean removeOnClose) {
this(player, new BaseComponentWrapper(title), gui, closeable, removeOnClose);
}
public SimpleWindow(Player player, BaseComponent[] title, GUI gui) {
this(player, new BaseComponentWrapper(title), gui);
}
public SimpleWindow(UUID viewerUUID, String title, GUI gui, boolean closeable, boolean removeOnClose) {
this(viewerUUID, TextComponent.fromLegacyText(title), gui, closeable, removeOnClose);
}

@ -1,12 +1,12 @@
package de.studiocode.invui.window.impl.single;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.invui.gui.GUI;
import de.studiocode.invui.gui.SlotElement;
import de.studiocode.invui.util.InventoryUtils;
import de.studiocode.invui.util.Pair;
import de.studiocode.invui.window.Window;
import de.studiocode.invui.window.impl.BaseWindow;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
@ -24,7 +24,7 @@ public abstract class SingleWindow extends BaseWindow {
private final int size;
protected Inventory inventory;
public SingleWindow(UUID viewerUUID, BaseComponent[] title, GUI gui, Inventory inventory, boolean initItems, boolean closeable, boolean removeOnClose) {
public SingleWindow(UUID viewerUUID, ComponentWrapper title, GUI gui, Inventory inventory, boolean initItems, boolean closeable, boolean removeOnClose) {
super(viewerUUID, title, gui.getSize(), closeable, removeOnClose);
this.gui = gui;
this.size = gui.getSize();

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r1.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r1.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_14_R1.*;
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory;
@ -35,7 +35,7 @@ public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory
private String text;
private boolean open;
public AnvilInventoryImpl(Player player, @NotNull BaseComponent[] title, Consumer<String> renameHandler) {
public AnvilInventoryImpl(Player player, @NotNull ComponentWrapper title, Consumer<String> renameHandler) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title), renameHandler);
}

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r1.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r1.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_14_R1.*;
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory;
@ -27,7 +27,7 @@ public class CartographyInventoryImpl extends ContainerCartography implements Ca
private boolean open;
public CartographyInventoryImpl(Player player, @NotNull BaseComponent[] title) {
public CartographyInventoryImpl(Player player, @NotNull ComponentWrapper title) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title));
}

@ -1,8 +1,7 @@
package de.studiocode.inventoryaccess.r1.util;
import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import net.minecraft.server.v1_14_R1.*;
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory;
@ -12,6 +11,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class InventoryUtilsImpl implements InventoryUtils {
@ -37,9 +37,8 @@ public class InventoryUtilsImpl implements InventoryUtils {
} else return CraftContainer.getNotchInventoryType(type);
}
public static IChatBaseComponent createNMSComponent(BaseComponent[] components) {
String json = ComponentSerializer.toString(components);
return IChatBaseComponent.ChatSerializer.a(json);
public static IChatBaseComponent createNMSComponent(ComponentWrapper component) {
return IChatBaseComponent.ChatSerializer.a(component.serializeToJson());
}
public static int getActiveWindowId(EntityPlayer player) {
@ -53,7 +52,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @NotNull BaseComponent[] title) {
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @Nullable ComponentWrapper title) {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
Containers<?> windowType = getNotchInventoryType(inventory);
@ -77,7 +76,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull BaseComponent[] title) {
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull ComponentWrapper title) {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
Container container = entityPlayer.activeContainer;
entityPlayer.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, container.getType(), createNMSComponent(title)));

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r1.util;
import de.studiocode.inventoryaccess.abstraction.util.ItemUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionRegistry;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_14_R1.ItemStack;
import net.minecraft.server.v1_14_R1.NBTCompressedStreamTools;
import net.minecraft.server.v1_14_R1.NBTTagCompound;
@ -71,7 +71,7 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setDisplayName(@NotNull ItemMeta itemMeta, BaseComponent[] name) {
public void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull ComponentWrapper name) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_DISPLAY_NAME_FIELD,
itemMeta,
@ -80,7 +80,7 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull BaseComponent[]> lore) {
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull ComponentWrapper> lore) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_LORE_FIELD,
itemMeta,

@ -71,7 +71,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
MapIcon.Type.a(icon.getType().getId()),
icon.getX(), icon.getY(),
icon.getRot(),
icon.getComponents() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponents()) : null
icon.getComponent() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponent()) : null
);
}

@ -1,8 +1,8 @@
package de.studiocode.inventoryaccess.r10.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r10.util.InventoryUtilsImpl;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
@ -38,7 +38,7 @@ public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory {
private String text;
private boolean open;
public AnvilInventoryImpl(org.bukkit.entity.Player player, @NotNull BaseComponent[] title, Consumer<String> renameHandler) {
public AnvilInventoryImpl(org.bukkit.entity.Player player, @NotNull ComponentWrapper title, Consumer<String> renameHandler) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title), renameHandler);
}

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r10.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r10.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
@ -40,7 +40,7 @@ public class CartographyInventoryImpl extends CartographyTableMenu implements Ca
private boolean open;
public CartographyInventoryImpl(Player player, @NotNull BaseComponent[] title) {
public CartographyInventoryImpl(Player player, @NotNull ComponentWrapper title) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title));
}

@ -1,8 +1,7 @@
package de.studiocode.inventoryaccess.r10.util;
import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.game.ClientboundOpenScreenPacket;
import net.minecraft.server.level.ServerPlayer;
@ -18,14 +17,13 @@ import org.bukkit.craftbukkit.v1_19_R1.util.CraftChatMessage;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class InventoryUtilsImpl implements InventoryUtils {
public static Component createNMSComponent(BaseComponent[] components) {
if (components == null) return null;
String json = ComponentSerializer.toString(components);
return CraftChatMessage.fromJSON(json);
public static Component createNMSComponent(ComponentWrapper component) {
if (component == null) return null;
return CraftChatMessage.fromJSON(component.serializeToJson());
}
public static int getActiveWindowId(ServerPlayer player) {
@ -39,7 +37,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @NotNull BaseComponent[] title) {
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @Nullable ComponentWrapper title) {
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
MenuType<?> menuType = CraftContainer.getNotchInventoryType(inventory);
@ -65,7 +63,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull BaseComponent[] title) {
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull ComponentWrapper title) {
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
AbstractContainerMenu menu = serverPlayer.containerMenu;
serverPlayer.connection.send(new ClientboundOpenScreenPacket(menu.containerId, menu.getType(), createNMSComponent(title)));

@ -1,10 +1,9 @@
package de.studiocode.inventoryaccess.r10.util;
import de.studiocode.inventoryaccess.abstraction.util.ItemUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionRegistry;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtIo;
import net.minecraft.world.item.ItemStack;
@ -72,20 +71,20 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setDisplayName(@NotNull ItemMeta itemMeta, BaseComponent[] name) {
public void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull ComponentWrapper name) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_DISPLAY_NAME_FIELD,
itemMeta,
ComponentSerializer.toString(name)
name.serializeToJson()
);
}
@Override
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull BaseComponent[]> lore) {
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull ComponentWrapper> lore) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_LORE_FIELD,
itemMeta,
lore.stream().map(ComponentSerializer::toString).collect(Collectors.toList())
lore.stream().map(ComponentWrapper::serializeToJson).collect(Collectors.toList())
);
}

@ -1,11 +1,11 @@
package de.studiocode.inventoryaccess.r10.util;
import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.map.MapIcon;
import de.studiocode.inventoryaccess.map.MapPatch;
import de.studiocode.inventoryaccess.util.DataUtils;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.network.protocol.game.ClientboundMapItemDataPacket;
import net.minecraft.network.protocol.game.ClientboundResourcePackPacket;
import net.minecraft.server.PlayerAdvancements;
@ -69,7 +69,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
MapDecoration.Type.byIcon(icon.getType().getId()),
icon.getX(), icon.getY(),
icon.getRot(),
icon.getComponents() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponents()) : null
icon.getComponent() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponent()) : null
);
}
@ -84,7 +84,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
}
@Override
public void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable BaseComponent[] prompt, boolean force) {
public void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable ComponentWrapper prompt, boolean force) {
var serverPlayer = ((CraftPlayer) player).getHandle();
var packet = new ClientboundResourcePackPacket(
url,

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r2.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r2.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_15_R1.event.CraftEventFactory;
@ -35,7 +35,7 @@ public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory
private String text;
private boolean open;
public AnvilInventoryImpl(Player player, @NotNull BaseComponent[] title, Consumer<String> renameHandler) {
public AnvilInventoryImpl(Player player, @NotNull ComponentWrapper title, Consumer<String> renameHandler) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title), renameHandler);
}

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r2.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r2.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_15_R1.event.CraftEventFactory;
@ -27,7 +27,7 @@ public class CartographyInventoryImpl extends ContainerCartography implements Ca
private boolean open;
public CartographyInventoryImpl(Player player, @NotNull BaseComponent[] title) {
public CartographyInventoryImpl(Player player, @NotNull ComponentWrapper title) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title));
}

@ -1,8 +1,7 @@
package de.studiocode.inventoryaccess.r2.util;
import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_15_R1.event.CraftEventFactory;
@ -11,12 +10,12 @@ import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventory;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class InventoryUtilsImpl implements InventoryUtils {
public static IChatBaseComponent createNMSComponent(BaseComponent[] components) {
String json = ComponentSerializer.toString(components);
return IChatBaseComponent.ChatSerializer.a(json);
public static IChatBaseComponent createNMSComponent(ComponentWrapper component) {
return IChatBaseComponent.ChatSerializer.a(component.serializeToJson());
}
public static int getActiveWindowId(EntityPlayer player) {
@ -30,7 +29,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @NotNull BaseComponent[] title) {
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @Nullable ComponentWrapper title) {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
Containers<?> windowType = CraftContainer.getNotchInventoryType(inventory);
@ -54,7 +53,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull BaseComponent[] title) {
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull ComponentWrapper title) {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
Container container = entityPlayer.activeContainer;
entityPlayer.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, container.getType(), createNMSComponent(title)));

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r2.util;
import de.studiocode.inventoryaccess.abstraction.util.ItemUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionRegistry;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_15_R1.ItemStack;
import net.minecraft.server.v1_15_R1.NBTCompressedStreamTools;
import net.minecraft.server.v1_15_R1.NBTTagCompound;
@ -71,7 +71,7 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setDisplayName(@NotNull ItemMeta itemMeta, BaseComponent[] name) {
public void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull ComponentWrapper name) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_DISPLAY_NAME_FIELD,
itemMeta,
@ -80,7 +80,7 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull BaseComponent[]> lore) {
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull ComponentWrapper> lore) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_LORE_FIELD,
itemMeta,

@ -71,7 +71,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
MapIcon.Type.a(icon.getType().getId()),
icon.getX(), icon.getY(),
icon.getRot(),
icon.getComponents() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponents()) : null
icon.getComponent() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponent()) : null
);
}

@ -1,8 +1,8 @@
package de.studiocode.inventoryaccess.r3.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r3.util.InventoryUtilsImpl;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_16_R1.*;
import org.bukkit.craftbukkit.v1_16_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_16_R1.event.CraftEventFactory;
@ -26,7 +26,7 @@ public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory
private String text;
private boolean open;
public AnvilInventoryImpl(Player player, @NotNull BaseComponent[] title, Consumer<String> renameHandler) {
public AnvilInventoryImpl(Player player, @NotNull ComponentWrapper title, Consumer<String> renameHandler) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title), renameHandler);
}

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r3.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r3.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_16_R1.*;
import org.bukkit.craftbukkit.v1_16_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_16_R1.event.CraftEventFactory;
@ -27,7 +27,7 @@ public class CartographyInventoryImpl extends ContainerCartography implements Ca
private boolean open;
public CartographyInventoryImpl(Player player, @NotNull BaseComponent[] title) {
public CartographyInventoryImpl(Player player, @NotNull ComponentWrapper title) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title));
}

@ -1,8 +1,7 @@
package de.studiocode.inventoryaccess.r3.util;
import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import net.minecraft.server.v1_16_R1.*;
import org.bukkit.craftbukkit.v1_16_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_16_R1.event.CraftEventFactory;
@ -12,12 +11,12 @@ import org.bukkit.craftbukkit.v1_16_R1.util.CraftChatMessage;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class InventoryUtilsImpl implements InventoryUtils {
public static IChatBaseComponent createNMSComponent(BaseComponent[] components) {
String json = ComponentSerializer.toString(components);
return IChatBaseComponent.ChatSerializer.a(json);
public static IChatBaseComponent createNMSComponent(ComponentWrapper component) {
return IChatBaseComponent.ChatSerializer.a(component.serializeToJson());
}
public static int getActiveWindowId(EntityPlayer player) {
@ -31,7 +30,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @NotNull BaseComponent[] title) {
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @Nullable ComponentWrapper title) {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
Containers<?> windowType = CraftContainer.getNotchInventoryType(inventory);
@ -55,7 +54,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull BaseComponent[] title) {
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull ComponentWrapper title) {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
Container container = entityPlayer.activeContainer;
entityPlayer.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, container.getType(), createNMSComponent(title)));

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r3.util;
import de.studiocode.inventoryaccess.abstraction.util.ItemUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionRegistry;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_16_R1.ItemStack;
import net.minecraft.server.v1_16_R1.NBTCompressedStreamTools;
import net.minecraft.server.v1_16_R1.NBTTagCompound;
@ -71,7 +71,7 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setDisplayName(@NotNull ItemMeta itemMeta, BaseComponent[] name) {
public void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull ComponentWrapper name) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_DISPLAY_NAME_FIELD,
itemMeta,
@ -80,7 +80,7 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull BaseComponent[]> lore) {
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull ComponentWrapper> lore) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_LORE_FIELD,
itemMeta,

@ -71,7 +71,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
MapIcon.Type.a(icon.getType().getId()),
icon.getX(), icon.getY(),
icon.getRot(),
icon.getComponents() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponents()) : null
icon.getComponent() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponent()) : null
);
}

@ -1,8 +1,8 @@
package de.studiocode.inventoryaccess.r4.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r4.util.InventoryUtilsImpl;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_16_R2.*;
import org.bukkit.craftbukkit.v1_16_R2.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory;
@ -26,7 +26,7 @@ public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory
private String text;
private boolean open;
public AnvilInventoryImpl(Player player, @NotNull BaseComponent[] title, Consumer<String> renameHandler) {
public AnvilInventoryImpl(Player player, @NotNull ComponentWrapper title, Consumer<String> renameHandler) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title), renameHandler);
}

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r4.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r4.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_16_R2.*;
import org.bukkit.craftbukkit.v1_16_R2.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory;
@ -27,7 +27,7 @@ public class CartographyInventoryImpl extends ContainerCartography implements Ca
private boolean open;
public CartographyInventoryImpl(Player player, @NotNull BaseComponent[] title) {
public CartographyInventoryImpl(Player player, @NotNull ComponentWrapper title) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title));
}

@ -1,8 +1,7 @@
package de.studiocode.inventoryaccess.r4.util;
import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import net.minecraft.server.v1_16_R2.*;
import org.bukkit.craftbukkit.v1_16_R2.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory;
@ -12,12 +11,12 @@ import org.bukkit.craftbukkit.v1_16_R2.util.CraftChatMessage;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class InventoryUtilsImpl implements InventoryUtils {
public static IChatBaseComponent createNMSComponent(BaseComponent[] components) {
String json = ComponentSerializer.toString(components);
return IChatBaseComponent.ChatSerializer.a(json);
public static IChatBaseComponent createNMSComponent(ComponentWrapper component) {
return IChatBaseComponent.ChatSerializer.a(component.serializeToJson());
}
public static int getActiveWindowId(EntityPlayer player) {
@ -31,7 +30,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @NotNull BaseComponent[] title) {
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @Nullable ComponentWrapper title) {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
Containers<?> windowType = CraftContainer.getNotchInventoryType(inventory);
@ -55,7 +54,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull BaseComponent[] title) {
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull ComponentWrapper title) {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
Container container = entityPlayer.activeContainer;
entityPlayer.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, container.getType(), createNMSComponent(title)));

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r4.util;
import de.studiocode.inventoryaccess.abstraction.util.ItemUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionRegistry;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_16_R2.ItemStack;
import net.minecraft.server.v1_16_R2.NBTCompressedStreamTools;
import net.minecraft.server.v1_16_R2.NBTTagCompound;
@ -71,7 +71,7 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setDisplayName(@NotNull ItemMeta itemMeta, BaseComponent[] name) {
public void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull ComponentWrapper name) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_DISPLAY_NAME_FIELD,
itemMeta,
@ -80,7 +80,7 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull BaseComponent[]> lore) {
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull ComponentWrapper> lore) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_LORE_FIELD,
itemMeta,

@ -71,7 +71,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
MapIcon.Type.a(icon.getType().getId()),
icon.getX(), icon.getY(),
icon.getRot(),
icon.getComponents() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponents()) : null
icon.getComponent() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponent()) : null
);
}

@ -1,8 +1,8 @@
package de.studiocode.inventoryaccess.r5.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r5.util.InventoryUtilsImpl;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_16_R3.*;
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory;
@ -26,7 +26,7 @@ public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory
private String text;
private boolean open;
public AnvilInventoryImpl(Player player, @NotNull BaseComponent[] title, Consumer<String> renameHandler) {
public AnvilInventoryImpl(Player player, @NotNull ComponentWrapper title, Consumer<String> renameHandler) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title), renameHandler);
}

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r5.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r5.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.v1_16_R3.*;
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory;
@ -27,7 +27,7 @@ public class CartographyInventoryImpl extends ContainerCartography implements Ca
private boolean open;
public CartographyInventoryImpl(Player player, @NotNull BaseComponent[] title) {
public CartographyInventoryImpl(Player player, @NotNull ComponentWrapper title) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title));
}

@ -1,8 +1,7 @@
package de.studiocode.inventoryaccess.r5.util;
import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import net.minecraft.server.v1_16_R3.*;
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory;
@ -12,12 +11,12 @@ import org.bukkit.craftbukkit.v1_16_R3.util.CraftChatMessage;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class InventoryUtilsImpl implements InventoryUtils {
public static IChatBaseComponent createNMSComponent(BaseComponent[] components) {
String json = ComponentSerializer.toString(components);
return CraftChatMessage.fromJSON(json);
public static IChatBaseComponent createNMSComponent(ComponentWrapper component) {
return IChatBaseComponent.ChatSerializer.a(component.serializeToJson());
}
public static int getActiveWindowId(EntityPlayer player) {
@ -31,7 +30,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @NotNull BaseComponent[] title) {
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @Nullable ComponentWrapper title) {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
Containers<?> windowType = CraftContainer.getNotchInventoryType(inventory);
@ -55,7 +54,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull BaseComponent[] title) {
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull ComponentWrapper title) {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
Container container = entityPlayer.activeContainer;
entityPlayer.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, container.getType(), createNMSComponent(title)));

@ -1,10 +1,9 @@
package de.studiocode.inventoryaccess.r5.util;
import de.studiocode.inventoryaccess.abstraction.util.ItemUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionRegistry;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import net.minecraft.server.v1_16_R3.ItemStack;
import net.minecraft.server.v1_16_R3.NBTCompressedStreamTools;
import net.minecraft.server.v1_16_R3.NBTTagCompound;
@ -72,20 +71,20 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setDisplayName(@NotNull ItemMeta itemMeta, BaseComponent[] name) {
public void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull ComponentWrapper name) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_DISPLAY_NAME_FIELD,
itemMeta,
ComponentSerializer.toString(name)
name.serializeToJson()
);
}
@Override
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull BaseComponent[]> lore) {
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull ComponentWrapper> lore) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_LORE_FIELD,
itemMeta,
lore.stream().map(ComponentSerializer::toString).collect(Collectors.toList())
lore.stream().map(ComponentWrapper::serializeToJson).collect(Collectors.toList())
);
}

@ -71,7 +71,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
MapIcon.Type.a(icon.getType().getId()),
icon.getX(), icon.getY(),
icon.getRot(),
icon.getComponents() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponents()) : null
icon.getComponent() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponent()) : null
);
}

@ -1,8 +1,8 @@
package de.studiocode.inventoryaccess.r6.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r6.util.InventoryUtilsImpl;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
@ -37,7 +37,7 @@ public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory {
private String text;
private boolean open;
public AnvilInventoryImpl(org.bukkit.entity.Player player, @NotNull BaseComponent[] title, Consumer<String> renameHandler) {
public AnvilInventoryImpl(org.bukkit.entity.Player player, @NotNull ComponentWrapper title, Consumer<String> renameHandler) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title), renameHandler);
}

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r6.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r6.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
@ -40,7 +40,7 @@ public class CartographyInventoryImpl extends CartographyTableMenu implements Ca
private boolean open;
public CartographyInventoryImpl(Player player, @NotNull BaseComponent[] title) {
public CartographyInventoryImpl(Player player, @NotNull ComponentWrapper title) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title));
}

@ -1,8 +1,7 @@
package de.studiocode.inventoryaccess.r6.util;
import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.game.ClientboundOpenScreenPacket;
import net.minecraft.server.level.ServerPlayer;
@ -18,14 +17,13 @@ import org.bukkit.craftbukkit.v1_17_R1.util.CraftChatMessage;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class InventoryUtilsImpl implements InventoryUtils {
public static Component createNMSComponent(BaseComponent[] components) {
if (components == null) return null;
String json = ComponentSerializer.toString(components);
return CraftChatMessage.fromJSON(json);
public static Component createNMSComponent(ComponentWrapper component) {
if (component == null) return null;
return CraftChatMessage.fromJSON(component.serializeToJson());
}
public static int getActiveWindowId(ServerPlayer player) {
@ -39,7 +37,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @NotNull BaseComponent[] title) {
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @Nullable ComponentWrapper title) {
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
MenuType<?> menuType = CraftContainer.getNotchInventoryType(inventory);
@ -65,7 +63,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull BaseComponent[] title) {
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull ComponentWrapper title) {
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
AbstractContainerMenu menu = serverPlayer.containerMenu;
serverPlayer.connection.send(new ClientboundOpenScreenPacket(menu.containerId, menu.getType(), createNMSComponent(title)));

@ -1,10 +1,9 @@
package de.studiocode.inventoryaccess.r6.util;
import de.studiocode.inventoryaccess.abstraction.util.ItemUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionRegistry;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtIo;
import net.minecraft.world.item.ItemStack;
@ -72,20 +71,20 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setDisplayName(@NotNull ItemMeta itemMeta, BaseComponent[] name) {
public void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull ComponentWrapper name) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_DISPLAY_NAME_FIELD,
itemMeta,
ComponentSerializer.toString(name)
name.serializeToJson()
);
}
@Override
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull BaseComponent[]> lore) {
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull ComponentWrapper> lore) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_LORE_FIELD,
itemMeta,
lore.stream().map(ComponentSerializer::toString).collect(Collectors.toList())
lore.stream().map(ComponentWrapper::serializeToJson).collect(Collectors.toList())
);
}

@ -1,11 +1,11 @@
package de.studiocode.inventoryaccess.r6.util;
import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.map.MapIcon;
import de.studiocode.inventoryaccess.map.MapPatch;
import de.studiocode.inventoryaccess.util.DataUtils;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.network.protocol.game.ClientboundMapItemDataPacket;
import net.minecraft.network.protocol.game.ClientboundResourcePackPacket;
import net.minecraft.server.PlayerAdvancements;
@ -69,7 +69,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
MapDecoration.Type.byIcon(icon.getType().getId()),
icon.getX(), icon.getY(),
icon.getRot(),
icon.getComponents() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponents()) : null
icon.getComponent() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponent()) : null
);
}
@ -84,7 +84,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
}
@Override
public void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable BaseComponent[] prompt, boolean force) {
public void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable ComponentWrapper prompt, boolean force) {
var serverPlayer = ((CraftPlayer) player).getHandle();
var packet = new ClientboundResourcePackPacket(
url,

@ -1,8 +1,8 @@
package de.studiocode.inventoryaccess.r7.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r7.util.InventoryUtilsImpl;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
@ -38,7 +38,7 @@ public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory {
private String text;
private boolean open;
public AnvilInventoryImpl(org.bukkit.entity.Player player, @NotNull BaseComponent[] title, Consumer<String> renameHandler) {
public AnvilInventoryImpl(org.bukkit.entity.Player player, @NotNull ComponentWrapper title, Consumer<String> renameHandler) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title), renameHandler);
}

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r7.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r7.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
@ -40,7 +40,7 @@ public class CartographyInventoryImpl extends CartographyTableMenu implements Ca
private boolean open;
public CartographyInventoryImpl(Player player, @NotNull BaseComponent[] title) {
public CartographyInventoryImpl(Player player, @NotNull ComponentWrapper title) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title));
}

@ -1,8 +1,7 @@
package de.studiocode.inventoryaccess.r7.util;
import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.game.ClientboundOpenScreenPacket;
import net.minecraft.server.level.ServerPlayer;
@ -18,14 +17,13 @@ import org.bukkit.craftbukkit.v1_17_R1.util.CraftChatMessage;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class InventoryUtilsImpl implements InventoryUtils {
public static Component createNMSComponent(BaseComponent[] components) {
if (components == null) return null;
String json = ComponentSerializer.toString(components);
return CraftChatMessage.fromJSON(json);
public static Component createNMSComponent(ComponentWrapper component) {
if (component == null) return null;
return CraftChatMessage.fromJSON(component.serializeToJson());
}
public static int getActiveWindowId(ServerPlayer player) {
@ -39,7 +37,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @NotNull BaseComponent[] title) {
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @Nullable ComponentWrapper title) {
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
MenuType<?> menuType = CraftContainer.getNotchInventoryType(inventory);
@ -65,7 +63,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull BaseComponent[] title) {
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull ComponentWrapper title) {
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
AbstractContainerMenu menu = serverPlayer.containerMenu;
serverPlayer.connection.send(new ClientboundOpenScreenPacket(menu.containerId, menu.getType(), createNMSComponent(title)));

@ -1,10 +1,9 @@
package de.studiocode.inventoryaccess.r7.util;
import de.studiocode.inventoryaccess.abstraction.util.ItemUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionRegistry;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtIo;
import net.minecraft.world.item.ItemStack;
@ -72,20 +71,20 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setDisplayName(@NotNull ItemMeta itemMeta, BaseComponent[] name) {
public void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull ComponentWrapper name) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_DISPLAY_NAME_FIELD,
itemMeta,
ComponentSerializer.toString(name)
name.serializeToJson()
);
}
@Override
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull BaseComponent[]> lore) {
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull ComponentWrapper> lore) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_LORE_FIELD,
itemMeta,
lore.stream().map(ComponentSerializer::toString).collect(Collectors.toList())
lore.stream().map(ComponentWrapper::serializeToJson).collect(Collectors.toList())
);
}

@ -1,11 +1,11 @@
package de.studiocode.inventoryaccess.r7.util;
import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.map.MapIcon;
import de.studiocode.inventoryaccess.map.MapPatch;
import de.studiocode.inventoryaccess.util.DataUtils;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.network.protocol.game.ClientboundMapItemDataPacket;
import net.minecraft.network.protocol.game.ClientboundResourcePackPacket;
import net.minecraft.server.PlayerAdvancements;
@ -69,7 +69,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
MapDecoration.Type.byIcon(icon.getType().getId()),
icon.getX(), icon.getY(),
icon.getRot(),
icon.getComponents() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponents()) : null
icon.getComponent() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponent()) : null
);
}
@ -84,7 +84,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
}
@Override
public void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable BaseComponent[] prompt, boolean force) {
public void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable ComponentWrapper prompt, boolean force) {
var serverPlayer = ((CraftPlayer) player).getHandle();
var packet = new ClientboundResourcePackPacket(
url,

@ -1,8 +1,8 @@
package de.studiocode.inventoryaccess.r8.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r8.util.InventoryUtilsImpl;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
@ -38,7 +38,7 @@ public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory {
private String text;
private boolean open;
public AnvilInventoryImpl(org.bukkit.entity.Player player, @NotNull BaseComponent[] title, Consumer<String> renameHandler) {
public AnvilInventoryImpl(org.bukkit.entity.Player player, @NotNull ComponentWrapper title, Consumer<String> renameHandler) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title), renameHandler);
}

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r8.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r8.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
@ -40,7 +40,7 @@ public class CartographyInventoryImpl extends CartographyTableMenu implements Ca
private boolean open;
public CartographyInventoryImpl(Player player, @NotNull BaseComponent[] title) {
public CartographyInventoryImpl(Player player, @NotNull ComponentWrapper title) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title));
}

@ -1,8 +1,7 @@
package de.studiocode.inventoryaccess.r8.util;
import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.game.ClientboundOpenScreenPacket;
import net.minecraft.server.level.ServerPlayer;
@ -18,14 +17,13 @@ import org.bukkit.craftbukkit.v1_18_R1.util.CraftChatMessage;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class InventoryUtilsImpl implements InventoryUtils {
public static Component createNMSComponent(BaseComponent[] components) {
if (components == null) return null;
String json = ComponentSerializer.toString(components);
return CraftChatMessage.fromJSON(json);
public static Component createNMSComponent(ComponentWrapper component) {
if (component == null) return null;
return CraftChatMessage.fromJSON(component.serializeToJson());
}
public static int getActiveWindowId(ServerPlayer player) {
@ -39,7 +37,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @NotNull BaseComponent[] title) {
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @Nullable ComponentWrapper title) {
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
MenuType<?> menuType = CraftContainer.getNotchInventoryType(inventory);
@ -65,7 +63,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull BaseComponent[] title) {
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull ComponentWrapper title) {
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
AbstractContainerMenu menu = serverPlayer.containerMenu;
serverPlayer.connection.send(new ClientboundOpenScreenPacket(menu.containerId, menu.getType(), createNMSComponent(title)));

@ -1,10 +1,9 @@
package de.studiocode.inventoryaccess.r8.util;
import de.studiocode.inventoryaccess.abstraction.util.ItemUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionRegistry;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtIo;
import net.minecraft.world.item.ItemStack;
@ -72,20 +71,20 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setDisplayName(@NotNull ItemMeta itemMeta, BaseComponent[] name) {
public void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull ComponentWrapper name) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_DISPLAY_NAME_FIELD,
itemMeta,
ComponentSerializer.toString(name)
name.serializeToJson()
);
}
@Override
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull BaseComponent[]> lore) {
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull ComponentWrapper> lore) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_LORE_FIELD,
itemMeta,
lore.stream().map(ComponentSerializer::toString).collect(Collectors.toList())
lore.stream().map(ComponentWrapper::serializeToJson).collect(Collectors.toList())
);
}

@ -1,11 +1,11 @@
package de.studiocode.inventoryaccess.r8.util;
import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.map.MapIcon;
import de.studiocode.inventoryaccess.map.MapPatch;
import de.studiocode.inventoryaccess.util.DataUtils;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.network.protocol.game.ClientboundMapItemDataPacket;
import net.minecraft.network.protocol.game.ClientboundResourcePackPacket;
import net.minecraft.server.PlayerAdvancements;
@ -69,7 +69,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
MapDecoration.Type.byIcon(icon.getType().getId()),
icon.getX(), icon.getY(),
icon.getRot(),
icon.getComponents() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponents()) : null
icon.getComponent() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponent()) : null
);
}
@ -84,7 +84,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
}
@Override
public void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable BaseComponent[] prompt, boolean force) {
public void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable ComponentWrapper prompt, boolean force) {
var serverPlayer = ((CraftPlayer) player).getHandle();
var packet = new ClientboundResourcePackPacket(
url,

@ -1,8 +1,8 @@
package de.studiocode.inventoryaccess.r9.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r9.util.InventoryUtilsImpl;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
@ -38,7 +38,7 @@ public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory {
private String text;
private boolean open;
public AnvilInventoryImpl(org.bukkit.entity.Player player, @NotNull BaseComponent[] title, Consumer<String> renameHandler) {
public AnvilInventoryImpl(org.bukkit.entity.Player player, @NotNull ComponentWrapper title, Consumer<String> renameHandler) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title), renameHandler);
}

@ -1,9 +1,9 @@
package de.studiocode.inventoryaccess.r9.inventory;
import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.r9.util.InventoryUtilsImpl;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
@ -40,7 +40,7 @@ public class CartographyInventoryImpl extends CartographyTableMenu implements Ca
private boolean open;
public CartographyInventoryImpl(Player player, @NotNull BaseComponent[] title) {
public CartographyInventoryImpl(Player player, @NotNull ComponentWrapper title) {
this(((CraftPlayer) player).getHandle(), InventoryUtilsImpl.createNMSComponent(title));
}

@ -1,8 +1,7 @@
package de.studiocode.inventoryaccess.r9.util;
import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.game.ClientboundOpenScreenPacket;
import net.minecraft.server.level.ServerPlayer;
@ -18,14 +17,13 @@ import org.bukkit.craftbukkit.v1_18_R2.util.CraftChatMessage;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class InventoryUtilsImpl implements InventoryUtils {
public static Component createNMSComponent(BaseComponent[] components) {
if (components == null) return null;
String json = ComponentSerializer.toString(components);
return CraftChatMessage.fromJSON(json);
public static Component createNMSComponent(ComponentWrapper component) {
if (component == null) return null;
return CraftChatMessage.fromJSON(component.serializeToJson());
}
public static int getActiveWindowId(ServerPlayer player) {
@ -39,7 +37,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @NotNull BaseComponent[] title) {
public void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @Nullable ComponentWrapper title) {
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
MenuType<?> menuType = CraftContainer.getNotchInventoryType(inventory);
@ -65,7 +63,7 @@ public class InventoryUtilsImpl implements InventoryUtils {
}
@Override
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull BaseComponent[] title) {
public void updateOpenInventoryTitle(@NotNull Player player, @NotNull ComponentWrapper title) {
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
AbstractContainerMenu menu = serverPlayer.containerMenu;
serverPlayer.connection.send(new ClientboundOpenScreenPacket(menu.containerId, menu.getType(), createNMSComponent(title)));

@ -1,10 +1,9 @@
package de.studiocode.inventoryaccess.r9.util;
import de.studiocode.inventoryaccess.abstraction.util.ItemUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionRegistry;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtIo;
import net.minecraft.world.item.ItemStack;
@ -72,20 +71,20 @@ public class ItemUtilsImpl implements ItemUtils {
}
@Override
public void setDisplayName(@NotNull ItemMeta itemMeta, BaseComponent[] name) {
public void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull ComponentWrapper name) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_DISPLAY_NAME_FIELD,
itemMeta,
ComponentSerializer.toString(name)
name.serializeToJson()
);
}
@Override
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull BaseComponent[]> lore) {
public void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull ComponentWrapper> lore) {
ReflectionUtils.setFieldValue(
ReflectionRegistry.CB_CRAFT_META_ITEM_LORE_FIELD,
itemMeta,
lore.stream().map(ComponentSerializer::toString).collect(Collectors.toList())
lore.stream().map(ComponentWrapper::serializeToJson).collect(Collectors.toList())
);
}

@ -1,11 +1,11 @@
package de.studiocode.inventoryaccess.r9.util;
import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.map.MapIcon;
import de.studiocode.inventoryaccess.map.MapPatch;
import de.studiocode.inventoryaccess.util.DataUtils;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.network.protocol.game.ClientboundMapItemDataPacket;
import net.minecraft.network.protocol.game.ClientboundResourcePackPacket;
import net.minecraft.server.PlayerAdvancements;
@ -69,7 +69,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
MapDecoration.Type.byIcon(icon.getType().getId()),
icon.getX(), icon.getY(),
icon.getRot(),
icon.getComponents() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponents()) : null
icon.getComponent() != null ? InventoryUtilsImpl.createNMSComponent(icon.getComponent()) : null
);
}
@ -84,7 +84,7 @@ public class PlayerUtilsImpl implements PlayerUtils {
}
@Override
public void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable BaseComponent[] prompt, boolean force) {
public void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable ComponentWrapper prompt, boolean force) {
var serverPlayer = ((CraftPlayer) player).getHandle();
var packet = new ClientboundResourcePackPacket(
url,

@ -17,6 +17,13 @@
<maven.compiler.target>11</maven.compiler.target>
</properties>
<repositories>
<repository>
<id>papermc</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
@ -24,6 +31,18 @@
<version>1.16.4-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-api</artifactId>
<version>4.11.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-text-serializer-gson</artifactId>
<version>4.11.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

@ -1,10 +1,11 @@
package de.studiocode.inventoryaccess.abstraction.util;
import net.md_5.bungee.api.chat.BaseComponent;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryView;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public interface InventoryUtils {
@ -30,7 +31,7 @@ public interface InventoryUtils {
* @param inventory The {@link Inventory}
* @param title The title of the inventory
*/
void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @NotNull BaseComponent[] title);
void openCustomInventory(@NotNull Player player, @NotNull Inventory inventory, @Nullable ComponentWrapper title);
/**
* Changes the title of the {@link Inventory} the player is currently viewing.
@ -38,6 +39,6 @@ public interface InventoryUtils {
* @param player The {@link Player}
* @param title The new title
*/
void updateOpenInventoryTitle(@NotNull Player player, @NotNull BaseComponent[] title);
void updateOpenInventoryTitle(@NotNull Player player, @NotNull ComponentWrapper title);
}

@ -1,6 +1,6 @@
package de.studiocode.inventoryaccess.abstraction.util;
import net.md_5.bungee.api.chat.BaseComponent;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
@ -55,16 +55,16 @@ public interface ItemUtils {
* Sets the display name of an {@link ItemMeta}
*
* @param itemMeta The {@link ItemMeta}
* @param name The display name as a {@link BaseComponent BaseComponent[]}
* @param name The display name
*/
void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull BaseComponent[] name);
void setDisplayName(@NotNull ItemMeta itemMeta, @NotNull ComponentWrapper name);
/**
* Sets the lore of an {@link ItemMeta}
*
* @param itemMeta The {@link ItemMeta}
* @param lore The lore as a list of {@link BaseComponent BaseComponent[]}
* @param lore The lore
*/
void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull BaseComponent[]> lore);
void setLore(@NotNull ItemMeta itemMeta, @NotNull List<@NotNull ComponentWrapper> lore);
}

@ -1,8 +1,8 @@
package de.studiocode.inventoryaccess.abstraction.util;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.map.MapIcon;
import de.studiocode.inventoryaccess.map.MapPatch;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -61,7 +61,7 @@ public interface PlayerUtils {
* @param prompt The prompt message to be displayed (since 1.17)
* @param force If the {@link Player} should be forced to download the resource pack (since 1.17)
*/
default void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable BaseComponent[] prompt, boolean force) {
default void sendResourcePack(@NotNull Player player, @NotNull String url, byte[] hash, @Nullable ComponentWrapper prompt, boolean force) {
player.setResourcePack(url, hash);
}

@ -0,0 +1,19 @@
package de.studiocode.inventoryaccess.component;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
public class AdventureComponentWrapper implements ComponentWrapper {
private final Component component;
public AdventureComponentWrapper(Component component) {
this.component = component;
}
@Override
public String serializeToJson() {
return GsonComponentSerializer.gson().serialize(component);
}
}

@ -0,0 +1,19 @@
package de.studiocode.inventoryaccess.component;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.chat.ComponentSerializer;
public class BaseComponentWrapper implements ComponentWrapper {
private final BaseComponent[] components;
public BaseComponentWrapper(BaseComponent[] components) {
this.components = components;
}
@Override
public String serializeToJson() {
return ComponentSerializer.toString(components);
}
}

@ -0,0 +1,7 @@
package de.studiocode.inventoryaccess.component;
public interface ComponentWrapper {
String serializeToJson();
}

@ -1,5 +1,7 @@
package de.studiocode.inventoryaccess.map;
import de.studiocode.inventoryaccess.component.BaseComponentWrapper;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import net.md_5.bungee.api.chat.BaseComponent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -10,18 +12,22 @@ public class MapIcon {
private final byte x;
private final byte y;
private final byte rot;
private final BaseComponent[] components;
private final ComponentWrapper component;
public MapIcon(@NotNull MapIconType type, int x, int y, int rot, @Nullable BaseComponent[] components) {
public MapIcon(@NotNull MapIconType type, int x, int y, int rot, @Nullable ComponentWrapper component) {
this.type = type;
this.x = (byte) (x - 128);
this.y = (byte) (y - 128);
this.rot = (byte) rot;
this.components = components;
this.component = component;
}
public MapIcon(@NotNull MapIconType type, int x, int y, int rot, @Nullable BaseComponent[] component) {
this(type, x, y, rot, new BaseComponentWrapper(component));
}
public MapIcon(MapIconType type, byte x, byte y, byte rot) {
this(type, x, y, rot, null);
this(type, x, y, rot, (ComponentWrapper) null);
}
@NotNull
@ -42,8 +48,8 @@ public class MapIcon {
}
@Nullable
public BaseComponent[] getComponents() {
return components;
public ComponentWrapper getComponent() {
return component;
}
public enum MapIconType {

@ -5,8 +5,8 @@ import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory;
import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils;
import de.studiocode.inventoryaccess.abstraction.util.ItemUtils;
import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionUtils;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
@ -22,9 +22,9 @@ public class InventoryAccess {
private static final Class<CartographyInventory> CARTOGRAPHY_INVENTORY_CLASS = ReflectionUtils.getImplClass("inventory.CartographyInventoryImpl");
private static final Constructor<AnvilInventory> ANVIL_INVENTORY_CONSTRUCTOR =
ReflectionUtils.getConstructor(ANVIL_INVENTORY_CLASS, false, Player.class, BaseComponent[].class, Consumer.class);
ReflectionUtils.getConstructor(ANVIL_INVENTORY_CLASS, false, Player.class, ComponentWrapper.class, Consumer.class);
private static final Constructor<CartographyInventory> CARTOGRAPHY_INVENTORY_CONSTRUCTOR =
ReflectionUtils.getConstructor(CARTOGRAPHY_INVENTORY_CLASS, false, Player.class, BaseComponent[].class);
ReflectionUtils.getConstructor(CARTOGRAPHY_INVENTORY_CLASS, false, Player.class, ComponentWrapper.class);
private static final InventoryUtils INVENTORY_UTILS = ReflectionUtils.constructEmpty(INVENTORY_UTILS_CLASS);
private static final ItemUtils ITEM_UTILS = ReflectionUtils.constructEmpty(ITEM_UTILS_CLASS);
@ -61,12 +61,12 @@ public class InventoryAccess {
* Creates a new {@link AnvilInventory}.
*
* @param player The {@link Player} that should see this {@link AnvilInventory}
* @param title The inventory title as a {@link BaseComponent BaseComponent[]}
* @param title The inventory title
* @param renameHandler A {@link Consumer} that is called whenever the {@link Player}
* types something in the renaming section of the anvil
* @return The {@link AnvilInventory}
*/
public static AnvilInventory createAnvilInventory(@NotNull Player player, @NotNull BaseComponent[] title, Consumer<String> renameHandler) {
public static AnvilInventory createAnvilInventory(@NotNull Player player, @NotNull ComponentWrapper title, Consumer<String> renameHandler) {
return ReflectionUtils.construct(ANVIL_INVENTORY_CONSTRUCTOR, player, title, renameHandler);
}
@ -74,10 +74,10 @@ public class InventoryAccess {
* Creates a new {@link CartographyInventory}.
*
* @param player The {@link Player} that should see this {@link CartographyInventory}
* @param title The inventory title as a {@link BaseComponent BaseComponent[]}
* @param title The inventory title
* @return The {@link CartographyInventory}
*/
public static CartographyInventory createCartographyInventory(@NotNull Player player, @NotNull BaseComponent[] title) {
public static CartographyInventory createCartographyInventory(@NotNull Player player, @NotNull ComponentWrapper title) {
return ReflectionUtils.construct(CARTOGRAPHY_INVENTORY_CONSTRUCTOR, player, title);
}

@ -1,5 +1,7 @@
package de.studiocode.invui.resourcepack;
import de.studiocode.inventoryaccess.component.BaseComponentWrapper;
import de.studiocode.inventoryaccess.component.ComponentWrapper;
import de.studiocode.inventoryaccess.util.ReflectionRegistry;
import de.studiocode.inventoryaccess.util.VersionUtils;
import de.studiocode.inventoryaccess.version.InventoryAccess;
@ -37,7 +39,7 @@ public class ForceResourcePack implements Listener {
private final HashMap<Player, BukkitTask> tasks = new HashMap<>();
private String resourcePackUrl;
private BaseComponent[] prompt;
private ComponentWrapper prompt;
private byte[] hash;
private ForceResourcePack() {
@ -63,10 +65,21 @@ public class ForceResourcePack implements Listener {
* @param resourcePackUrl The ResourcePack URL String
* @param prompt The prompt to be displayed (since 1.17)
*/
public void setResourcePack(@Nullable String resourcePackUrl, @Nullable BaseComponent[] prompt) {
public void setResourcePack(@Nullable String resourcePackUrl, @Nullable ComponentWrapper prompt) {
setResourcePack(resourcePackUrl, prompt, true);
}
/**
* Sets the URL String for the custom ResourcePack every {@link Player} is required to download.
* Can be set to null to stop forcing the Resource Pack.
*
* @param resourcePackUrl The ResourcePack URL String
* @param prompt The prompt to be displayed (since 1.17)
*/
public void setResourcePack(@Nullable String resourcePackUrl, @Nullable BaseComponent[] prompt) {
setResourcePack(resourcePackUrl, new BaseComponentWrapper(prompt), true);
}
/**
* Sets the URL String for the custom ResourcePack every {@link Player} is required to download.
* Can be set to null to stop forcing the Resource Pack.
@ -75,7 +88,7 @@ public class ForceResourcePack implements Listener {
* @param prompt The prompt to be displayed (since 1.17)
* @param sendToOnlinePlayers If the resource pack should also be sent to all currently online players
*/
public void setResourcePack(@Nullable String resourcePackUrl, @Nullable BaseComponent[] prompt, boolean sendToOnlinePlayers) {
public void setResourcePack(@Nullable String resourcePackUrl, @Nullable ComponentWrapper prompt, boolean sendToOnlinePlayers) {
this.prompt = prompt;
if (resourcePackUrl != null) {
@ -93,6 +106,18 @@ public class ForceResourcePack implements Listener {
}
}
/**
* Sets the URL String for the custom ResourcePack every {@link Player} is required to download.
* Can be set to null to stop forcing the Resource Pack.
*
* @param resourcePackUrl The ResourcePack URL String
* @param prompt The prompt to be displayed (since 1.17)
* @param sendToOnlinePlayers If the resource pack should also be sent to all currently online players
*/
public void setResourcePack(@Nullable String resourcePackUrl, @Nullable BaseComponent[] prompt, boolean sendToOnlinePlayers) {
setResourcePack(resourcePackUrl, new BaseComponentWrapper(prompt), sendToOnlinePlayers);
}
public void sendResourcePack(Player player) {
if (VersionUtils.isServerHigherOrEqual("1.17.0")) {
InventoryAccess.getPlayerUtils().sendResourcePack(player, resourcePackUrl, hash, prompt, true);