Skip to content

Commit

Permalink
1.20.2 part 3: essentials to be able to compile
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Sep 21, 2023
1 parent c381dc8 commit 6cad2cc
Show file tree
Hide file tree
Showing 21 changed files with 214 additions and 133 deletions.
Expand Up @@ -30,6 +30,7 @@
import com.google.common.collect.Iterables;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import com.mojang.authlib.yggdrasil.ProfileResult;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.HoverEvent;
Expand Down Expand Up @@ -193,10 +194,14 @@ public PlayerProfile fillPlayerProfile(PlayerProfile playerProfile) {
}
Property textures = profile.getProperties().containsKey("textures") ? Iterables.getFirst(profile.getProperties().get("textures"), null) : null;
if (textures == null || !textures.hasSignature() || profile.getName() == null || profile.getId() == null) {
profile = minecraftServer.getSessionService().fillProfileProperties(profile, true);
ProfileResult actualProfile = minecraftServer.getSessionService().fetchProfile(profile.getId(), true);
if (actualProfile == null) {
return null;
}
profile = actualProfile.profile();
textures = profile.getProperties().containsKey("textures") ? Iterables.getFirst(profile.getProperties().get("textures"), null) : null;
}
return new PlayerProfile(profile.getName(), profile.getId(), textures == null ? null : textures.getValue(), textures == null ? null : textures.getSignature());
return new PlayerProfile(profile.getName(), profile.getId(), textures == null ? null : textures.value(), textures == null ? null : textures.signature());
}
catch (Exception e) {
if (CoreConfiguration.debugVerbose) {
Expand Down Expand Up @@ -278,8 +283,8 @@ public PlayerProfile getPlayerProfile(Player player) {
GameProfile gameProfile = ((CraftPlayer) player).getProfile();
Property property = Iterables.getFirst(gameProfile.getProperties().get("textures"), null);
return new PlayerProfile(gameProfile.getName(), gameProfile.getId(),
property != null ? property.getValue() : null,
property != null ? property.getSignature() : null);
property != null ? property.value() : null,
property != null ? property.signature() : null);
}

@Override
Expand Down
Expand Up @@ -5,8 +5,8 @@ public class ReflectionMappingsInfo {
// Content generated by ReflectionMappingsGenerator - https://github.com/DenizenScript/ReflectionMappingsGenerator

// net.minecraft.advancements.AdvancementList
public static String AdvancementList_roots = "c";
public static String AdvancementList_tasks = "d";
public static String AdvancementList_roots = "(MISSING)"; // TODO: 1.20.2
public static String AdvancementList_tasks = "(MISSING)"; // TODO: 1.20.2

// net.minecraft.world.level.block.state.BlockBehaviour
public static String BlockBehaviour_explosionResistance = "aF";
Expand All @@ -19,21 +19,21 @@ public class ReflectionMappingsInfo {

// net.minecraft.world.entity.Entity
public static String Entity_onGround = "aJ";
public static String Entity_DATA_SHARED_FLAGS_ID = "an";
public static String Entity_DATA_SHARED_FLAGS_ID = "ao";
public static String Entity_DATA_CUSTOM_NAME = "aU";
public static String Entity_DATA_CUSTOM_NAME_VISIBLE = "aV";

// net.minecraft.world.entity.LivingEntity
public static String LivingEntity_attackStrengthTicker = "aQ";
public static String LivingEntity_autoSpinAttackTicks = "bz";
public static String LivingEntity_attackStrengthTicker = "aP";
public static String LivingEntity_autoSpinAttackTicks = "by";
public static String LivingEntity_setLivingEntityFlag_method = "c";

// net.minecraft.world.entity.player.Player
public static String Player_DATA_PLAYER_ABSORPTION_ID = "e";
public static String Player_DATA_PLAYER_MODE_CUSTOMISATION = "bL";
public static String Player_DATA_PLAYER_MODE_CUSTOMISATION = "bM";

// net.minecraft.server.level.ServerPlayer
public static String ServerPlayer_respawnForced = "cQ";
public static String ServerPlayer_respawnForced = "cU";

// net.minecraft.world.entity.monster.EnderMan
public static String EnderMan_DATA_CREEPY = "bV";
Expand Down Expand Up @@ -68,14 +68,17 @@ public class ReflectionMappingsInfo {
public static String BiomeSpecialEffects_waterFogColor = "d";

// net.minecraft.network.Connection
public static String Connection_receiving = "k";
public static String Connection_receiving = "l";

// net.minecraft.server.network.ServerGamePacketListenerImpl
public static String ServerGamePacketListenerImpl_aboveGroundTickCount = "H";
public static String ServerGamePacketListenerImpl_aboveGroundVehicleTickCount = "J";
public static String ServerGamePacketListenerImpl_connection = "h";
public static String ServerGamePacketListenerImpl_awaitingPositionFromClient = "D";
public static String ServerGamePacketListenerImpl_awaitingTeleport = "E";
public static String ServerGamePacketListenerImpl_aboveGroundTickCount = "F";
public static String ServerGamePacketListenerImpl_aboveGroundVehicleTickCount = "H";
public static String ServerGamePacketListenerImpl_awaitingPositionFromClient = "B";
public static String ServerGamePacketListenerImpl_awaitingTeleport = "C";


// net.minecraft.server.network.ServerCommonPacketListenerImpl
public static String ServerCommonPacketListenerImpl_connection = "c";

// net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket
public static String ClientboundPlayerAbilitiesPacket_walkingSpeed = "j";
Expand Down Expand Up @@ -110,7 +113,7 @@ public class ReflectionMappingsInfo {
public static String ClientboundLevelChunkPacketDataBlockEntityInfo_packedXZ = "a";
public static String ClientboundLevelChunkPacketDataBlockEntityInfo_y = "b";

// net.minecraft.network.protocol.syncher.SynchedEntityData
// net.minecraft.network.syncher.SynchedEntityData
public static String SynchedEntityData_itemsById = "e";

// net.minecraft.world.entity.projectile.FishingHook
Expand Down
@@ -1,8 +1,6 @@
package com.denizenscript.denizen.nms.v1_20.helpers;

import com.denizenscript.denizen.nms.interfaces.AdvancementHelper;
import com.denizenscript.denizen.nms.v1_20.ReflectionMappingsInfo;
import com.denizenscript.denizencore.utilities.ReflectionHelper;
import com.denizenscript.denizen.nms.v1_20.Handler;
import com.denizenscript.denizen.utilities.FormattedTextHelper;
import net.md_5.bungee.api.ChatColor;
Expand All @@ -21,30 +19,28 @@
import org.bukkit.craftbukkit.v1_20_R2.inventory.CraftItemStack;
import org.bukkit.entity.Player;

import java.lang.reflect.Field;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.*;

public class AdvancementHelperImpl extends AdvancementHelper {

private static final String IMPOSSIBLE_KEY = "impossible";
private static final Map<String, Criterion> IMPOSSIBLE_CRITERIA = Collections.singletonMap(IMPOSSIBLE_KEY, new Criterion(new ImpossibleTrigger.TriggerInstance()));
private static final Map<String, Criterion<?>> IMPOSSIBLE_CRITERIA = Collections.singletonMap(IMPOSSIBLE_KEY, new Criterion(new ImpossibleTrigger(), new ImpossibleTrigger.TriggerInstance()));
private static final String[][] IMPOSSIBLE_REQUIREMENTS = new String[][]{{IMPOSSIBLE_KEY}};

public static ServerAdvancementManager getAdvancementDataWorld() {
return ((CraftServer) Bukkit.getServer()).getServer().getAdvancements();
}

public static Field FIELD_ADVANCEMENTLIST_LISTENER = ReflectionHelper.getFields(AdvancementList.class).getFirstOfType(AdvancementList.Listener.class);
// TODO: 1.20.2: advancement registration is different now
//public static Field FIELD_ADVANCEMENTLIST_LISTENER = ReflectionHelper.getFields(AdvancementList.class).getFirstOfType(AdvancementList.Listener.class);

@Override
public void register(com.denizenscript.denizen.nms.util.Advancement advancement) {
if (advancement.temporary || advancement.registered) {
return;
}
Advancement nms = asNMSCopy(advancement);
/*
AdvancementHolder nms = asNMSCopy(advancement);
if (advancement.parent == null) {
Set<Advancement> roots = ReflectionHelper.getFieldValue(AdvancementList.class, ReflectionMappingsInfo.AdvancementList_roots, getAdvancementDataWorld().advancements);
roots.add(nms);
Expand All @@ -61,22 +57,24 @@ public void register(com.denizenscript.denizen.nms.util.Advancement advancement)
something.onAddAdvancementTask(nms);
}
}
getAdvancementDataWorld().advancements.advancements.put(nms.getId(), nms);
getAdvancementDataWorld().advancements.put(nms.id(), nms);
advancement.registered = true;
if (!advancement.hidden && advancement.parent != null) {
((CraftServer) Bukkit.getServer()).getHandle().broadcastAll(new ClientboundUpdateAdvancementsPacket(false,
Collections.singleton(nms), Collections.emptySet(), Collections.emptyMap()), (net.minecraft.world.entity.player.Player) null);
}
*/
}

@Override
public void unregister(com.denizenscript.denizen.nms.util.Advancement advancement) {
if (advancement.temporary || !advancement.registered) {
return;
}
Map<ResourceLocation, Advancement> advancements = getAdvancementDataWorld().advancements.advancements;
/*
Map<ResourceLocation, AdvancementHolder> advancements = getAdvancementDataWorld().advancements;
ResourceLocation key = asResourceLocation(advancement.key);
Advancement nms = advancements.get(key);
Advancement nms = advancements.get(key).value();
if (advancement.parent == null) {
Set<Advancement> roots = ReflectionHelper.getFieldValue(AdvancementList.class, ReflectionMappingsInfo.AdvancementList_roots, getAdvancementDataWorld().advancements);
roots.remove(nms);
Expand All @@ -89,6 +87,7 @@ public void unregister(com.denizenscript.denizen.nms.util.Advancement advancemen
advancement.registered = false;
((CraftServer) Bukkit.getServer()).getHandle().broadcastAll(new ClientboundUpdateAdvancementsPacket(false,
Collections.emptySet(), Collections.singleton(key), Collections.emptyMap()), (net.minecraft.world.entity.player.Player) null);
*/
}

@Override
Expand All @@ -98,25 +97,25 @@ public void grantPartial(com.denizenscript.denizen.nms.util.Advancement advancem
return;
}
if (advancement.temporary) {
Advancement nmsAdvancement = asNMSCopy(advancement);
AdvancementHolder nmsAdvancement = asNMSCopy(advancement);
AdvancementProgress progress = new AdvancementProgress();
Map<String, Criterion> criteria = new HashMap<>();
String[][] requirements = new String[advancement.length][];
for (int i = 0; i < advancement.length; i++) {
criteria.put(IMPOSSIBLE_KEY + i, new Criterion(new ImpossibleTrigger.TriggerInstance()));
criteria.put(IMPOSSIBLE_KEY + i, new Criterion(new ImpossibleTrigger(), new ImpossibleTrigger.TriggerInstance()));
requirements[i] = new String[] { IMPOSSIBLE_KEY + i };
}
progress.update(IMPOSSIBLE_CRITERIA, IMPOSSIBLE_REQUIREMENTS);
progress.update(new AdvancementRequirements(IMPOSSIBLE_REQUIREMENTS));
for (int i = 0; i < len; i++) {
progress.grantProgress(IMPOSSIBLE_KEY + i); // complete impossible criteria
}
PacketHelperImpl.send(player, new ClientboundUpdateAdvancementsPacket(false,
Collections.singleton(nmsAdvancement),
Collections.emptySet(),
Collections.singletonMap(nmsAdvancement.getId(), progress)));
Collections.singletonMap(nmsAdvancement.id(), progress)));
}
else {
Advancement nmsAdvancement = getAdvancementDataWorld().advancements.advancements.get(asResourceLocation(advancement.key));
AdvancementHolder nmsAdvancement = getAdvancementDataWorld().advancements.get(asResourceLocation(advancement.key));
for (int i = 0; i < len; i++) {
((CraftPlayer) player).getHandle().getAdvancements().award(nmsAdvancement, IMPOSSIBLE_KEY + i);
}
Expand All @@ -130,17 +129,17 @@ public void grant(com.denizenscript.denizen.nms.util.Advancement advancement, Pl
return;
}
if (advancement.temporary) {
Advancement nmsAdvancement = asNMSCopy(advancement);
AdvancementHolder nmsAdvancement = asNMSCopy(advancement);
AdvancementProgress progress = new AdvancementProgress();
progress.update(IMPOSSIBLE_CRITERIA, IMPOSSIBLE_REQUIREMENTS);
progress.update(new AdvancementRequirements(IMPOSSIBLE_REQUIREMENTS));
progress.grantProgress(IMPOSSIBLE_KEY); // complete impossible criteria
PacketHelperImpl.send(player, new ClientboundUpdateAdvancementsPacket(false,
Collections.singleton(nmsAdvancement),
Collections.emptySet(),
Collections.singletonMap(nmsAdvancement.getId(), progress)));
Collections.singletonMap(nmsAdvancement.id(), progress)));
}
else {
Advancement nmsAdvancement = getAdvancementDataWorld().advancements.advancements.get(asResourceLocation(advancement.key));
AdvancementHolder nmsAdvancement = getAdvancementDataWorld().advancements.get(asResourceLocation(advancement.key));
((CraftPlayer) player).getHandle().getAdvancements().award(nmsAdvancement, IMPOSSIBLE_KEY);
}
}
Expand All @@ -154,7 +153,7 @@ public void revoke(com.denizenscript.denizen.nms.util.Advancement advancement, P
Collections.emptyMap()));
}
else {
Advancement nmsAdvancement = getAdvancementDataWorld().advancements.advancements.get(asResourceLocation(advancement.key));
AdvancementHolder nmsAdvancement = getAdvancementDataWorld().advancements.get(asResourceLocation(advancement.key));
((CraftPlayer) player).getHandle().getAdvancements().revoke(nmsAdvancement, IMPOSSIBLE_KEY);
}
}
Expand All @@ -172,27 +171,29 @@ public void update(Player player) {
data.flushDirty(nmsPlayer); // load progress and update client
}

private static Advancement asNMSCopy(com.denizenscript.denizen.nms.util.Advancement advancement) {
private static AdvancementHolder asNMSCopy(com.denizenscript.denizen.nms.util.Advancement advancement) {
ResourceLocation key = asResourceLocation(advancement.key);
Advancement parent = advancement.parent != null
? getAdvancementDataWorld().advancements.advancements.get(asResourceLocation(advancement.parent))
AdvancementHolder parent = advancement.parent != null
? getAdvancementDataWorld().advancements.get(asResourceLocation(advancement.parent))
: null;
DisplayInfo display = new DisplayInfo(CraftItemStack.asNMSCopy(advancement.icon),
Handler.componentToNMS(FormattedTextHelper.parse(advancement.title, ChatColor.WHITE)), Handler.componentToNMS(FormattedTextHelper.parse(advancement.description, ChatColor.WHITE)),
asResourceLocation(advancement.background), FrameType.valueOf(advancement.frame.name()),
advancement.toast, advancement.announceToChat, advancement.hidden);
display.setLocation(advancement.xOffset, advancement.yOffset);
Map<String, Criterion> criteria = IMPOSSIBLE_CRITERIA;
Map<String, Criterion<?>> criteria = IMPOSSIBLE_CRITERIA;
String[][] requirements = IMPOSSIBLE_REQUIREMENTS;
if (advancement.length > 1) {
criteria = new HashMap<>();
requirements = new String[advancement.length][];
for (int i = 0; i < advancement.length; i++) {
criteria.put(IMPOSSIBLE_KEY + i, new Criterion(new ImpossibleTrigger.TriggerInstance()));
criteria.put(IMPOSSIBLE_KEY + i, new Criterion(new ImpossibleTrigger(), new ImpossibleTrigger.TriggerInstance()));
requirements[i] = new String[] { IMPOSSIBLE_KEY + i };
}
}
return new Advancement(key, parent, display, AdvancementRewards.EMPTY, criteria, requirements, false); // TODO: 1.20: do we want to ever enable telemetry?
AdvancementRequirements reqs = new AdvancementRequirements(requirements);
Advancement adv = new Advancement(Optional.of(parent.id()), Optional.of(display), AdvancementRewards.EMPTY, criteria, reqs, false); // TODO: 1.20: do we want to ever enable telemetry?
return new AdvancementHolder(key, adv);
}

private static ResourceLocation asResourceLocation(NamespacedKey key) {
Expand Down
Expand Up @@ -18,7 +18,7 @@
import net.minecraft.core.Holder;
import net.minecraft.core.HolderSet;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.network.protocol.game.ClientboundUpdateTagsPacket;
import net.minecraft.network.protocol.common.ClientboundUpdateTagsPacket;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.tags.TagKey;
Expand Down Expand Up @@ -95,7 +95,7 @@ public PlayerProfile getPlayerProfile(Skull skull) {
String name = profile.getName();
UUID id = profile.getId();
com.mojang.authlib.properties.Property property = Iterables.getFirst(profile.getProperties().get("textures"), null);
return new PlayerProfile(name, id, property != null ? property.getValue() : null);
return new PlayerProfile(name, id, property != null ? property.value() : null);
}

@Override
Expand Down
Expand Up @@ -14,6 +14,7 @@
import com.denizenscript.denizen.nms.interfaces.ItemProjectile;
import com.denizenscript.denizen.nms.util.PlayerProfile;
import com.denizenscript.denizencore.utilities.debugging.Debug;
import net.minecraft.server.level.ClientInformation;
import net.minecraft.server.level.ServerLevel;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
Expand Down Expand Up @@ -116,7 +117,7 @@ else if (skin == null && !name.matches(".*[^A-Za-z0-9_].*")) {
gameProfile.getProperties().put("textures",
new Property("textures", playerProfile.getTexture(), playerProfile.getTextureSignature()));

final EntityFakePlayerImpl fakePlayer = new EntityFakePlayerImpl(worldServer.getServer(), worldServer, gameProfile, doAdd);
final EntityFakePlayerImpl fakePlayer = new EntityFakePlayerImpl(worldServer.getServer(), worldServer, gameProfile, ClientInformation.createDefault(), doAdd);

fakePlayer.forceSetPositionRotation(location.getX(), location.getY(), location.getZ(),
location.getYaw(), location.getPitch());
Expand Down

0 comments on commit 6cad2cc

Please sign in to comment.