Skip to content

Commit

Permalink
1.20.4 port
Browse files Browse the repository at this point in the history
  • Loading branch information
ExDrill committed Mar 31, 2024
1 parent 71861d4 commit c12c981
Show file tree
Hide file tree
Showing 10 changed files with 57 additions and 65 deletions.
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@ org.gradle.jvmargs=-Xmx1G
org.gradle.parallel=true

# Fabric Properties
minecraft_version=1.20.1
minecraft_version=1.20.4
loader_version=0.15.7

# Mod Properties
mod_version = 2.4.0
mod_version = 2.5.0
maven_group = com.teamabode
archives_base_name = guarding

# Dependencies
fabric_version=0.92.0+1.20.1
scribe_version=1.20.1-0.5.0-alpha
parchment_version=1.20.1:2023.07.23
fabric_version=0.96.11+1.20.4
scribe_version=1.20.4-0.7.2-alpha
parchment_version=1.20.2:2023.12.10
fabric_asm_version=v2.3
8 changes: 2 additions & 6 deletions src/main/java/com/teamabode/guarding/Guarding.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,9 @@

import com.chocohead.mm.api.ClassTinkerers;
import com.teamabode.guarding.core.init.*;
import com.teamabode.scribe.core.api.config.Config;
import com.teamabode.scribe.core.api.config.ConfigBuilder;
import com.teamabode.sketch.core.api.config.Config;
import com.teamabode.sketch.core.api.config.ConfigBuilder;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.object.builder.v1.advancement.CriterionRegistry;
import net.minecraft.advancements.CriteriaTriggers;
import net.minecraft.advancements.critereon.ImpossibleTrigger;
import net.minecraft.advancements.critereon.KilledTrigger;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.enchantment.EnchantmentCategory;
import org.slf4j.Logger;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public void render(ItemStack stack, ItemDisplayContext displayContext, PoseStack

ClientLevel level = Minecraft.getInstance().level;
if (level != null) {
ArmorTrim.getTrim(level.registryAccess(), stack).ifPresent(armorTrim -> {
ArmorTrim.getTrim(level.registryAccess(), stack, true).ifPresent(armorTrim -> {
model.renderTrim(poseStack, bufferSource, light, armorTrim);
});
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,49 +1,51 @@
package com.teamabode.guarding.common.critieria;

import com.google.gson.JsonObject;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import com.teamabode.guarding.Guarding;
import net.minecraft.advancements.critereon.*;
import net.minecraft.advancements.critereon.ContextAwarePredicate;
import net.minecraft.advancements.critereon.CriterionValidator;
import net.minecraft.advancements.critereon.EntityPredicate;
import net.minecraft.advancements.critereon.SimpleCriterionTrigger;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.util.ExtraCodecs;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.storage.loot.LootContext;

public class KilledByParriedArrowTrigger extends SimpleCriterionTrigger<KilledByParriedArrowTrigger.TriggerInstance> {
private static final ResourceLocation ID = Guarding.id("killed_by_parried_arrow");
import java.util.Optional;

@Override
protected TriggerInstance createInstance(JsonObject json, ContextAwarePredicate predicate, DeserializationContext deserializationContext) {
return new TriggerInstance(predicate, EntityPredicate.fromJson(json, "victim", deserializationContext));
}
public class KilledByParriedArrowTrigger extends SimpleCriterionTrigger<KilledByParriedArrowTrigger.TriggerInstance> {

public void trigger(ServerPlayer player, Entity entity) {
LootContext context = EntityPredicate.createContext(player, entity);
Guarding.LOGGER.info(context.toString());
public void trigger(ServerPlayer player, Entity victim) {
LootContext context = EntityPredicate.createContext(player, victim);
this.trigger(player, triggerInstance -> triggerInstance.matches(context));
}

@Override
public ResourceLocation getId() {
return ID;
public Codec<TriggerInstance> codec() {
return KilledByParriedArrowTrigger.TriggerInstance.CODEC;
}

public static class TriggerInstance extends AbstractCriterionTriggerInstance {
private final ContextAwarePredicate victimPredicate;
public record TriggerInstance(Optional<ContextAwarePredicate> player, Optional<ContextAwarePredicate> victim) implements SimpleCriterionTrigger.SimpleInstance {
public static final Codec<TriggerInstance> CODEC = RecordCodecBuilder.create(instance -> instance.group(
ExtraCodecs.strictOptionalField(EntityPredicate.ADVANCEMENT_CODEC, "player").forGetter(TriggerInstance::player),
ExtraCodecs.strictOptionalField(EntityPredicate.ADVANCEMENT_CODEC, "victim").forGetter(TriggerInstance::victim)
).apply(instance, TriggerInstance::new));

public TriggerInstance(ContextAwarePredicate contextAwarePredicate, ContextAwarePredicate victimPredicate) {
super(ID, contextAwarePredicate);
this.victimPredicate = victimPredicate;
public TriggerInstance(Optional<ContextAwarePredicate> player, Optional<ContextAwarePredicate> victim) {
this.player = player;
this.victim = victim;
}

public boolean matches(LootContext context) {
return this.victimPredicate.matches(context);
return this.victim.isEmpty() || this.victim.get().matches(context);
}

@Override
public JsonObject serializeToJson(SerializationContext context) {
JsonObject root = super.serializeToJson(context);
root.add("victim", this.victimPredicate.toJson(context));
return root;
public void validate(CriterionValidator criterionValidator) {
criterionValidator.validateEntity(this.player, ".player");
criterionValidator.validateEntity(this.victim, ".victim");
}
}
}
Original file line number Diff line number Diff line change
@@ -1,27 +1,29 @@
package com.teamabode.guarding.common.recipe;

import com.google.gson.JsonObject;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import com.teamabode.guarding.Guarding;
import com.teamabode.guarding.core.init.GuardingRecipeSerializers;
import net.minecraft.core.RegistryAccess;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.GsonHelper;
import net.minecraft.world.Container;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.*;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.item.crafting.SmithingRecipe;
import net.minecraft.world.level.Level;

import java.util.stream.Stream;

public class SmithingTransformShieldRecipe implements SmithingRecipe {
public static final ResourceLocation ID = Guarding.id("smithing_transform_shield");

private final Ingredient template;
private final Ingredient base;
private final Ingredient addition;
private final ItemStack result;
public record SmithingTransformShieldRecipe(Ingredient template, Ingredient base, Ingredient addition, ItemStack result) implements SmithingRecipe {
public static final Codec<SmithingTransformShieldRecipe> CODEC = RecordCodecBuilder.create(instance -> instance.group(
Ingredient.CODEC.fieldOf("template").forGetter(SmithingTransformShieldRecipe::template),
Ingredient.CODEC.fieldOf("base").forGetter(SmithingTransformShieldRecipe::base),
Ingredient.CODEC.fieldOf("addition").forGetter(SmithingTransformShieldRecipe::addition),
ItemStack.ITEM_WITH_COUNT_CODEC.fieldOf("result").forGetter(SmithingTransformShieldRecipe::result)
).apply(instance, SmithingTransformShieldRecipe::new));

public SmithingTransformShieldRecipe(Ingredient template, Ingredient base, Ingredient addition, ItemStack result) {
this.template = template;
Expand Down Expand Up @@ -66,11 +68,6 @@ public boolean isAdditionIngredient(ItemStack stack) {
return this.addition.test(stack);
}

@Override
public ResourceLocation getId() {
return ID;
}

@Override
public RecipeSerializer<?> getSerializer() {
return GuardingRecipeSerializers.SMITHING_TRANSFORM_SHIELD;
Expand All @@ -82,18 +79,13 @@ public boolean isIncomplete() {
}

public static class Serializer implements RecipeSerializer<SmithingTransformShieldRecipe> {

@Override
public SmithingTransformShieldRecipe fromJson(ResourceLocation id, JsonObject root) {
Ingredient template = Ingredient.fromJson(GsonHelper.getNonNull(root, "template"));
Ingredient base = Ingredient.fromJson(GsonHelper.getNonNull(root, "base"));
Ingredient addition = Ingredient.fromJson(GsonHelper.getNonNull(root, "addition"));
ItemStack result = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(root, "result"));
return new SmithingTransformShieldRecipe(template, base, addition, result);
public Codec<SmithingTransformShieldRecipe> codec() {
return SmithingTransformShieldRecipe.CODEC;
}

@Override
public SmithingTransformShieldRecipe fromNetwork(ResourceLocation resourceLocation, FriendlyByteBuf packet) {
public SmithingTransformShieldRecipe fromNetwork(FriendlyByteBuf packet) {
Ingredient template = Ingredient.fromNetwork(packet);
Ingredient base = Ingredient.fromNetwork(packet);
Ingredient addition = Ingredient.fromNetwork(packet);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
package com.teamabode.guarding.core.init;

import com.teamabode.guarding.Guarding;
import com.teamabode.guarding.common.critieria.KilledByParriedArrowTrigger;
import net.minecraft.advancements.CriteriaTriggers;
import net.minecraft.advancements.CriterionTrigger;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.BuiltInRegistries;

public class GuardingCritieriaTriggers {

public static final KilledByParriedArrowTrigger KILLED_BY_PARRIED_ARROW = CriteriaTriggers.register(new KilledByParriedArrowTrigger());
public static final KilledByParriedArrowTrigger KILLED_BY_PARRIED_ARROW = register("killed_by_parried_arrow", new KilledByParriedArrowTrigger());

private static <T extends CriterionTrigger<?>> T register(String name, T trigger) {
return Registry.register(BuiltInRegistries.TRIGGER_TYPES, Guarding.id(name), trigger);
}

public static void init() {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ public class GuardingSounds {

public static final SoundEvent ITEM_SHIELD_PARRY = register("item.shield.parry");

// Netherite Shield sounds
public static final SoundEvent ITEM_NETHERITE_SHIELD_BLOCK = register("item.netherite_shield.block");
public static final SoundEvent ITEM_NETHERITE_SHIELD_BREAK = register("item.netherite_shield.break");
public static final SoundEvent ITEM_NETHERITE_SHIELD_PARRY = register("item.netherite_shield.parry");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,10 @@
import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.HumanoidArm;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemCooldowns;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.level.Level;
import org.spongepowered.asm.mixin.Mixin;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(SmithingMenu.class)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.teamabode.guarding.core.mixin.gameplay;

import com.teamabode.guarding.Guarding;
import com.teamabode.guarding.core.access.ProjectileAccessor;
import com.teamabode.guarding.core.init.GuardingCritieriaTriggers;
import net.minecraft.server.level.ServerPlayer;
Expand All @@ -21,7 +20,6 @@ private void die(DamageSource source, CallbackInfo ci) {
Entity directEntity = source.getDirectEntity();

if (directEntity instanceof ProjectileAccessor projectile && projectile.getParrier() instanceof ServerPlayer player) {
Guarding.LOGGER.info(player.getStringUUID());
GuardingCritieriaTriggers.KILLED_BY_PARRIED_ARROW.trigger(player, $this);
}
}
Expand Down

0 comments on commit c12c981

Please sign in to comment.