1.21.5
Co-authored-by: Bjarne Koll <git@lynxplay.dev> Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com> Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Co-authored-by: MiniDigger | Martin <admin@minidigger.dev> Co-authored-by: Nassim Jahnke <nassim@njahnke.dev> Co-authored-by: Noah van der Aa <ndvdaa@gmail.com> Co-authored-by: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> Co-authored-by: Shane Freeder <theboyetronic@gmail.com> Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com> Co-authored-by: Tamion <70228790+notTamion@users.noreply.github.com> Co-authored-by: Warrior <50800980+Warriorrrr@users.noreply.github.com>
This commit is contained in:
@@ -7,7 +7,6 @@ import com.mojang.serialization.DynamicOps;
|
||||
import com.mojang.serialization.JavaOps;
|
||||
import com.mojang.serialization.JsonOps;
|
||||
import io.papermc.paper.util.MethodParameterSource;
|
||||
import java.io.IOException;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
@@ -35,11 +34,9 @@ import net.minecraft.nbt.ListTag;
|
||||
import net.minecraft.nbt.NbtOps;
|
||||
import net.minecraft.nbt.Tag;
|
||||
import net.minecraft.network.chat.ComponentSerialization;
|
||||
import net.minecraft.resources.RegistryOps;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.bukkit.support.RegistryHelper;
|
||||
import org.bukkit.support.environment.VanillaFeature;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -85,7 +82,7 @@ class AdventureCodecsTest {
|
||||
void testTextColor() {
|
||||
final TextColor color = color(0x1d38df);
|
||||
final Tag result = TEXT_COLOR_CODEC.encodeStart(NbtOps.INSTANCE, color).result().orElseThrow();
|
||||
assertEquals(color.asHexString(), result.getAsString());
|
||||
assertEquals("\"" + color.asHexString() + "\"", result.toString());
|
||||
final net.minecraft.network.chat.TextColor nms = net.minecraft.network.chat.TextColor.CODEC.decode(NbtOps.INSTANCE, result).result().orElseThrow().getFirst();
|
||||
assertEquals(color.value(), nms.getValue());
|
||||
}
|
||||
@@ -94,7 +91,7 @@ class AdventureCodecsTest {
|
||||
void testNamedTextColor() {
|
||||
final NamedTextColor color = NamedTextColor.BLUE;
|
||||
final Tag result = TEXT_COLOR_CODEC.encodeStart(NbtOps.INSTANCE, color).result().orElseThrow();
|
||||
assertEquals(NamedTextColor.NAMES.keyOrThrow(color), result.getAsString());
|
||||
assertEquals("\"" + NamedTextColor.NAMES.keyOrThrow(color) + "\"", result.toString());
|
||||
final net.minecraft.network.chat.TextColor nms = net.minecraft.network.chat.TextColor.CODEC.decode(NbtOps.INSTANCE, result).result().orElseThrow().getFirst();
|
||||
assertEquals(color.value(), nms.getValue());
|
||||
}
|
||||
@@ -103,7 +100,7 @@ class AdventureCodecsTest {
|
||||
void testKey() {
|
||||
final Key key = key("hello", "there");
|
||||
final Tag result = KEY_CODEC.encodeStart(NbtOps.INSTANCE, key).result().orElseThrow();
|
||||
assertEquals(key.asString(), result.getAsString());
|
||||
assertEquals("\"" + key.asString() + "\"", result.toString());
|
||||
final ResourceLocation location = ResourceLocation.CODEC.decode(NbtOps.INSTANCE, result).result().orElseThrow().getFirst();
|
||||
assertEquals(key.asString(), location.toString());
|
||||
}
|
||||
@@ -111,37 +108,49 @@ class AdventureCodecsTest {
|
||||
@ParameterizedTest(name = PARAMETERIZED_NAME)
|
||||
@EnumSource(value = ClickEvent.Action.class, mode = EnumSource.Mode.EXCLUDE, names = {"OPEN_FILE"})
|
||||
void testClickEvent(final ClickEvent.Action action) {
|
||||
final ClickEvent event = ClickEvent.clickEvent(action, RandomStringUtils.randomAlphanumeric(20));
|
||||
final ClickEvent event = ClickEvent.clickEvent(action, action.name().equals("OPEN_URL") ? "https://google.com" : "1337");
|
||||
final Tag result = CLICK_EVENT_CODEC.encodeStart(NbtOps.INSTANCE, event).result().orElseThrow();
|
||||
final net.minecraft.network.chat.ClickEvent nms = net.minecraft.network.chat.ClickEvent.CODEC.decode(NbtOps.INSTANCE, result).result().orElseThrow().getFirst();
|
||||
assertEquals(event.action().toString(), nms.getAction().getSerializedName());
|
||||
assertEquals(event.value(), nms.getValue());
|
||||
assertEquals(event.action().toString(), nms.action().getSerializedName());
|
||||
switch (nms) {
|
||||
case net.minecraft.network.chat.ClickEvent.OpenUrl(java.net.URI uri) ->
|
||||
assertEquals(event.value(), uri.toString());
|
||||
case net.minecraft.network.chat.ClickEvent.SuggestCommand(String command) ->
|
||||
assertEquals(event.value(), command);
|
||||
case net.minecraft.network.chat.ClickEvent.RunCommand(String command) ->
|
||||
assertEquals(event.value(), command);
|
||||
case net.minecraft.network.chat.ClickEvent.CopyToClipboard(String value) ->
|
||||
assertEquals(event.value(), value);
|
||||
case net.minecraft.network.chat.ClickEvent.ChangePage(int page) ->
|
||||
assertEquals(event.value(), String.valueOf(page));
|
||||
default -> throw new AssertionError("Unexpected ClickEvent type: " + nms.getClass());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testShowTextHoverEvent() {
|
||||
final HoverEvent<Component> hoverEvent = HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, text("hello"));
|
||||
final Tag result = HOVER_EVENT_CODEC.encodeStart(NbtOps.INSTANCE, hoverEvent).result().orElseThrow();
|
||||
final net.minecraft.network.chat.HoverEvent nms = net.minecraft.network.chat.HoverEvent.CODEC.decode(NbtOps.INSTANCE, result).result().orElseThrow().getFirst();
|
||||
assertEquals(hoverEvent.action().toString(), nms.getAction().getSerializedName());
|
||||
assertNotNull(nms.getValue(net.minecraft.network.chat.HoverEvent.Action.SHOW_TEXT));
|
||||
final net.minecraft.network.chat.HoverEvent.ShowText nms = (net.minecraft.network.chat.HoverEvent.ShowText) net.minecraft.network.chat.HoverEvent.CODEC.decode(NbtOps.INSTANCE, result).result().orElseThrow().getFirst();
|
||||
assertEquals(hoverEvent.action().toString(), nms.action().getSerializedName());
|
||||
assertEquals("hello", nms.value().getString());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testShowItemHoverEvent() throws IOException {
|
||||
void testShowItemHoverEvent() {
|
||||
final ItemStack stack = new ItemStack(Items.PUMPKIN, 3);
|
||||
stack.set(DataComponents.CUSTOM_NAME, net.minecraft.network.chat.Component.literal("NAME"));
|
||||
final HoverEvent<HoverEvent.ShowItem> hoverEvent = HoverEvent.showItem(key("minecraft:pumpkin"), 3, PaperAdventure.asAdventure(stack.getComponentsPatch()));
|
||||
final Tag result = HOVER_EVENT_CODEC.encodeStart(NbtOps.INSTANCE, hoverEvent).result().orElseThrow();
|
||||
final DataResult<Pair<net.minecraft.network.chat.HoverEvent, Tag>> dataResult = net.minecraft.network.chat.HoverEvent.CODEC.decode(NbtOps.INSTANCE, result);
|
||||
assertTrue(dataResult.result().isPresent(), () -> dataResult + " result is not present");
|
||||
final net.minecraft.network.chat.HoverEvent nms = dataResult.result().orElseThrow().getFirst();
|
||||
assertEquals(hoverEvent.action().toString(), nms.getAction().getSerializedName());
|
||||
final net.minecraft.network.chat.HoverEvent.ItemStackInfo value = nms.getValue(net.minecraft.network.chat.HoverEvent.Action.SHOW_ITEM);
|
||||
assertNotNull(value);
|
||||
assertEquals(hoverEvent.value().count(), value.count);
|
||||
assertEquals(hoverEvent.value().item().asString(), value.item.unwrapKey().orElseThrow().location().toString());
|
||||
assertEquals(stack.getComponentsPatch(), value.components);
|
||||
final net.minecraft.network.chat.HoverEvent.ShowItem nms = (net.minecraft.network.chat.HoverEvent.ShowItem) dataResult.result().orElseThrow().getFirst();
|
||||
assertEquals(hoverEvent.action().toString(), nms.action().getSerializedName());
|
||||
final ItemStack item = nms.item();
|
||||
assertNotNull(item);
|
||||
assertEquals(hoverEvent.value().count(), item.getCount());
|
||||
assertEquals(hoverEvent.value().item().asString(), item.getItem().toString());
|
||||
assertEquals(stack.getComponentsPatch(), item.getComponentsPatch());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -151,12 +160,12 @@ class AdventureCodecsTest {
|
||||
final Tag result = HOVER_EVENT_CODEC.encodeStart(NbtOps.INSTANCE, hoverEvent).result().orElseThrow();
|
||||
final DataResult<Pair<net.minecraft.network.chat.HoverEvent, Tag>> dataResult = net.minecraft.network.chat.HoverEvent.CODEC.decode(NbtOps.INSTANCE, result);
|
||||
assertTrue(dataResult.result().isPresent(), () -> dataResult + " result is not present");
|
||||
final net.minecraft.network.chat.HoverEvent nms = dataResult.result().orElseThrow().getFirst();
|
||||
assertEquals(hoverEvent.action().toString(), nms.getAction().getSerializedName());
|
||||
final net.minecraft.network.chat.HoverEvent.EntityTooltipInfo value = nms.getValue(net.minecraft.network.chat.HoverEvent.Action.SHOW_ENTITY);
|
||||
final net.minecraft.network.chat.HoverEvent.ShowEntity nms = (net.minecraft.network.chat.HoverEvent.ShowEntity) dataResult.result().orElseThrow().getFirst();
|
||||
assertEquals(hoverEvent.action().toString(), nms.action().getSerializedName());
|
||||
final net.minecraft.network.chat.HoverEvent.EntityTooltipInfo value = nms.entity();
|
||||
assertNotNull(value);
|
||||
assertEquals(hoverEvent.value().type().asString(), BuiltInRegistries.ENTITY_TYPE.getKey(value.type).toString());
|
||||
assertEquals(hoverEvent.value().id(), value.id);
|
||||
assertEquals(hoverEvent.value().id(), value.uuid);
|
||||
assertEquals("NAME", value.name.orElseThrow().getString());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user