Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,10 @@ jobs:
'https://cdn.modrinth.com/data/9s6osm5g/versions/izKINKFg/cloth-config-15.0.140-neoforge.jar'
'https://github.com/SuperKnux/HexMod/raw/refs/heads/indev/1.21.1/libs/paucal-0.7.1-noelle+1.21.1-neoforge.jar'
'https://cdn.modrinth.com/data/fin1PX4m/versions/FhE1RJsR/inline-neoforge-1.21.1-1.2.2.jar'
'https://cdn.modrinth.com/data/jtmvUHXj/versions/Fb55Fgjz/accessories-neoforge-1.1.0-beta.53%2B1.21.1.jar'
'https://cdn.modrinth.com/data/nU0bVIaL/versions/BIogJv2D/Patchouli-1.21.1-93-NEOFORGE.jar'
'https://cdn.modrinth.com/data/lhGA9TYQ/versions/ZxYGwlk0/architectury-13.0.8-neoforge.jar'
'https://cdn.modrinth.com/data/40FYwb4z/versions/KsfI4QsR/caelus-neoforge-7.0.1%2B1.21.1.jar'
'https://cdn.modrinth.com/data/ccKDOlHs/versions/NMCHU6DZ/owo-lib-neoforge-0.12.15.5-beta.1%2B1.21.jar'
'https://cdn.modrinth.com/data/vvuO3ImH/versions/yohfFbgD/curios-neoforge-9.5.1%2B1.21.1.jar'
runs-on: ubuntu-latest
steps:
- uses: actions/setup-java@v4
Expand Down
3 changes: 0 additions & 3 deletions Common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ repositories {
}

maven { url "https://maven.shedaniel.me/" }
// accessories
maven { url 'https://maven.wispforest.io/releases' }
// EMI
maven { url = "https://maven.terraformersmc.com/releases/" }
}
Expand All @@ -44,7 +42,6 @@ dependencies {

// === OPTIONAL DEPS ===
modCompileOnly "dev.emi:emi-xplat-intermediary:${emiVersion}:api"
modCompileOnly "io.wispforest:accessories-common:$accessoriesVersion"

// === OTHER STUFF ===
compileOnly "org.jetbrains:annotations:$jetbrainsAnnotationsVersion"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
import net.minecraft.core.dispenser.BlockSource;
import net.minecraft.core.dispenser.OptionalDispenseItemBehavior;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.EquipmentSlotGroup;
import net.minecraft.world.entity.ai.attributes.Attribute;
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.component.ItemAttributeModifiers;
import net.minecraft.world.level.block.DispenserBlock;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand All @@ -28,6 +30,13 @@ public class ItemLens extends Item implements HexBaubleItem { // Wearable,
public static final AttributeModifier SCRY_SIGHT = new AttributeModifier(
HexAPI.modLoc("scrying_lens_sight"), 1.0, AttributeModifier.Operation.ADD_VALUE);

public static final ItemAttributeModifiers MODIFIERS = ItemAttributeModifiers.builder()
.add(HexAttributes.GRID_ZOOM, GRID_ZOOM, EquipmentSlotGroup.HAND)
.add(HexAttributes.GRID_ZOOM, GRID_ZOOM, EquipmentSlotGroup.HEAD)
.add(HexAttributes.SCRY_SIGHT, SCRY_SIGHT, EquipmentSlotGroup.HAND)
.add(HexAttributes.SCRY_SIGHT, SCRY_SIGHT, EquipmentSlotGroup.HEAD)
.build();

public ItemLens(Properties pProperties) {
super(pProperties);
DispenserBlock.registerBehavior(this, new OptionalDispenseItemBehavior() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public static void registerItemCreativeTab(CreativeModeTab.Output r, CreativeMod

public static final ItemLens SCRYING_LENS = make("lens", new ItemLens(
IXplatAbstractions.INSTANCE.addEquipSlotFabric(EquipmentSlot.HEAD)
.stacksTo(1)));
.stacksTo(1).attributes(ItemLens.MODIFIERS)));

public static final ItemAbacus ABACUS = make("abacus", new ItemAbacus(unstackable()));
public static final ItemThoughtKnot THOUGHT_KNOT = make("thought_knot", new ItemThoughtKnot(unstackable()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public static final class Forge {
}

public static final class Fabric {
public static final String ACCESSORIES_API_ID = "accessories";
public static final String TRINKETS_API_ID = "trinkets";
}

public static void init() {
Expand Down
6 changes: 3 additions & 3 deletions Common/src/main/resources/hexplat.accesswidener
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ accessible field net/minecraft/client/renderer/RenderType$CompositeState texture
accessible class net/minecraft/client/renderer/RenderStateShard$EmptyTextureStateShard
accessible class net/minecraft/world/item/crafting/Ingredient$Value
accessible method net/minecraft/world/item/crafting/Ingredient <init> (Ljava/util/stream/Stream;)V
#accessible method net/minecraft/world/item/context/UseOnContext <init> (Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/phys/BlockHitResult;)V
#accessible method net/minecraft/world/damagesource/DamageSources source (Lnet/minecraft/resources/ResourceKey;)Lnet/minecraft/world/damagesource/DamageSource;
#accessible method net/minecraft/world/damagesource/DamageSources source (Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/entity/Entity;)Lnet/minecraft/world/damagesource/DamageSource;
accessible method net/minecraft/world/item/context/UseOnContext <init> (Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/phys/BlockHitResult;)V
accessible method net/minecraft/world/damagesource/DamageSources source (Lnet/minecraft/resources/ResourceKey;)Lnet/minecraft/world/damagesource/DamageSource;
accessible method net/minecraft/world/damagesource/DamageSources source (Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/entity/Entity;)Lnet/minecraft/world/damagesource/DamageSource;
4 changes: 1 addition & 3 deletions Fabric/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,6 @@ repositories {
}
// pehkui
maven { url = "https://jitpack.io" }
// accessories
maven { url 'https://maven.wispforest.io/releases' }

// If you have mod jar dependencies in ./libs, you can declare them as a repository like so:
flatDir {
Expand All @@ -132,7 +130,7 @@ dependencies {
// dear mod devs, don't put the platform in the middle of your version code
modImplementation "vazkii.patchouli:Patchouli:1.21-$patchouliVersion-FABRIC-SNAPSHOT"
modImplementation "com.samsthenerd.inline:inline-fabric:$minecraftVersion-$inlineVersion"
modImplementation "io.wispforest:accessories-fabric:$accessoriesVersion"
modImplementation "dev.emi:trinkets:${trinketsVersion}"

modImplementation "org.ladysnake.cardinal-components-api:cardinal-components-base:$cardinalComponentsVersion"
// modImplementation "org.ladysnake.cardinal-components-api:cardinal-components-util:$cardinalComponentsVersion"
Expand Down
4 changes: 2 additions & 2 deletions Fabric/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
platform=fabric

fabricVersion=0.92.8+1.21.1
fabricVersion=0.116.12+1.21.1
fabricLoaderVersion=0.14.21
fabricLanguageKotlinVersion=1.13.7+kotlin.2.2.21

Expand All @@ -12,7 +12,7 @@ serializationHooksVersion=0.4.99999
#entityReachVersion=2.3.0

#gravityApiVersion=1.0.6
trinketsVersion=3.7.0
trinketsVersion=3.10.0

modmenuVersion=7.0.1

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,35 +1,36 @@
package at.petrak.hexcasting.fabric.interop.accessories;
package at.petrak.hexcasting.fabric.interop.trinkets;

import at.petrak.hexcasting.common.lib.HexItems;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Axis;
import io.wispforest.accessories.api.client.AccessoryRenderer;
import io.wispforest.accessories.api.slot.SlotReference;
import dev.emi.trinkets.api.SlotReference;
import dev.emi.trinkets.api.client.TrinketRenderer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.EntityModel;
import net.minecraft.client.model.PlayerModel;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;

/**
* @author WireSegal
* Created at 9:50 AM on 7/25/22.
*/
public class LensAccessoryRenderer implements AccessoryRenderer {
public class LensTrinketRenderer implements TrinketRenderer {
@Override
@SuppressWarnings("unchecked")
public <M extends LivingEntity> void render(ItemStack stack, SlotReference slotReference, PoseStack matrices, EntityModel<M> model, MultiBufferSource multiBufferSource, int light, float v, float v1, float v2, float v3, float v4, float v5) {
public void render(ItemStack stack, SlotReference slotReference, EntityModel<? extends LivingEntity> model, PoseStack matrices, MultiBufferSource multiBufferSource, int light, LivingEntity entity, float limbAngle, float limbDistance, float tickDelta, float animationProgress, float headYaw, float headPitch) {
if (stack.is(HexItems.SCRYING_LENS) &&
model instanceof PlayerModel playerModel && slotReference.entity() instanceof Player) {
model instanceof PlayerModel playerModel && entity instanceof AbstractClientPlayer player) {

// from https://github.com/Creators-of-Create/Create/blob/ee33823ed0b5084af10ed131a1626ce71db4c07e/src/main/java/com/simibubi/create/compat/curios/GogglesCurioRenderer.java

// Translate and rotate with our head
matrices.pushPose();
TrinketRenderer.followBodyRotations(entity, playerModel);
TrinketRenderer.translateToFace(matrices, playerModel, player, headYaw, headPitch);

// Translate and scale to our head
matrices.translate(0, 0, 0.3);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package at.petrak.hexcasting.fabric.interop.trinkets;

import at.petrak.hexcasting.api.misc.DiscoveryHandlers;
import at.petrak.hexcasting.common.items.HexBaubleItem;
import at.petrak.hexcasting.common.items.magic.ItemCreativeUnlocker;
import at.petrak.hexcasting.common.lib.HexItems;
import com.google.common.collect.Multimap;
import dev.emi.trinkets.api.SlotReference;
import dev.emi.trinkets.api.Trinket;
import dev.emi.trinkets.api.TrinketComponent;
import dev.emi.trinkets.api.TrinketsApi;
import java.util.List;
import java.util.Optional;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.core.Holder;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Tuple;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.ai.attributes.Attribute;
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
import net.minecraft.world.item.ItemStack;

import static dev.emi.trinkets.api.client.TrinketRendererRegistry.registerRenderer;

public class TrinketsInterop {
public static void init() {
BuiltInRegistries.ITEM.stream().forEach(item -> {
if (item instanceof HexBaubleItem bauble) {
TrinketsApi.registerTrinket(item, new Trinket() {
@Override
public Multimap<Holder<Attribute>, AttributeModifier> getModifiers(ItemStack stack, SlotReference slot, LivingEntity entity, ResourceLocation slotIdentifier) {
return bauble.getHexBaubleAttrs(stack);
}
});
}
});


DiscoveryHandlers.addDebugItemDiscoverer((player, type) -> {
Optional<TrinketComponent> slots = TrinketsApi.getTrinketComponent(player);
if (slots.isPresent()) {
var stack2 = slots.get().getEquipped(stack -> ItemCreativeUnlocker.isDebug(stack, type));
if (stack2 != null) return stack2.getFirst().getB();
}
return ItemStack.EMPTY;
});

DiscoveryHandlers.addExtraEquipmentDiscoverer(player -> {
Optional<TrinketComponent> optional = TrinketsApi.getTrinketComponent(player);
if (optional.isPresent()) {
TrinketComponent component = optional.get();
return component.getEquipped(i -> !i.isEmpty()).stream()
.map(Tuple::getB)
.toList();
}
return List.of();
});
}

@Environment(EnvType.CLIENT)
public static void clientInit() {
registerRenderer(HexItems.SCRYING_LENS, new LensTrinketRenderer());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import at.petrak.hexcasting.api.client.ClientCastingStack;
import at.petrak.hexcasting.fabric.cc.HexCardinalComponents;
import at.petrak.hexcasting.fabric.client.ExtendedTexture;
import at.petrak.hexcasting.fabric.interop.accessories.AccessoriesApiInterop;
import at.petrak.hexcasting.fabric.interop.trinkets.TrinketsInterop;
import at.petrak.hexcasting.interop.HexInterop;
import at.petrak.hexcasting.xplat.IClientXplatAbstractions;
import at.petrak.hexcasting.xplat.IXplatAbstractions;
Expand Down Expand Up @@ -44,8 +44,8 @@ public void setRenderLayer(Block block, RenderType type) {

@Override
public void initPlatformSpecific() {
if (IXplatAbstractions.INSTANCE.isModPresent(HexInterop.Fabric.ACCESSORIES_API_ID)) {
AccessoriesApiInterop.clientInit();
if (IXplatAbstractions.INSTANCE.isModPresent(HexInterop.Fabric.TRINKETS_API_ID)) {
TrinketsInterop.clientInit();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,10 @@

public class FabricRegister<B> implements IXplatRegister<B> {
private final Registry<B> register;
private final Map<String, B> map;

@SuppressWarnings("unchecked")
public FabricRegister(ResourceKey<Registry<B>> registryKey) {
this.register = (Registry<B>) BuiltInRegistries.REGISTRY.get(registryKey.location());
this.map = new HashMap<>();
}

@SuppressWarnings("unchecked")
public FabricRegister(ResourceKey<Registry<B>> registryKey, Map<String, B> map) {
this.register = (Registry<B>) BuiltInRegistries.REGISTRY.get(registryKey.location());
this.map = map;
}


Expand All @@ -39,14 +31,12 @@ public <T extends B> Supplier<T> register(String id, Supplier<T> provider) {
@Override
public <T extends B> Holder<B> registerHolder(String id, Supplier<T> provider) {
T value = provider.get();
map.put(id, value);
Registry.register(register, modLoc(id), value);
return register.wrapAsHolder(value);
}

@Override
public void registerAll() {
map.forEach((string, value) ->
Registry.register(register, modLoc(string), value)
);
// This is fabric. we register eagerly.
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import at.petrak.hexcasting.common.recipe.ingredient.brainsweep.BrainsweepeeIngredientType;
import at.petrak.hexcasting.common.recipe.ingredient.state.StateIngredientType;
import at.petrak.hexcasting.fabric.cc.HexCardinalComponents;
import at.petrak.hexcasting.fabric.interop.accessories.AccessoriesApiInterop;
import at.petrak.hexcasting.fabric.interop.trinkets.TrinketsInterop;
import at.petrak.hexcasting.fabric.recipe.FabricUnsealedIngredient;
import at.petrak.hexcasting.interop.HexInterop;
import at.petrak.hexcasting.interop.pehkui.PehkuiInterop;
Expand Down Expand Up @@ -109,8 +109,8 @@ public boolean isModPresent(String id) {

@Override
public void initPlatformSpecific() {
if (this.isModPresent(HexInterop.Fabric.ACCESSORIES_API_ID)) {
AccessoriesApiInterop.init();
if (this.isModPresent(HexInterop.Fabric.TRINKETS_API_ID)) {
TrinketsInterop.init();
}
}

Expand Down
3 changes: 2 additions & 1 deletion Fabric/src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@
},
"suggests": {
"pehkui": ">=3.7.6",
"modmenu": ">=7.0.1"
"modmenu": ">=7.0.1",
"trinkets": ">=3.10.0"
},
"custom": {
"cardinal-components": [
Expand Down
Loading
Loading