Skip to content

Commit

Permalink
Merge pull request #13 from TheWinABagel/1.20.4-fabric
Browse files Browse the repository at this point in the history
1.20.4 port
  • Loading branch information
DaFuqs authored Apr 9, 2024
2 parents c7c6918 + 28e551b commit 292002d
Show file tree
Hide file tree
Showing 19 changed files with 184 additions and 192 deletions.
7 changes: 6 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'fabric-loom' version '1.0-SNAPSHOT'
id 'fabric-loom' version '1.6-SNAPSHOT'
id 'maven-publish'
}

Expand All @@ -14,6 +14,8 @@ repositories {
mavenCentral()
maven { url "https://maven.shedaniel.me/" }
maven { url "https://maven.terraformersmc.com" }
maven { url "https://api.modrinth.com/maven/" }
maven { url "https://maven2.bai.lol" }
}

dependencies {
Expand All @@ -27,6 +29,9 @@ dependencies {

// dependencies
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"

modCompileOnly "maven.modrinth:jade:${project.jade_version}"
modCompileOnly "mcp.mobius.waila:wthit-api:fabric-${project.wthit_version}"
}

processResources {
Expand Down
13 changes: 8 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@
org.gradle.jvmargs = -Xmx2G

# Fabric Properties
minecraft_version=1.20.1
yarn_mappings=1.20.1+build.1
loader_version=0.14.23
minecraft_version=1.20.4
yarn_mappings=1.20.4+build.3
loader_version=0.15.9

# Mod Properties
mod_version = 1.3.6+1.20.1
mod_version = 1.3.7+1.20.4
maven_group = de.dafuqs.revelationary
archives_base_name = revelationary

# https://fabricmc.net/develop/
fabric_version=0.90.0+1.20.1
fabric_version=0.96.11+1.20.4

jade_version=fNHCa6bl
wthit_version=10.5.0
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Empty file modified gradlew
100644 → 100755
Empty file.
15 changes: 7 additions & 8 deletions src/main/java/de/dafuqs/revelationary/ClientAdvancements.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.advancement.Advancement;
import net.minecraft.advancement.AdvancementEntry;
import net.minecraft.advancement.AdvancementProgress;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientAdvancementManager;
Expand Down Expand Up @@ -48,7 +49,7 @@ public static boolean hasDone(Identifier identifier) {
ClientPlayNetworkHandler conn = MinecraftClient.getInstance().getNetworkHandler();
if (conn != null) {
ClientAdvancementManager cm = conn.getAdvancementHandler();
Advancement adv = cm.getManager().get(identifier);
Advancement adv = cm.getManager().get(identifier).getAdvancement();
if (adv != null) {
Map<Advancement, AdvancementProgress> progressMap = ((AccessorClientAdvancementManager) cm).getAdvancementProgresses();
AdvancementProgress progress = progressMap.get(adv);
Expand All @@ -62,14 +63,12 @@ public static boolean hasDone(Identifier identifier) {
public static @NotNull Set<Identifier> getDoneAdvancements(@NotNull AdvancementUpdateS2CPacket packet) {
Set<Identifier> doneAdvancements = new HashSet<>();

for (Identifier earnedAdvancementIdentifier : packet.getAdvancementsToEarn().keySet()) {
if (ClientAdvancements.hasDone(earnedAdvancementIdentifier)) {
doneAdvancements.add(earnedAdvancementIdentifier);
}
for (AdvancementEntry earnedAdvancementEntry : packet.getAdvancementsToEarn()) {
doneAdvancements.add(earnedAdvancementEntry.id());
}
for (Identifier progressedAdvancementIdentifier : packet.getAdvancementsToProgress().keySet()) {
if (ClientAdvancements.hasDone(progressedAdvancementIdentifier)) {
doneAdvancements.add(progressedAdvancementIdentifier);
for (Map.Entry<Identifier, AdvancementProgress> progressedAdvancement : packet.getAdvancementsToProgress().entrySet()) {
if (progressedAdvancement.getValue().isDone()) {
doneAdvancements.add(progressedAdvancement.getKey());
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package de.dafuqs.revelationary.advancement_criteria;

import com.google.gson.*;
import de.dafuqs.revelationary.*;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.advancement.*;
import net.minecraft.advancement.criterion.*;
import net.minecraft.predicate.*;
Expand All @@ -13,55 +13,24 @@
import java.util.*;

public class AdvancementCountCriterion extends AbstractCriterion<AdvancementCountCriterion.Conditions> {

public static final Identifier ID = new Identifier(Revelationary.MOD_ID, "advancement_count");

public static AdvancementCountCriterion.Conditions create(Collection<Identifier> advancementIdentifiers, NumberRange.IntRange range) {
return new AdvancementCountCriterion.Conditions(LootContextPredicate.EMPTY, advancementIdentifiers, range);
}

public Identifier getId() {
return ID;
}

public AdvancementCountCriterion.Conditions conditionsFromAdvancementIdentifiers(LootContextPredicate lootContextPredicate, Collection<Identifier> advancementIdentifiers, NumberRange.IntRange range) {
return new AdvancementCountCriterion.Conditions(lootContextPredicate, advancementIdentifiers, range);
}

public AdvancementCountCriterion.Conditions conditionsFromJson(JsonObject jsonObject, LootContextPredicate lootContextPredicate, AdvancementEntityPredicateDeserializer advancementEntityPredicateDeserializer) {
Collection<Identifier> advancementIdentifiers = new ArrayList<>();
for (JsonElement jsonElement : jsonObject.getAsJsonArray("advancement_identifiers")) {
advancementIdentifiers.add(Identifier.tryParse(jsonElement.getAsString()));
}
NumberRange.IntRange range = NumberRange.IntRange.fromJson(jsonObject.get("count"));
return new AdvancementCountCriterion.Conditions(lootContextPredicate, advancementIdentifiers, range);
}


public void trigger(ServerPlayerEntity player) {
this.trigger(player, (conditions) -> conditions.matches(player));
}

public static class Conditions extends AbstractCriterionConditions {
private final Collection<Identifier> advancementIdentifiers;
private final NumberRange.IntRange range;

public Conditions(LootContextPredicate lootContextPredicate, Collection<Identifier> advancementIdentifiers, NumberRange.IntRange range) {
super(ID, lootContextPredicate);
this.advancementIdentifiers = advancementIdentifiers;
this.range = range;
}

public JsonObject toJson(AdvancementEntityPredicateSerializer predicateSerializer) {
JsonObject jsonObject = super.toJson(predicateSerializer);
JsonArray jsonArray = new JsonArray();
for(Identifier id : this.advancementIdentifiers) {
jsonArray.add(id.toString());
}
jsonObject.add("advancement_identifiers", jsonArray);
jsonObject.addProperty("count", this.range.toString());
return jsonObject;
}


@Override
public Codec<Conditions> getConditionsCodec() {
return Conditions.CODEC;
}

public record Conditions(Optional<LootContextPredicate> player, List<Identifier> advancementIdentifiers, NumberRange.IntRange range) implements AbstractCriterion.Conditions {

public static final Codec<Conditions> CODEC = RecordCodecBuilder.create(inst -> inst.group(
LootContextPredicate.CODEC.optionalFieldOf("player").forGetter(Conditions::player),
Identifier.CODEC.listOf().fieldOf("advancement_identifiers").forGetter(Conditions::advancementIdentifiers),
NumberRange.IntRange.CODEC.fieldOf("count").forGetter(Conditions::range))
.apply(inst, Conditions::new));

public boolean matches(ServerPlayerEntity serverPlayerEntity) {
ServerAdvancementLoader loader = serverPlayerEntity.server.getAdvancementLoader();
if(loader == null) {
Expand All @@ -75,7 +44,7 @@ public boolean matches(ServerPlayerEntity serverPlayerEntity) {
int matchingAdvancements = 0;
boolean allMatched = true;
for(Identifier advancementIdentifier : this.advancementIdentifiers) {
Advancement advancement = loader.get(advancementIdentifier);
AdvancementEntry advancement = loader.get(advancementIdentifier);
if(advancement != null && tracker.getProgress(advancement).isDone()) {
matchingAdvancements++;
} else {
Expand All @@ -85,15 +54,6 @@ public boolean matches(ServerPlayerEntity serverPlayerEntity) {

return this.range == null ? allMatched : this.range.test(matchingAdvancements);
}

public Collection<Identifier> getAdvancementIdentifiers() {
return this.advancementIdentifiers;
}

public NumberRange.IntRange getRange() {
return this.range;
}

}

}
Original file line number Diff line number Diff line change
@@ -1,59 +1,34 @@
package de.dafuqs.revelationary.advancement_criteria;

import com.google.gson.JsonObject;
import de.dafuqs.revelationary.Revelationary;
import net.minecraft.advancement.Advancement;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.advancement.AdvancementEntry;
import net.minecraft.advancement.criterion.AbstractCriterion;
import net.minecraft.advancement.criterion.AbstractCriterionConditions;
import net.minecraft.predicate.entity.AdvancementEntityPredicateDeserializer;
import net.minecraft.predicate.entity.AdvancementEntityPredicateSerializer;
import net.minecraft.predicate.entity.EntityPredicate;
import net.minecraft.predicate.entity.LootContextPredicate;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Identifier;
import net.minecraft.util.JsonHelper;

import java.util.Optional;

public class AdvancementGottenCriterion extends AbstractCriterion<AdvancementGottenCriterion.Conditions> {

public static final Identifier ID = new Identifier(Revelationary.MOD_ID, "advancement_gotten");

public static AdvancementGottenCriterion.Conditions create(Identifier id) {
return new AdvancementGottenCriterion.Conditions(LootContextPredicate.EMPTY, id);
}

public Identifier getId() {
return ID;
}

public AdvancementGottenCriterion.Conditions conditionsFromAdvancementIdentifier(LootContextPredicate lootContextPredicate, Identifier identifier) {
return new AdvancementGottenCriterion.Conditions(lootContextPredicate, identifier);
}

public AdvancementGottenCriterion.Conditions conditionsFromJson(JsonObject jsonObject, LootContextPredicate lootContextPredicate, AdvancementEntityPredicateDeserializer advancementEntityPredicateDeserializer) {
Identifier identifier = new Identifier(JsonHelper.getString(jsonObject, "advancement_identifier"));
return new AdvancementGottenCriterion.Conditions(lootContextPredicate, identifier);
}

public void trigger(ServerPlayerEntity player, Advancement advancement) {
public void trigger(ServerPlayerEntity player, AdvancementEntry advancement) {
this.trigger(player, (conditions) -> conditions.matches(advancement));
}

public static class Conditions extends AbstractCriterionConditions {
private final Identifier advancementIdentifier;

public Conditions(LootContextPredicate lootContextPredicate, Identifier advancementIdentifier) {
super(ID, lootContextPredicate);
this.advancementIdentifier = advancementIdentifier;
}

public JsonObject toJson(AdvancementEntityPredicateSerializer predicateSerializer) {
JsonObject jsonObject = super.toJson(predicateSerializer);
jsonObject.addProperty("advancement_identifier", this.advancementIdentifier.toString());
return jsonObject;
}

public boolean matches(Advancement advancement) {
return this.advancementIdentifier.equals(advancement.getId());

@Override
public Codec<Conditions> getConditionsCodec() {
return Conditions.CODEC;
}

public record Conditions(Optional<LootContextPredicate> player, Identifier advancementIdentifier) implements AbstractCriterion.Conditions {
public static final Codec<Conditions> CODEC = RecordCodecBuilder.create(inst -> inst.group(
LootContextPredicate.CODEC.optionalFieldOf("player").forGetter(Conditions::player),
Identifier.CODEC.fieldOf("advancement_identifier").forGetter(Conditions::advancementIdentifier))
.apply(inst, Conditions::new));

public boolean matches(AdvancementEntry advancement) {
return this.advancementIdentifier.equals(advancement.id());
}

public Identifier getAdvancementIdentifier() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,56 +1,33 @@
package de.dafuqs.revelationary.advancement_criteria;

import com.google.gson.JsonObject;
import de.dafuqs.revelationary.Revelationary;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.advancement.criterion.AbstractCriterion;
import net.minecraft.advancement.criterion.AbstractCriterionConditions;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.predicate.entity.AdvancementEntityPredicateDeserializer;
import net.minecraft.predicate.entity.AdvancementEntityPredicateSerializer;
import net.minecraft.predicate.entity.EntityPredicate;
import net.minecraft.predicate.entity.LootContextPredicate;
import net.minecraft.registry.*;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Identifier;
import net.minecraft.util.JsonHelper;

import java.util.Optional;

public class HadRevelationCriterion extends AbstractCriterion<HadRevelationCriterion.Conditions> {

public static final Identifier ID = new Identifier(Revelationary.MOD_ID, "had_revelation");

public static HadRevelationCriterion.Conditions create(Identifier id) {
return new HadRevelationCriterion.Conditions(LootContextPredicate.EMPTY, id);
}

public Identifier getId() {
return ID;
}

public HadRevelationCriterion.Conditions conditionsFromJson(JsonObject jsonObject, LootContextPredicate lootContextPredicate, AdvancementEntityPredicateDeserializer advancementEntityPredicateDeserializer) {
Identifier identifier = new Identifier(JsonHelper.getString(jsonObject, "revelation_identifier"));
return new HadRevelationCriterion.Conditions(lootContextPredicate, identifier);
}

public void trigger(ServerPlayerEntity player, Block block) {
this.trigger(player, (conditions) -> {
return conditions.matches(block);
});
this.trigger(player, (conditions) -> conditions.matches(block));
}

public static class Conditions extends AbstractCriterionConditions {
private final Identifier identifier;

public Conditions(LootContextPredicate lootContextPredicate, Identifier identifier) {
super(ID, lootContextPredicate);
this.identifier = identifier;
}

public JsonObject toJson(AdvancementEntityPredicateSerializer predicateSerializer) {
JsonObject jsonObject = super.toJson(predicateSerializer);
jsonObject.addProperty("revelation_identifier", this.identifier.toString());
return jsonObject;
}

@Override
public Codec<Conditions> getConditionsCodec() {
return Conditions.CODEC;
}

public record Conditions(Optional<LootContextPredicate> player, Identifier identifier) implements AbstractCriterion.Conditions {
public static final Codec<Conditions> CODEC = RecordCodecBuilder.create(inst -> inst.group(
LootContextPredicate.CODEC.optionalFieldOf("player").forGetter(Conditions::player),
Identifier.CODEC.fieldOf("revelation_identifier").forGetter(Conditions::identifier))
.apply(inst, Conditions::new));

public boolean matches(Object object) {
if (identifier.getPath().isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ public class AdvancementCriteria {
public static HadRevelationCriterion HAD_REVELATION;

public static void register() {
ADVANCEMENT_COUNT = Criteria.register(new AdvancementCountCriterion());
HAD_REVELATION = Criteria.register(new HadRevelationCriterion());
ADVANCEMENT_GOTTEN = Criteria.register(new AdvancementGottenCriterion());
ADVANCEMENT_COUNT = Criteria.register("revelationary:advancement_count", new AdvancementCountCriterion());
HAD_REVELATION = Criteria.register("revelationary:had_revelation", new HadRevelationCriterion());
ADVANCEMENT_GOTTEN = Criteria.register("revelationary:advancement_gotten", new AdvancementGottenCriterion());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.advancement.Advancement;
import net.minecraft.advancement.AdvancementEntry;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Identifier;
Expand All @@ -30,7 +31,7 @@ public static boolean hasAdvancement(PlayerEntity playerEntity, Identifier advan
}

if (playerEntity instanceof ServerPlayerEntity serverPlayerEntity) {
Advancement advancement = serverPlayerEntity.server.getAdvancementLoader().get(advancementIdentifier);
AdvancementEntry advancement = serverPlayerEntity.server.getAdvancementLoader().get(advancementIdentifier);
if (advancement == null) {
Revelationary.logError("Player " + playerEntity.getName() + " was getting an advancement check for an advancement that does not exist: " + advancementIdentifier);
return false;
Expand Down
Loading

0 comments on commit 292002d

Please sign in to comment.