Skip to content

Commit

Permalink
WIP: 1.20.2 port
Browse files Browse the repository at this point in the history
  • Loading branch information
shap-po committed Oct 2, 2024
1 parent 6034dfb commit 31851bd
Show file tree
Hide file tree
Showing 32 changed files with 99 additions and 145 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,10 @@ dependencies {
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"

modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
modImplementation "io.github.apace100:apoli:${project.apoli_version}"
modImplementation "com.github.apace100:apoli:${project.apoli_version}"

// Optional dependencies
modCompileOnly("io.github.apace100:origins-fabric:${project.origins_version}") {
modCompileOnly("com.github.apace100:origins-fabric:${project.origins_version}") {
transitive = false
}
modCompileOnly("dev.emi:trinkets:${project.trinkets_version}") {
Expand Down
20 changes: 11 additions & 9 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,25 @@ org.gradle.parallel=true

# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.20.1
yarn_mappings=1.20.1+build.10
minecraft_version=1.20.2
yarn_mappings=1.20.2+build.4
loader_version=0.16.0

# Mod Properties
mod_version=1.5.0
maven_group=com.github.shap_po.shappoli
archives_base_name=shappoli

# Note that both apoli and origins are distributed by jitpack, not ladysnake for the current versions

# Dependencies
fabric_version=0.92.2+1.20.1
apoli_version=2.9.0+mc.1.20.x
fabric_version=0.91.6+1.20.2
apoli_version=v2.11.11

# Optional Dependencies
origins_version=1.10.0+mc.1.20.x
trinkets_version=3.7.2
wildfire_gender_version=1.20-3.0.1
woodwalkers_version=1.20.1-fabric-5.2
origins_version=v1.12.10
trinkets_version=3.8.0
wildfire_gender_version=1.20.2-3.2.1
woodwalkers_version=1.20.2-fabric-5.2
# woodwalkers dependency
crafted_core_version=1.20.1-fabric-5.5
crafted_core_version=1.20.2-fabric-5.5
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package com.github.shap_po.shappoli.integration;

import com.github.shap_po.shappoli.integration.backport.apoli.ApoliBackport;
import com.github.shap_po.shappoli.integration.origins.OriginsIntegration;
import com.github.shap_po.shappoli.integration.trinkets.TrinketsIntegration;
import com.github.shap_po.shappoli.integration.walkers.WalkersIntegration;
import net.fabricmc.loader.api.FabricLoader;

public class ModIntegrations {
public static void register() {
ApoliBackport.register(); // no need to check if Apoli is loaded, as it's required

register(OriginsIntegration::register, "origins");
register(TrinketsIntegration::register, "trinkets");
register(WalkersIntegration::register, "walkers"); // woodwalkers
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,7 @@ public static boolean setOrigin(Entity entity, @Nullable OriginLayer layer, @Nul
}

public static @Nullable OriginLayer getLayer(Identifier layerId) {
try {
return OriginLayers.getLayer(layerId);
} catch (IllegalArgumentException e) {
return null;
}
return OriginLayers.getNullableLayer(layerId);
}

public static @Nullable OriginComponent getOriginComponent(Entity entity) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import io.github.apace100.calio.data.SerializableData;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.inventory.StackReference;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Pair;
import net.minecraft.world.World;
Expand All @@ -25,20 +26,20 @@

public class ActionOnTrinketChangePower extends Power {
private final Consumer<Entity> entityActionOnEquip;
private final Consumer<Pair<World, ItemStack>> itemActionOnEquip;
private final Consumer<Pair<World, StackReference>> itemActionOnEquip;
private final Consumer<Entity> entityActionOnUnequip;
private final Consumer<Pair<World, ItemStack>> itemActionOnUnequip;
private final Predicate<ItemStack> itemCondition;
private final Consumer<Pair<World, StackReference>> itemActionOnUnequip;
private final Predicate<Pair<World, ItemStack>> itemCondition;
private final List<TrinketSlotData> slots;

public ActionOnTrinketChangePower(
PowerType<?> type,
LivingEntity entity,
Consumer<Entity> entityActionOnEquip,
Consumer<Pair<World, ItemStack>> itemActionOnEquip,
Consumer<Pair<World, StackReference>> itemActionOnEquip,
Consumer<Entity> entityActionOnUnequip,
Consumer<Pair<World, ItemStack>> itemActionOnUnequip,
Predicate<ItemStack> itemCondition,
Consumer<Pair<World, StackReference>> itemActionOnUnequip,
Predicate<Pair<World, ItemStack>> itemCondition,
List<TrinketSlotData> slots
) {
super(type, entity);
Expand Down Expand Up @@ -98,8 +99,8 @@ public static PowerFactory createFactory() {
.add("slot", ShappoliTrinketsDataTypes.TRINKET_SLOT, null)
.add("slots", ShappoliTrinketsDataTypes.TRINKET_SLOTS, null)
,
data -> (type1, player) -> new ActionOnTrinketChangePower(
type1,
data -> (type, player) -> new ActionOnTrinketChangePower(
type,
player,
data.get("entity_action_on_equip"),
data.get("item_action_on_equip"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@
import java.util.function.Predicate;

public abstract class BasePreventTrinketChangePower extends Power {
protected final Predicate<ItemStack> itemCondition;
protected final Predicate<Pair<World, ItemStack>> itemCondition;
protected final List<TrinketSlotData> slots;
protected final boolean allowCreative;

public BasePreventTrinketChangePower(
PowerType<?> type,
LivingEntity entity,
Predicate<ItemStack> itemCondition,
Predicate<Pair<World, ItemStack>> itemCondition,
List<TrinketSlotData> slots,
boolean allowInCreative
) {
Expand All @@ -54,7 +54,7 @@ public interface Factory {
BasePreventTrinketChangePower create(
PowerType<?> type,
LivingEntity entity,
Predicate<ItemStack> itemCondition,
Predicate<Pair<World, ItemStack>> itemCondition,
List<TrinketSlotData> slots,
boolean allowInCreative
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ public static PowerFactory<Power> createFactory() {
.add("modifier", ShappoliTrinketsDataTypes.SLOT_ENTITY_ATTRIBUTE_MODIFIER, null)
.add("modifiers", ShappoliTrinketsDataTypes.SLOT_ENTITY_ATTRIBUTE_MODIFIERS, null)
,
data -> (type1, player) -> {
ModifyTrinketSlotPower power = new ModifyTrinketSlotPower(type1, player);
data -> (type, player) -> {
ModifyTrinketSlotPower power = new ModifyTrinketSlotPower(type, player);
data.ifPresent("modifier", power::addModifier);
data.<List<SlotEntityAttributeModifier>>ifPresent("modifiers", mods -> mods.forEach(power::addModifier));
return power;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class PreventTrinketEquipPower extends BasePreventTrinketChangePower {
public PreventTrinketEquipPower(
PowerType<?> type,
LivingEntity entity,
Predicate<ItemStack> itemCondition,
Predicate<Pair<World, ItemStack>> itemCondition,
List<TrinketSlotData> slots,
boolean allowCreative
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class PreventTrinketUnequipPower extends BasePreventTrinketChangePower {
public PreventTrinketUnequipPower(
PowerType<?> type,
LivingEntity entity,
Predicate<ItemStack> itemCondition,
Predicate<Pair<World, ItemStack>> itemCondition,
List<TrinketSlotData> slots,
boolean allowCreative
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import io.github.apace100.calio.data.SerializableDataTypes;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.inventory.StackReference;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Pair;
import net.minecraft.world.World;
Expand All @@ -32,8 +33,8 @@ public static void action(SerializableData.Instance data, Entity entity) {
Function<ItemStack, Integer> processor = data.<InventoryUtil.ProcessMode>get("process_mode").getProcessor();
int limit = data.getInt("limit");
Consumer<Entity> entityAction = data.get("entity_action");
Consumer<Pair<World, ItemStack>> itemAction = data.get("item_action");
Predicate<ItemStack> itemCondition = data.get("item_condition");
Consumer<Pair<World, StackReference>> itemAction = data.get("item_action");
Predicate<Pair<World, ItemStack>> itemCondition = data.get("item_condition");

int processedItems = 0;
modifyingItemsLoop:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import io.github.apace100.apoli.registry.ApoliRegistries;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registry;
import net.minecraft.util.Pair;
import net.minecraft.world.World;

public class ItemConditions {
public static void register() {
Expand All @@ -15,7 +17,7 @@ public static void register() {
register(TrinketCondition.getFactory());
}

private static void register(ConditionFactory<ItemStack> conditionFactory) {
private static void register(ConditionFactory<Pair<World, ItemStack>> conditionFactory) {
Registry.register(ApoliRegistries.ITEM_CONDITION, conditionFactory.getSerializerId(), conditionFactory);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public static boolean condition(SerializableData.Instance data, Entity entity) {
return false;
}

Predicate<ItemStack> itemCondition = data.get("item_condition");
Predicate<Pair<World, ItemStack>> itemCondition = data.get("item_condition");
List<TrinketSlotData> slots = TrinketSlotData.getSlots(data);

int count = TrinketsUtil.getTrinkets(livingEntity, slots, itemCondition)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,14 @@
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Pair;
import net.minecraft.world.World;

import java.util.List;

public class EquippableTrinketCondition {
public static boolean condition(SerializableData.Instance data, ItemStack stack) {
public static boolean condition(SerializableData.Instance data, Pair<World, ItemStack> worldAndStack) {
ItemStack stack = worldAndStack.getRight();
Entity entity = InventoryUtil.getHolder(stack);
if (!(entity instanceof LivingEntity livingEntity)) {
return false;
Expand All @@ -33,7 +36,7 @@ public static boolean condition(SerializableData.Instance data, ItemStack stack)
});
}

public static ConditionFactory<ItemStack> getFactory() {
public static ConditionFactory<Pair<World, ItemStack>> getFactory() {
return new ConditionFactory<>(
Shappoli.identifier("is_equippable_trinket"),
new SerializableData()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Pair;
import net.minecraft.world.World;

import java.util.List;

public class EquippedTrinketCountCondition {
public static boolean condition(SerializableData.Instance data, ItemStack stack) {
public static boolean condition(SerializableData.Instance data, Pair<World, ItemStack> worldAndStack) {
ItemStack stack = worldAndStack.getRight();
Entity entity = InventoryUtil.getHolder(stack);
if (!(entity instanceof LivingEntity livingEntity)) {
return false;
Expand All @@ -31,7 +34,7 @@ public static boolean condition(SerializableData.Instance data, ItemStack stack)
return data.<Comparison>get("comparison").compare(count, data.getInt("compare_to"));
}

public static ConditionFactory<ItemStack> getFactory() {
public static ConditionFactory<Pair<World, ItemStack>> getFactory() {
return new ConditionFactory<>(
Shappoli.identifier("equipped_trinket_count"),
new SerializableData()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@
import io.github.apace100.apoli.power.factory.condition.ConditionFactory;
import io.github.apace100.calio.data.SerializableData;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Pair;
import net.minecraft.world.World;

public class TrinketCondition {
public static boolean condition(SerializableData.Instance data, ItemStack stack) {
return TrinketsApi.getTrinket(stack.getItem()) != TrinketsApi.getDefaultTrinket();
public static boolean condition(SerializableData.Instance data, Pair<World, ItemStack> worldAndStack) {
return TrinketsApi.getTrinket(worldAndStack.getRight().getItem()) != TrinketsApi.getDefaultTrinket();
}

public static ConditionFactory<ItemStack> getFactory() {
public static ConditionFactory<Pair<World, ItemStack>> getFactory() {
return new ConditionFactory<>(
Shappoli.identifier("is_trinket"),
new SerializableData(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import dev.emi.trinkets.api.SlotType;
import dev.emi.trinkets.api.TrinketsApi;
import net.minecraft.entity.LivingEntity;
import net.minecraft.inventory.StackReference;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Pair;
import net.minecraft.world.World;
Expand All @@ -14,12 +15,12 @@
import java.util.stream.Stream;

public class TrinketsUtil {
public static Pair<World, ItemStack> getItemActionPair(LivingEntity entity, SlotReference slotReference) {
return new Pair<>(entity.getWorld(), slotReference.inventory().getStack(slotReference.index()));
public static Pair<World, StackReference> getItemActionPair(LivingEntity entity, SlotReference slotReference) {
return new Pair<>(entity.getWorld(), StackReference.of(slotReference.inventory(), slotReference.index()));
}

public static ItemStack getItemConditionPair(LivingEntity entity, ItemStack item) {
return item;
public static Pair<World, ItemStack> getItemConditionPair(LivingEntity entity, ItemStack item) {
return new Pair<>(entity.getWorld(), item);
}


Expand All @@ -46,7 +47,7 @@ public static Stream<Pair<SlotReference, ItemStack>> getTrinkets(LivingEntity en
* @param itemCondition The condition that the item must meet to be included in the list.
* @return A stream of pairs of slot references and item stacks of the trinkets in the given slots.
*/
public static Stream<Pair<SlotReference, ItemStack>> getTrinkets(LivingEntity entity, List<TrinketSlotData> slots, Predicate<ItemStack> itemCondition) {
public static Stream<Pair<SlotReference, ItemStack>> getTrinkets(LivingEntity entity, List<TrinketSlotData> slots, Predicate<Pair<World, ItemStack>> itemCondition) {
return TrinketsUtil.getTrinkets(entity, slots).filter(trinket -> itemCondition == null || itemCondition.test(TrinketsUtil.getItemConditionPair(entity, trinket.getRight())));
}

Expand Down
Loading

0 comments on commit 31851bd

Please sign in to comment.