Skip to content
This repository has been archived by the owner on Mar 7, 2024. It is now read-only.

Commit

Permalink
Fix 1.20.2+ Errors
Browse files Browse the repository at this point in the history
  • Loading branch information
gmitch215 committed Dec 31, 2023
1 parent 79a34bb commit 4bcb3f1
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public boolean isDone() {
@Override
public @NotNull Map<String, ACriteriaProgress> getCriteria() {
try {
Field criteriaF = AdvancementProgress.class.getDeclaredField("a");
Field criteriaF = AdvancementProgress.class.getDeclaredField("e");
criteriaF.setAccessible(true);
Map<String, CriterionProgress> criteria = (Map<String, CriterionProgress>) criteriaF.get(handle);
return criteria.entrySet()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public boolean isDone() {
@Override
public @NotNull Map<String, ACriteriaProgress> getCriteria() {
try {
Field criteriaF = AdvancementProgress.class.getDeclaredField("a");
Field criteriaF = AdvancementProgress.class.getDeclaredField("e");
criteriaF.setAccessible(true);
Map<String, CriterionProgress> criteria = (Map<String, CriterionProgress>) criteriaF.get(handle);
return criteria.entrySet()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -868,7 +868,7 @@ public static AdvancementRewards toNMS(AReward reward) {

public static net.minecraft.advancements.AdvancementHolder toNMS(Advancement a) {
if (a == null) return null;
if (manager.advancements.get(toNMS(a.getKey())) != null) return manager.advancements.get(toNMS(a.getKey()));
if (manager.tree().get(toNMS(a.getKey())) != null) return manager.tree().get(toNMS(a.getKey())).holder();

ADisplay display = a.getDisplay();
String title = display.getTitleAsString();
Expand All @@ -879,7 +879,7 @@ public static net.minecraft.advancements.AdvancementHolder toNMS(Advancement a)
if (a.getParent() == null && display.getBackgroundTexture() != null)
bg = new ResourceLocation(display.getBackgroundTexture());

DisplayInfo nmsDisplay = new DisplayInfo(toNMS(display.getIcon()), Component.literal(title), Component.literal(desc), Optional.of(bg), frame, a.hasFlag(AFlag.TOAST), a.hasFlag(AFlag.MESSAGE), a.hasFlag(AFlag.HIDDEN));
DisplayInfo nmsDisplay = new DisplayInfo(toNMS(display.getIcon()), Component.literal(title), Component.literal(desc), Optional.ofNullable(bg), frame, a.hasFlag(AFlag.TOAST), a.hasFlag(AFlag.MESSAGE), a.hasFlag(AFlag.HIDDEN));
nmsDisplay.setLocation(display.getX(), display.getY());

ResourceLocation parent = a.getParent() == null ? null : toNMS(a.getParent().getKey());
Expand Down Expand Up @@ -1166,23 +1166,14 @@ public static ATriggerPredicate.Location fromNMS(LocationPredicate p) {

public static AReward fromNMS(AdvancementRewards rewards) {
if (rewards == null) return AReward.EMPTY;
try {
Field experienceF = AdvancementRewards.class.getDeclaredField("b");
experienceF.setAccessible(true);
int experience = experienceF.getInt(rewards);

Field lootF = AdvancementRewards.class.getDeclaredField("c");
lootF.setAccessible(true);
ResourceLocation[] loot = (ResourceLocation[]) lootF.get(rewards);

return new AReward(
experience,
Arrays.stream(loot).map(Wrapper1_20_R3::fromNMS).collect(Collectors.toList()),
rewards.recipes().stream().map(Wrapper1_20_R3::fromNMS).collect(Collectors.toList())
);
} catch (ReflectiveOperationException e) {
throw new RuntimeException(e);
}
int experience = rewards.experience();
List<ResourceLocation> loot = rewards.loot();

return new AReward(
experience,
loot.stream().map(Wrapper1_20_R3::fromNMS).collect(Collectors.toList()),
rewards.recipes().stream().map(Wrapper1_20_R3::fromNMS).collect(Collectors.toList())
);
}

public static Advancement fromNMS(net.minecraft.advancements.AdvancementHolder holder) {
Expand All @@ -1205,7 +1196,7 @@ public static Advancement fromNMS(net.minecraft.advancements.AdvancementHolder h
.reward(fromNMS(a.rewards()))
.criteria(criteria);

if (a.parent().isPresent()) builder.parent(fromNMS(manager.advancements.get(a.parent().get())));
if (a.parent().isPresent()) builder.parent(fromNMS(manager.tree().get(a.parent().get()).holder()));
if (a.requirements().size() == 1) builder.flags(AFlag.MERGE_CRITERIA);
if (nmsDisplay.shouldAnnounceChat()) builder.flags(AFlag.MESSAGE);
if (nmsDisplay.shouldShowToast()) builder.flags(AFlag.TOAST);
Expand All @@ -1227,21 +1218,21 @@ public void update(Player p) {
public void register(Advancement a) {
net.minecraft.advancements.AdvancementHolder nms = toNMS(a);

if (manager.advancements.containsKey(nms.id())) throw new IllegalStateException("Advancement is already registered");
if (isRegistered(fromNMS(nms.id()))) throw new IllegalStateException("Advancement is already registered");
manager.tree().addAll(Set.of(nms));
}

@Override
public Advancement getAdvancement(NamespacedKey key) {
net.minecraft.advancements.AdvancementHolder nms = manager.advancements.get(toNMS(key));
net.minecraft.advancements.AdvancementHolder nms = manager.tree().get(toNMS(key)).holder();
if (nms == null) return null;

return fromNMS(nms);
}

@Override
public boolean isRegistered(NamespacedKey key) {
return manager.advancements.containsKey(toNMS(key));
return manager.tree().get(toNMS(key)) != null;
}

@Override
Expand Down Expand Up @@ -1290,7 +1281,7 @@ public void removeAdvancement(Player p, Set<NamespacedKey> key) {
public AProgress getProgress(Player p, NamespacedKey key) {
if (!isRegistered(key)) throw new IllegalArgumentException("Advancement is not registered");
ServerPlayer sp = toNMS(p);
net.minecraft.advancements.AdvancementHolder nms = manager.advancements.get(toNMS(key));
net.minecraft.advancements.AdvancementHolder nms = manager.tree().get(toNMS(key)).holder();

return new AProgress1_20_R3(p, nms, sp.getAdvancements().getOrStartProgress(nms));
}
Expand All @@ -1315,7 +1306,8 @@ public Advancement getSelectedTab(Player p) {
net.minecraft.advancements.Advancement lastSelectedTab = getObject(sp.getAdvancements(), "l", net.minecraft.advancements.Advancement.class);
if (lastSelectedTab == null) return null;

return fromNMS((manager.advancements.values().stream()
return fromNMS((manager.tree().nodes().stream()
.map(AdvancementNode::holder)
.filter(a -> a.value().equals(lastSelectedTab))
.findFirst()
.orElse(null)));
Expand Down

0 comments on commit 4bcb3f1

Please sign in to comment.