Skip to content

Commit b58bec6

Browse files
committed
* Adjusted FabricRegister to work correctly, fixes attribute errors on Fabric; might overhaul the registry with it.
* Registered ItemApiLookups (ParticleSprays function on Fabric!!!) * Readded BrainsweepeeIngredient.getSomeKindOfReasonableIDForEmi(), EMI recipes work for the most part * Fixed Fabric Creative Tabs (mostly)
1 parent b64763f commit b58bec6

File tree

15 files changed

+169
-71
lines changed

15 files changed

+169
-71
lines changed

Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package at.petrak.hexcasting.common.lib;
22

3+
import net.minecraft.core.registries.BuiltInRegistries;
34
import net.minecraft.network.chat.Component;
5+
import net.minecraft.resources.ResourceKey;
46
import net.minecraft.resources.ResourceLocation;
57
import net.minecraft.world.item.CreativeModeTab;
68
import net.minecraft.world.item.ItemStack;
@@ -10,6 +12,7 @@
1012
import java.util.Map;
1113
import java.util.function.BiConsumer;
1214

15+
import static at.petrak.hexcasting.api.HexAPI.MOD_ID;
1316
import static at.petrak.hexcasting.api.HexAPI.modLoc;
1417

1518
public class HexCreativeTabs {
@@ -24,9 +27,13 @@ public static void registerCreativeTabs(BiConsumer<CreativeModeTab, ResourceLoca
2427
public static final CreativeModeTab HEX = register("hexcasting", CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0)
2528
.icon(() -> new ItemStack(HexItems.SPELLBOOK)));
2629

30+
public static final ResourceKey<CreativeModeTab> HEX_KEY = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), modLoc("hexcasting"));
31+
2732
public static final CreativeModeTab SCROLLS = register("scrolls", CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0)
2833
.icon(() -> new ItemStack(HexItems.SCROLL_LARGE)));
2934

35+
public static final ResourceKey<CreativeModeTab> SCROLLS_KEY = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), modLoc("scrolls"));
36+
3037
private static CreativeModeTab register(String name, CreativeModeTab.Builder tabBuilder) {
3138
var tab = tabBuilder.title(Component.translatable("itemGroup.hexcasting." + name)).build();
3239
var old = TABS.put(modLoc(name), tab);

Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/BrainsweepeeIngredient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public abstract class BrainsweepeeIngredient {
3030

3131
public abstract List<Component> getTooltip(boolean advanced);
3232

33+
public abstract String getSomeKindOfReasonableIDForEmi();
34+
3335
/**
3436
* For the benefit of showing to the client, return an example of the entity.
3537
* <p>

Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/BrainsweepeeIngredients.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ public List<Component> getTooltip(boolean advanced) {
6969
return List.of();
7070
}
7171

72+
@Override
73+
public String getSomeKindOfReasonableIDForEmi() {
74+
return "none";
75+
}
76+
7277
@Override
7378
public @Nullable Entity exampleEntity(Level level) {
7479
return null;

Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/EntityTagIngredient.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,14 @@ public List<Component> getTooltip(boolean advanced) {
7777
return out;
7878
}
7979

80+
@Override
81+
public String getSomeKindOfReasonableIDForEmi() {
82+
var resloc = this.entityTypeTag.location();
83+
return resloc.getNamespace()
84+
+ "//"
85+
+ resloc.getPath();
86+
}
87+
8088
@Override
8189
public Entity exampleEntity(Level level) {
8290
var someEntityTys = BuiltInRegistries.ENTITY_TYPE.getTagOrEmpty(this.entityTypeTag).iterator();

Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/EntityTypeIngredient.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ public List<Component> getTooltip(boolean advanced) {
5555
);
5656
}
5757

58+
@Override
59+
public String getSomeKindOfReasonableIDForEmi() {
60+
var resloc = BuiltInRegistries.ENTITY_TYPE.getKey(this.entityType);
61+
return resloc.getNamespace()
62+
+ "//"
63+
+ resloc.getPath();
64+
}
65+
5866
@Override
5967
public Entity exampleEntity(Level level) {
6068
return this.entityType.create(level);

Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/VillagerIngredient.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,31 @@ public List<Component> getTooltip(boolean advanced) {
130130
return tooltip;
131131
}
132132

133+
@Override
134+
public String getSomeKindOfReasonableIDForEmi() {
135+
var bob = new StringBuilder();
136+
if (this.profession != null) {
137+
var profLoc = BuiltInRegistries.VILLAGER_PROFESSION.getKey(this.profession);
138+
bob.append(profLoc.getNamespace())
139+
.append("//")
140+
.append(profLoc.getPath());
141+
} else {
142+
bob.append("null");
143+
}
144+
bob.append("_");
145+
if (this.biome != null) {
146+
var biomeLoc = BuiltInRegistries.VILLAGER_TYPE.getKey(this.biome);
147+
bob.append(biomeLoc.getNamespace())
148+
.append("//")
149+
.append(biomeLoc.getPath());
150+
} else {
151+
bob.append("null");
152+
}
153+
154+
bob.append(this.minLevel);
155+
return bob.toString();
156+
}
157+
133158
@Override
134159
public Component getName() {
135160
MutableComponent component = Component.literal("");

Fabric/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ loom {
4949
}
5050

5151
configureEach {
52-
runDir "run"
52+
runDir "Fabric/run"
5353
ideConfigGenerated(true)
5454
}
5555
}
@@ -121,7 +121,7 @@ dependencies {
121121
shadowBundle project(path: ':Common', configuration: 'transformProductionFabric')
122122

123123
// === MANDATORY DEPS ===
124-
modCompileOnly("at.petra-k:paucal:$paucalVersion+$minecraftVersion-common")
124+
modCompileOnly("at.petra-k:paucal:$paucalVersion+$minecraftVersion-fabric")
125125
// dear mod devs, don't put the platform in the middle of your version code
126126
modImplementation "vazkii.patchouli:Patchouli:1.21-$patchouliVersion-FABRIC-SNAPSHOT"
127127
modImplementation "com.samsthenerd.inline:inline-fabric:$minecraftVersion-$inlineVersion"

Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt

Lines changed: 86 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package at.petrak.hexcasting.fabric
22

3-
import at.petrak.hexcasting.api.HexAPI
43
import at.petrak.hexcasting.api.HexAPI.modLoc
54
import at.petrak.hexcasting.api.addldata.ADMediaHolder
65
import at.petrak.hexcasting.api.advancements.HexAdvancementTriggers
6+
import at.petrak.hexcasting.api.casting.ActionRegistryEntry
77
import at.petrak.hexcasting.api.casting.iota.DoubleIota
8+
import at.petrak.hexcasting.api.item.HexHolderItem
9+
import at.petrak.hexcasting.api.item.IotaHolderItem
10+
import at.petrak.hexcasting.api.item.PigmentItem
11+
import at.petrak.hexcasting.api.item.VariantItem
812
import at.petrak.hexcasting.api.misc.MediaConstants
913
import at.petrak.hexcasting.api.mod.HexConfig
1014
import at.petrak.hexcasting.api.mod.HexStatistics
15+
import at.petrak.hexcasting.api.mod.HexTags
16+
import at.petrak.hexcasting.api.utils.isOfTag
1117
import at.petrak.hexcasting.common.blocks.behavior.HexComposting
1218
import at.petrak.hexcasting.common.blocks.behavior.HexStrippables
1319
import at.petrak.hexcasting.common.casting.PatternRegistryManifest
@@ -16,6 +22,7 @@ import at.petrak.hexcasting.common.casting.actions.spells.great.OpAltiora
1622
import at.petrak.hexcasting.common.command.PatternResKeyArgument
1723
import at.petrak.hexcasting.common.entities.HexEntities
1824
import at.petrak.hexcasting.common.items.ItemJewelerHammer
25+
import at.petrak.hexcasting.common.items.storage.ItemScroll
1926
import at.petrak.hexcasting.common.lib.*
2027
import at.petrak.hexcasting.common.lib.hex.*
2128
import at.petrak.hexcasting.common.misc.AkashicTreeGrower
@@ -26,13 +33,19 @@ import at.petrak.hexcasting.common.recipe.HexRecipeStuffRegistry
2633
import at.petrak.hexcasting.common.recipe.ingredient.brainsweep.BrainsweepeeIngredients
2734
import at.petrak.hexcasting.common.recipe.ingredient.state.StateIngredients
2835
import at.petrak.hexcasting.fabric.cc.HexCardinalComponents
36+
import at.petrak.hexcasting.fabric.cc.adimpl.CCHexHolder
37+
import at.petrak.hexcasting.fabric.cc.adimpl.CCIotaHolder
38+
import at.petrak.hexcasting.fabric.cc.adimpl.CCItemIotaHolder
2939
import at.petrak.hexcasting.fabric.cc.adimpl.CCMediaHolder
40+
import at.petrak.hexcasting.fabric.cc.adimpl.CCPigment
41+
import at.petrak.hexcasting.fabric.cc.adimpl.CCVariantItem
3042
import at.petrak.hexcasting.fabric.event.VillagerConversionCallback
3143
import at.petrak.hexcasting.fabric.loot.FabricHexLootModJankery
3244
import at.petrak.hexcasting.fabric.network.FabricPacketHandler
3345
import at.petrak.hexcasting.fabric.recipe.FabricModConditionalIngredient
3446
import at.petrak.hexcasting.fabric.recipe.FabricUnsealedIngredient
3547
import at.petrak.hexcasting.fabric.storage.FabricImpetusStorage
48+
import at.petrak.hexcasting.fabric.xplat.FabricXplatImpl
3649
import at.petrak.hexcasting.interop.HexInterop
3750
import at.petrak.hexcasting.xplat.IXplatAbstractions
3851
import net.fabricmc.api.ModInitializer
@@ -46,20 +59,26 @@ import net.fabricmc.fabric.api.event.player.UseEntityCallback
4659
import net.fabricmc.fabric.api.item.v1.DefaultItemComponentEvents
4760
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents
4861
import net.fabricmc.fabric.api.loot.v3.LootTableEvents
62+
import net.fabricmc.fabric.api.`object`.builder.v1.entity.FabricDefaultAttributeRegistry
4963
import net.fabricmc.fabric.api.recipe.v1.ingredient.CustomIngredientSerializer
5064
import net.fabricmc.fabric.api.registry.FlammableBlockRegistry
5165
import net.minecraft.commands.synchronization.SingletonArgumentInfo
5266
import net.minecraft.core.Registry
5367
import net.minecraft.core.registries.BuiltInRegistries
68+
import net.minecraft.resources.ResourceKey
5469
import net.minecraft.resources.ResourceLocation
5570
import net.minecraft.world.InteractionResult
71+
import net.minecraft.world.entity.EntityType
5672
import net.minecraft.world.entity.player.Player
73+
import net.minecraft.world.item.Item
74+
import net.minecraft.world.item.ItemStack
5775
import net.minecraft.world.item.Items
5876
import net.minecraft.world.level.block.Blocks
5977
import net.minecraft.world.level.block.state.properties.BlockSetType
6078
import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction
6179
import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator
6280
import java.util.function.BiConsumer
81+
import java.util.function.Function
6382

6483
object FabricHexInitializer : ModInitializer {
6584
lateinit var CONFIG: FabricHexConfig
@@ -132,30 +151,56 @@ object FabricHexInitializer : ModInitializer {
132151
}
133152
}
134153

135-
ItemGroupEvents.MODIFY_ENTRIES_ALL.register { tab, entries ->
136-
HexBlocks.registerBlockCreativeTab(entries::accept, tab)
137-
HexItems.registerItemCreativeTab(entries, tab)
154+
ItemGroupEvents.modifyEntriesEvent(HexCreativeTabs.SCROLLS_KEY).register { r ->
155+
val keyList = ArrayList<ResourceKey<ActionRegistryEntry?>?>()
156+
val regi = FabricXplatImpl.INSTANCE.getActionRegistry()
157+
for (key in regi.registryKeySet()) if (isOfTag<ActionRegistryEntry?>(
158+
regi,
159+
key,
160+
HexTags.Actions.PER_WORLD_PATTERN
161+
)
162+
) keyList.add(key)
163+
keyList.sortWith(Comparator.comparing<ResourceKey<ActionRegistryEntry?>?, ResourceLocation?>(Function { obj: ResourceKey<ActionRegistryEntry?>? -> obj!!.location() }))
164+
for (key in keyList) {
165+
r.accept(
166+
ItemScroll.withPerWorldPattern(
167+
ItemStack(HexItems.SCROLL_LARGE),
168+
key
169+
)
170+
)
171+
}
172+
}
173+
ItemGroupEvents.modifyEntriesEvent(HexCreativeTabs.HEX_KEY).register { r ->
174+
for (item in this.itemsToAddToCreativeTab) {
175+
r.accept(item)
176+
}
138177
}
139178
}
140179

141180
private fun initRegistries() {
142-
fabricOnlyRegistration()
143-
144181
HexBlockSetTypes.registerBlocks(BlockSetType::register)
145182

146183
HexCreativeTabs.registerCreativeTabs(bind(BuiltInRegistries.CREATIVE_MODE_TAB))
147184

148185
HexSounds.registerSounds(bind(BuiltInRegistries.SOUND_EVENT))
149186
HexBlocks.registerBlocks(bind(BuiltInRegistries.BLOCK))
150-
HexBlocks.registerBlockItems(bind(BuiltInRegistries.ITEM))
187+
HexBlocks.registerBlockItems(boundForItem)
151188
HexBlockEntities.registerTiles(bind(BuiltInRegistries.BLOCK_ENTITY_TYPE))
152-
HexItems.registerItems(bind(BuiltInRegistries.ITEM))
189+
HexItems.registerItems(boundForItem)
153190
// Registry.register(IngredientDeserializer.REGISTRY, FabricModConditionalIngredient.ID, FabricModConditionalIngredient.Deserializer.INSTANCE)
154191
CustomIngredientSerializer.register(FabricUnsealedIngredient.Serializer.INSTANCE);
155192
CustomIngredientSerializer.register(FabricModConditionalIngredient.Serializer.INSTANCE);
156193

157194
HexEntities.registerEntities(bind(BuiltInRegistries.ENTITY_TYPE))
158195
HexAttributes.register()
196+
FabricDefaultAttributeRegistry.register(EntityType.PLAYER,
197+
Player.createAttributes()
198+
.add(HexAttributes.GRID_ZOOM)
199+
.add(HexAttributes.SCRY_SIGHT)
200+
.add(HexAttributes.FEEBLE_MIND)
201+
.add(HexAttributes.AMBIT_RADIUS)
202+
.add(HexAttributes.MEDIA_CONSUMPTION_MODIFIER)
203+
.add(HexAttributes.SENTINEL_RADIUS))
159204
HexMobEffects.register(bind(BuiltInRegistries.MOB_EFFECT))
160205
HexPotions.registerPotions(bind(BuiltInRegistries.POTION))
161206
HexDataComponents.registerDataComponents(bind(BuiltInRegistries.DATA_COMPONENT_TYPE))
@@ -186,6 +231,8 @@ object FabricHexInitializer : ModInitializer {
186231
butYouCouldBeFire()
187232

188233
HexStatistics.register()
234+
235+
fabricOnlyRegistration()
189236
}
190237

191238
// sorry lex (not sorry)
@@ -196,6 +243,29 @@ object FabricHexInitializer : ModInitializer {
196243
})
197244
}
198245

246+
for (item in BuiltInRegistries.ITEM) {
247+
if (item is PigmentItem) {
248+
HexCardinalComponents.PIGMENT_ITEM_LOOKUP.registerForItems({
249+
item, _ -> CCPigment.ItemBased(item);
250+
}, item)
251+
}
252+
if (item is IotaHolderItem) {
253+
HexCardinalComponents.IOTA_HOLDER_LOOKUP.registerForItems({
254+
item, _ -> CCItemIotaHolder.ItemBased(item);
255+
}, item)
256+
}
257+
if (item is HexHolderItem) {
258+
HexCardinalComponents.HEX_HOLDER_LOOKUP.registerForItems({
259+
item, _ -> CCHexHolder.ItemBased(item);
260+
}, item)
261+
}
262+
if (item is VariantItem) {
263+
HexCardinalComponents.VARIANT_ITEM_LOOKUP.registerForItems({
264+
item, _ -> CCVariantItem.ItemBased(item);
265+
}, item)
266+
}
267+
}
268+
199269
HexCardinalComponents.MEDIA_HOLDER_LOOKUP.registerForItems({
200270
stack, _ -> CCMediaHolder.Static({ HexConfig.common().dustMediaAmount() }, ADMediaHolder.AMETHYST_DUST_PRIORITY, stack)
201271
}, HexItems.AMETHYST_DUST)
@@ -217,6 +287,14 @@ object FabricHexInitializer : ModInitializer {
217287
}, HexBlocks.QUENCHED_ALLAY.asItem())
218288
}
219289

290+
private val itemsToAddToCreativeTab : MutableSet<Item> = mutableSetOf()
291+
292+
private val boundForItem : BiConsumer<Item, ResourceLocation> = BiConsumer {
293+
t, id -> this.itemsToAddToCreativeTab.add(t)
294+
Registry.register(BuiltInRegistries.ITEM, id, t)
295+
}
296+
297+
220298
private fun butYouCouldBeFire() {
221299
val flameOn = FlammableBlockRegistry.getDefaultInstance()
222300
for (log in listOf(

Fabric/src/main/java/at/petrak/hexcasting/fabric/cc/HexCardinalComponents.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@ public class HexCardinalComponents implements EntityComponentInitializer, ItemCo
5858
public static final ComponentKey<CCVariantItem> VARIANT_ITEM = ComponentRegistry.getOrCreate(modLoc("variant_item"),
5959
CCVariantItem.class);
6060

61-
public static final ItemApiLookup<ADMediaHolder, Void> MEDIA_HOLDER_LOOKUP = ItemApiLookup.get(modLoc("media_holder"), ADMediaHolder.class, Void.class);
61+
public static final ItemApiLookup<ADMediaHolder, Void> MEDIA_HOLDER_LOOKUP = ItemApiLookup.get(modLoc("media_holder_item"), ADMediaHolder.class, Void.class);
6262

63-
public static final ItemApiLookup<ADIotaHolder, Void> IOTA_HOLDER_LOOKUP = ItemApiLookup.get(modLoc("iota_holder"), ADIotaHolder.class, Void.class);
63+
public static final ItemApiLookup<ADIotaHolder, Void> IOTA_HOLDER_LOOKUP = ItemApiLookup.get(modLoc("iota_holder_item"), ADIotaHolder.class, Void.class);
6464

6565
public static final ItemApiLookup<ADPigment, Void> PIGMENT_ITEM_LOOKUP = ItemApiLookup.get(modLoc("pigment_item"), ADPigment.class, Void.class);
6666

67-
public static final ItemApiLookup<ADHexHolder, Void> HEX_HOLDER_LOOKUP = ItemApiLookup.get(modLoc("hex_holder"), ADHexHolder.class, Void.class);
67+
public static final ItemApiLookup<ADHexHolder, Void> HEX_HOLDER_LOOKUP = ItemApiLookup.get(modLoc("hex_holder_item"), ADHexHolder.class, Void.class);
6868

6969
public static final ItemApiLookup<ADVariantItem, Void> VARIANT_ITEM_LOOKUP = ItemApiLookup.get(modLoc("variant_item"), ADVariantItem.class, Void.class);
7070

Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/BrainsweepeeEmiStack.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@ public class BrainsweepeeEmiStack extends EmiStack {
2626

2727
public BrainsweepeeEmiStack(BrainsweepeeIngredient ingr) {
2828
this.ingredient = ingr;
29-
30-
var bareId = this.ingredient.toString();
31-
this.id = modLoc(bareId);
29+
this.id = modLoc(this.ingredient.getSomeKindOfReasonableIDForEmi());
3230
}
3331

3432
@Override

0 commit comments

Comments
 (0)