Skip to content

Commit 78f950b

Browse files
committed
Re-work on ItemStackContainer; Separate out Lore
1 parent 8dc587f commit 78f950b

File tree

12 files changed

+135
-79
lines changed

12 files changed

+135
-79
lines changed

bukkit/src/main/java/io/github/rothes/protocolstringreplacer/api/replacer/ReplacerConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ default boolean handleScoreboardTeamSuffix() {
9393
default boolean handleItemStackNbt() {
9494
return false;
9595
}
96-
default boolean handleItemStackDisplay() {
96+
default boolean handleItemStackLore() {
9797
return false;
9898
}
9999
default boolean handleItemStackDisplayEntries() {

bukkit/src/main/java/io/github/rothes/protocolstringreplacer/packetlistener/server/AbstractServerPacketListener.java

Lines changed: 44 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ protected static String getReplacedText(@Nonnull PacketEvent packetEvent, @Nonnu
288288

289289
protected static ItemStack replaceItemStack(@Nonnull PacketEvent packetEvent, @Nonnull PsrUser user, @Nonnull ListenType listenType,
290290
@Nonnull ItemStack itemStack, List<ReplacerConfig> nbt,
291-
List<ReplacerConfig> display, List<ReplacerConfig> entries, boolean saveCache) {
291+
List<ReplacerConfig> lore, List<ReplacerConfig> entries, boolean saveCache) {
292292
try {
293293
// if (!itemStack.hasItemMeta()) {
294294
// return false;
@@ -302,7 +302,7 @@ protected static ItemStack replaceItemStack(@Nonnull PacketEvent packetEvent, @N
302302
ItemStackContainer container = new ItemStackContainer(itemStack);
303303

304304
if (!container.isFromCache()) {
305-
if (cacheItemStack(container, nbt, display, entries)) {
305+
if (cacheItemStack(container, nbt, lore, entries)) {
306306
return null;
307307
}
308308
container.reset();
@@ -327,7 +327,7 @@ protected static ItemStack replaceItemStack(@Nonnull PacketEvent packetEvent, @N
327327
user.saveUserMetaCache(original, itemStack);
328328
}
329329
if (user.isCapturing(listenType)) {
330-
captureItemStackInfo(user, original, listenType, nbt, display, entries);
330+
captureItemStackInfo(user, original, listenType, nbt, lore, entries);
331331
}
332332
return container.getResult();
333333
} catch (Throwable t) {
@@ -338,7 +338,7 @@ protected static ItemStack replaceItemStack(@Nonnull PacketEvent packetEvent, @N
338338

339339
private static void captureItemStackInfo(@Nonnull PsrUser user, @Nonnull ItemStack itemStack,
340340
@Nonnull ListenType listenType, List<ReplacerConfig> nbt,
341-
List<ReplacerConfig> display, List<ReplacerConfig> entries) {
341+
List<ReplacerConfig> lore, List<ReplacerConfig> entries) {
342342
ItemStackContainer container = new ItemStackContainer(itemStack, false);
343343
Material type = container.getItemType();
344344
CaptureInfo info = new CaptureInfoImpl();
@@ -356,19 +356,31 @@ private static void captureItemStackInfo(@Nonnull PsrUser user, @Nonnull ItemSta
356356
.event(new ClickEvent(ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 15 ?
357357
ClickEvent.Action.COPY_TO_CLIPBOARD : ClickEvent.Action.SUGGEST_COMMAND, jsons.get(0).getText()));
358358
ProtocolStringReplacer.getInstance().getReplacerManager().replaceJsonReplaceable(jsons.get(0), matchItemType(nbt, type));
359-
container.getResult();
359+
container.childrenResult();
360+
361+
// if (container.displayNamePeriod()) {
362+
// container.createJsons(container);
363+
// jsons = container.getJsons();
364+
// extraBuilder.append(" ").reset().append("[Name Json] ").color(ChatColor.GOLD)
365+
// .event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(jsons.get(0).getText() + "\n"
366+
// + PsrLocalization.getLocaledMessage("Sender.Commands.Capture.Capture-Info.Click-To-Copy"))))
367+
// .event(new ClickEvent(ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 15 ?
368+
// ClickEvent.Action.COPY_TO_CLIPBOARD : ClickEvent.Action.SUGGEST_COMMAND, jsons.get(0).getText()));
369+
// ProtocolStringReplacer.getInstance().getReplacerManager().replaceJsonReplaceable(jsons.get(0), matchItemType(lore, type));
370+
// container.childrenResult();
371+
// }
360372

361-
container.displayPeriod();
373+
container.lorePeriod();
362374
container.createJsons(container);
363375
jsons = container.getJsons();
364-
extraBuilder.append(" ").reset().append("[Display Json] ").color(ChatColor.GOLD)
376+
extraBuilder.append(" ").reset().append("[Lore Json] ").color(ChatColor.GOLD)
365377
.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(jsons.get(0).getText() + "\n"
366378
+ PsrLocalization.getLocaledMessage("Sender.Commands.Capture.Capture-Info.Click-To-Copy"))))
367379
.event(new ClickEvent(ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 15 ?
368380
ClickEvent.Action.COPY_TO_CLIPBOARD : ClickEvent.Action.SUGGEST_COMMAND, jsons.get(0).getText()));
369381
info.setExtra(extraBuilder.create());
370-
ProtocolStringReplacer.getInstance().getReplacerManager().replaceJsonReplaceable(jsons.get(0), matchItemType(display, type));
371-
container.getResult();
382+
ProtocolStringReplacer.getInstance().getReplacerManager().replaceJsonReplaceable(jsons.get(0), matchItemType(lore, type));
383+
container.childrenResult();
372384

373385
container.entriesPeriod();
374386
container.createJsons(container);
@@ -423,37 +435,45 @@ private static void captureItemStackInfo(@Nonnull PsrUser user, @Nonnull ItemSta
423435
user.addCaptureInfo(listenType, info);
424436
}
425437

426-
private static boolean cacheItemStack(@Nonnull ItemStackContainer container, List<ReplacerConfig> nbt,
427-
List<ReplacerConfig> display, List<ReplacerConfig> entries) {
428-
ReplacerManager replacerManager = ProtocolStringReplacer.getInstance().getReplacerManager();
429-
Material type = container.getItemType();
430-
431-
List<ReplacerConfig> filtered = matchItemType(nbt, type);
438+
private static boolean handleItemStackPeriod(ReplacerManager replacerManager, Material type,
439+
ItemStackContainer container, List<ReplacerConfig> configs) {
440+
List<ReplacerConfig> filtered = matchItemType(configs, type);
432441
container.createDefaultChildren();
433442
container.createJsons(container);
434443
if (checkBlocked(container.getJsons().get(0).getText(), filtered, replacerManager)) {
435444
container.getMetaCache().setBlocked(true);
436445
return true;
437446
}
438447
replacerManager.replaceJsonReplaceable(container.getJsons().get(0), filtered);
439-
container.getResult();
448+
container.childrenResult();
449+
return false;
450+
}
440451

441-
filtered = matchItemType(display, type);
442-
container.displayPeriod();
443-
container.createJsons(container);
444-
if (checkBlocked(container.getJsons().get(0).getText(), filtered, replacerManager)) {
445-
container.getMetaCache().setBlocked(true);
452+
private static boolean cacheItemStack(@Nonnull ItemStackContainer container, List<ReplacerConfig> nbt,
453+
List<ReplacerConfig> display, List<ReplacerConfig> entries) {
454+
ReplacerManager replacerManager = ProtocolStringReplacer.getInstance().getReplacerManager();
455+
Material type = container.getItemType();
456+
457+
container.createDefaultChildren();
458+
if (handleItemStackPeriod(replacerManager, type, container, nbt)) {
459+
return true;
460+
}
461+
// if (container.displayNamePeriod()) {
462+
// if (handleItemStackPeriod(replacerManager, type, container, display)) {
463+
// return true;
464+
// }
465+
// }
466+
container.lorePeriod();
467+
if (handleItemStackPeriod(replacerManager, type, container, display)) {
446468
return true;
447469
}
448-
replacerManager.replaceJsonReplaceable(container.getJsons().get(0), filtered);
449-
container.getResult();
450470

451471
container.entriesPeriod();
452472
container.createJsons(container);
453473

454474
boolean direct = false;
455475

456-
filtered = matchItemType(entries, type);
476+
List<ReplacerConfig> filtered = matchItemType(entries, type);
457477
for (Replaceable json : container.getJsons()) {
458478
StringBuilder sb = new StringBuilder();
459479
try {

bukkit/src/main/java/io/github/rothes/protocolstringreplacer/packetlistener/server/itemstack/AbstractServerItemPacketListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ public abstract class AbstractServerItemPacketListener extends AbstractServerPac
1313
protected final BiPredicate<ReplacerConfig, PsrUser> itemNbtFilter =
1414
(replacerConfig, user) -> containType(replacerConfig)
1515
&& replacerConfig.handleItemStackNbt() && checkFilter(user, replacerConfig) && checkWindowTitle(user, replacerConfig);
16-
protected final BiPredicate<ReplacerConfig, PsrUser> itemDisplayFilter =
16+
protected final BiPredicate<ReplacerConfig, PsrUser> itemLoreFilter =
1717
(replacerConfig, user) -> containType(replacerConfig)
18-
&& replacerConfig.handleItemStackDisplay() && checkFilter(user, replacerConfig) && checkWindowTitle(user, replacerConfig);
18+
&& replacerConfig.handleItemStackLore() && checkFilter(user, replacerConfig) && checkWindowTitle(user, replacerConfig);
1919
protected final BiPredicate<ReplacerConfig, PsrUser> itemEntriesFilter = (replacerConfig, user) -> containType(replacerConfig)
2020
&& replacerConfig.handleItemStackDisplayEntries() && checkFilter(user, replacerConfig) && checkWindowTitle(user, replacerConfig);
2121

bukkit/src/main/java/io/github/rothes/protocolstringreplacer/packetlistener/server/itemstack/SetSlot.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ protected void process(@NotNull PacketEvent packetEvent) {
2424
}
2525
ReplacerManager replacerManager = ProtocolStringReplacer.getInstance().getReplacerManager();
2626
List<ReplacerConfig> nbt = replacerManager.getAcceptedReplacers(user, itemNbtFilter);
27-
List<ReplacerConfig> display = replacerManager.getAcceptedReplacers(user, itemDisplayFilter);
27+
List<ReplacerConfig> lore = replacerManager.getAcceptedReplacers(user, itemLoreFilter);
2828
List<ReplacerConfig> entries = replacerManager.getAcceptedReplacers(user, itemEntriesFilter);
2929

3030
ItemStack itemStack = packetEvent.getPacket().getItemModifier().read(0);
31-
ItemStack replaced = replaceItemStack(packetEvent, user, listenType, itemStack, nbt, display, entries, true);
31+
ItemStack replaced = replaceItemStack(packetEvent, user, listenType, itemStack, nbt, lore, entries, true);
3232
packetEvent.getPacket().getItemModifier().write(0, replaced);
3333
}
3434

bukkit/src/main/java/io/github/rothes/protocolstringreplacer/replacer/FileReplacerConfig.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public class FileReplacerConfig implements ReplacerConfig {
5858
private boolean handleScoreboardTeamSuffix;
5959

6060
private boolean handleItemStackNbt;
61-
private boolean handleItemStackDisplay;
61+
private boolean handleItemStackLore;
6262
private boolean handleItemStackDisplayEntries;
6363
private Set<Material> acceptedItemTypes;
6464
private HashSet<String> locales;
@@ -364,7 +364,7 @@ private void loadOptionalFilters() {
364364
handleScoreboardTeamSuffix = configuration.getBoolean("Options.Filter.ScoreBoard.Handle-Team-Suffix", false);
365365

366366
handleItemStackNbt = configuration.getBoolean("Options.Filter.ItemStack.Handle-Nbt-Compound", false);
367-
handleItemStackDisplay = configuration.getBoolean("Options.Filter.ItemStack.Handle-Nbt-Display-Compound", false);
367+
handleItemStackLore = configuration.getBoolean("Options.Filter.ItemStack.Handle-Nbt-Lore-List", false);
368368
handleItemStackDisplayEntries = configuration.getBoolean("Options.Filter.ItemStack.Handle-Nbt-Display-Entries", true);
369369
List<String> materialStrList = configuration.getStringList("Options.Filter.ItemStack.Handle-Item-Types");
370370
if (materialStrList.isEmpty()) {
@@ -465,8 +465,8 @@ public boolean handleItemStackNbt() {
465465
}
466466

467467
@Override
468-
public boolean handleItemStackDisplay() {
469-
return handleItemStackDisplay;
468+
public boolean handleItemStackLore() {
469+
return handleItemStackLore;
470470
}
471471

472472
@Override
@@ -512,7 +512,7 @@ public String toString() {
512512
", handleScoreboardTeamPrefix=" + handleScoreboardTeamPrefix +
513513
", handleScoreboardTeamSuffix=" + handleScoreboardTeamSuffix +
514514
", handleItemStackNbt=" + handleItemStackNbt +
515-
", handleItemStackDisplay=" + handleItemStackDisplay +
515+
", handleItemStackDisplay=" + handleItemStackLore +
516516
", handleItemStackDisplayEntries=" + handleItemStackDisplayEntries +
517517
", acceptedItemTypes=" + acceptedItemTypes +
518518
", locales=" + locales +

bukkit/src/main/java/io/github/rothes/protocolstringreplacer/upgrade/UpgradeHandler5To6.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ protected void upgradeReplacerConfig(@NotNull File file, @NotNull YamlConfigurat
3131
renameNode(config, "Options.Filter.ScoreBoard.Replace-Team-Prefix", "Options.Filter.ScoreBoard.Handle-Team-Prefix");
3232
renameNode(config, "Options.Filter.ScoreBoard.Replace-Team-Suffix", "Options.Filter.ScoreBoard.Handle-Team-Suffix");
3333
config.set("Options.Filter.ItemStack.Handle-Nbt-Compound", false);
34-
config.set("Options.Filter.ItemStack.Handle-Nbt-Display-Compound", false);
34+
config.set("Options.Filter.ItemStack.Handle-Nbt-Lore-List", false);
3535
config.set("Options.Filter.ItemStack.Handle-Nbt-Display-Entries", true);
3636
try {
3737
config.save(file);

bukkit/src/main/kotlin/io/github/rothes/protocolstringreplacer/packetlistener/server/itemstack/MerchantTradeList.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ class MerchantTradeList : AbstractServerItemPacketListener(PacketType.Play.Serve
2828

2929
val replacerManager = ProtocolStringReplacer.getInstance().replacerManager
3030
val nbt = replacerManager.getAcceptedReplacers(user, itemNbtFilter)
31-
val display = replacerManager.getAcceptedReplacers(user, itemDisplayFilter)
31+
val lore = replacerManager.getAcceptedReplacers(user, itemLoreFilter)
3232
val entries = replacerManager.getAcceptedReplacers(user, itemEntriesFilter)
3333

3434
merchantRecipeLists[0] = merchantRecipeLists[0].map { recipe ->
3535
MerchantRecipe(
36-
replaceItemStack(packetEvent, user, listenType, recipe.result, nbt, display, entries, true) ?: return,
36+
replaceItemStack(packetEvent, user, listenType, recipe.result, nbt, lore, entries, true) ?: return,
3737
recipe.uses,
3838
recipe.maxUses,
3939
recipe.hasExperienceReward(),
@@ -43,7 +43,7 @@ class MerchantTradeList : AbstractServerItemPacketListener(PacketType.Play.Serve
4343
recipe.specialPrice
4444
).also {
4545
it.ingredients = recipe.ingredients.map { item ->
46-
replaceItemStack(packetEvent, user, listenType, item!!, nbt, display, entries, false) ?: return
46+
replaceItemStack(packetEvent, user, listenType, item!!, nbt, lore, entries, false) ?: return
4747
}
4848
}
4949
}

bukkit/src/main/kotlin/io/github/rothes/protocolstringreplacer/packetlistener/server/itemstack/WindowItems.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class WindowItems : AbstractServerItemPacketListener(PacketType.Play.Server.WIND
1515
user.clearUserMetaCache()
1616
val replacerManager = ProtocolStringReplacer.getInstance().replacerManager
1717
val nbt = replacerManager.getAcceptedReplacers(user, itemNbtFilter)
18-
val display = replacerManager.getAcceptedReplacers(user, itemDisplayFilter)
18+
val lore = replacerManager.getAcceptedReplacers(user, itemLoreFilter)
1919
val entries = replacerManager.getAcceptedReplacers(user, itemEntriesFilter)
2020

2121
var saveMeta = !user.isInAnvil
@@ -26,7 +26,7 @@ class WindowItems : AbstractServerItemPacketListener(PacketType.Play.Server.WIND
2626
saveMeta = true
2727
return@map itemStack
2828
}
29-
replaceItemStack(packetEvent, user, listenType, itemStack, nbt, display, entries, saveMeta).also {
29+
replaceItemStack(packetEvent, user, listenType, itemStack, nbt, lore, entries, saveMeta).also {
3030
saveMeta = true
3131
} ?: return
3232
}.map {

bukkit/src/main/kotlin/io/github/rothes/protocolstringreplacer/packetlistener/server/itemstack/WindowItemsPost11.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class WindowItemsPost11 : AbstractServerItemPacketListener(PacketType.Play.Serve
1414
user.clearUserMetaCache()
1515
val replacerManager = ProtocolStringReplacer.getInstance().replacerManager
1616
val nbt = replacerManager.getAcceptedReplacers(user, itemNbtFilter)
17-
val display = replacerManager.getAcceptedReplacers(user, itemDisplayFilter)
17+
val lore = replacerManager.getAcceptedReplacers(user, itemLoreFilter)
1818
val entries = replacerManager.getAcceptedReplacers(user, itemEntriesFilter)
1919

2020
val itemListModifier = packetEvent.packet.itemListModifier
@@ -24,7 +24,7 @@ class WindowItemsPost11 : AbstractServerItemPacketListener(PacketType.Play.Serve
2424
saveMeta = true
2525
return@map itemStack
2626
}
27-
replaceItemStack(packetEvent, user, listenType, itemStack, nbt, display, entries, saveMeta).also {
27+
replaceItemStack(packetEvent, user, listenType, itemStack, nbt, lore, entries, saveMeta).also {
2828
saveMeta = true
2929
} ?: return
3030
}

0 commit comments

Comments
 (0)