Skip to content

Commit e1948a0

Browse files
Add AdvancedContainer#register(Registry, String, Object) & AdvancedContainer#register(RegistryKey, Registerable, String, Object)
Remove StaticElement
1 parent df07b09 commit e1948a0

File tree

10 files changed

+37
-106
lines changed

10 files changed

+37
-106
lines changed

mmodding-block/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ mmodding {
66
addMixin("mmodding_block.mixins.json")
77
withInjectedInterfaces {
88
it.injectTo("net/minecraft/class_2248", Set.of(
9-
"com/mmodding/library/core/api/registry/StaticElement<Lnet/minecraft/block/Block;>",
109
"com/mmodding/library/block/api/BlockWithItem",
1110
"com/mmodding/library/block/api/MModdingBlock"
1211
))

mmodding-block/src/main/java/com/mmodding/library/block/api/catalog/GrowsDownPlantBlock.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package com.mmodding.library.block.api.catalog;
22

3-
import com.mmodding.library.core.api.registry.IdentifierUtil;
4-
import com.mmodding.library.core.api.registry.StaticElement;
3+
import com.mmodding.library.core.api.AdvancedContainer;
54
import net.minecraft.block.*;
65
import net.minecraft.item.Item;
76
import net.minecraft.item.ItemStack;
8-
import net.minecraft.registry.RegistryKey;
7+
import net.minecraft.registry.Registries;
98
import net.minecraft.sound.SoundCategory;
109
import net.minecraft.sound.SoundEvents;
1110
import net.minecraft.state.property.BooleanProperty;
@@ -18,7 +17,7 @@
1817

1918
import java.util.function.Predicate;
2019

21-
public class GrowsDownPlantBlock implements StaticElement<Block> {
20+
public class GrowsDownPlantBlock {
2221

2322
private final Head head;
2423
private final Body body;
@@ -45,9 +44,9 @@ public BlockState withFruits(BlockState state) {
4544
return state;
4645
}
4746

48-
public void register(RegistryKey<Block> key) {
49-
this.head.register(key.mapValue(value -> IdentifierUtil.extend(value, "head")));
50-
this.body.register(key);
47+
public void register(AdvancedContainer mod, String path) {
48+
mod.register(Registries.BLOCK, path + "_head", this.head);
49+
mod.register(Registries.BLOCK, path, this.body);
5150
}
5251

5352
/* @ClientOnly

mmodding-block/src/main/java/com/mmodding/library/block/mixin/BlockMixin.java

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@
33
import com.mmodding.library.block.api.BlockWithItem;
44
import com.mmodding.library.block.api.MModdingBlock;
55
import com.mmodding.library.block.impl.BlockWithItemImpl;
6-
import com.mmodding.library.core.api.registry.StaticElement;
76
import net.minecraft.block.Block;
87
import net.minecraft.block.BlockState;
98
import net.minecraft.item.Item;
109
import net.minecraft.item.ItemPlacementContext;
11-
import net.minecraft.registry.Registries;
12-
import net.minecraft.registry.Registry;
1310
import org.jetbrains.annotations.NotNull;
1411
import org.jetbrains.annotations.Nullable;
1512
import org.spongepowered.asm.mixin.Mixin;
@@ -20,17 +17,17 @@
2017

2118
@Mixin(Block.class)
2219
@SuppressWarnings("AddedMixinMembersNamePattern")
23-
public class BlockMixin implements BlockWithItem, MModdingBlock, StaticElement<Block>, BlockWithItemImpl.Getter {
20+
public class BlockMixin implements BlockWithItem, MModdingBlock, BlockWithItemImpl.Getter {
2421

2522
@Unique
2623
private Item item = null;
2724

2825
@Override
29-
@SuppressWarnings("unchecked")
26+
@SuppressWarnings({"unchecked", "DataFlowIssue"})
3027
public <T extends Block> T withItem(Item.@NotNull Settings settings, @NotNull BiFunction<T, Item.Settings, Item> factory, @NotNull Function<Item, Item> tweaker) {
3128
if (this.item == null) {
32-
this.item = tweaker.apply(factory.apply((T) this.mmodding$as(), settings));
33-
return (T) this.mmodding$as();
29+
this.item = tweaker.apply(factory.apply((T) (Object) this, settings));
30+
return (T) (Object) this;
3431
}
3532
else {
3633
throw new RuntimeException("Tried to link a new item to a block that already had one");
@@ -42,16 +39,6 @@ public boolean canBeReplaced(BlockState state, @Nullable ItemPlacementContext co
4239
return context != null ? state.canReplace(context) : state.isReplaceable();
4340
}
4441

45-
@Override
46-
public Registry<Block> mmodding$getRegistry() {
47-
return Registries.BLOCK;
48-
}
49-
50-
@Override
51-
public Block mmodding$as() {
52-
return (Block) (Object) this;
53-
}
54-
5542
@Override
5643
public Item mmodding$getItem() {
5744
return this.item;

mmodding-core/src/main/java/com/mmodding/library/core/api/AdvancedContainer.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,23 @@ default <T> RegistryKeyFactory<T> keyFactory(RegistryKey<? extends Registry<T>>
6767
return RegistryKeyFactory.create(registry, this.getMetadata().getId());
6868
}
6969

70+
/**
71+
* A registration method filling the mod namespace automatically.
72+
* @see Registry#register(Registry, Identifier, Object)
73+
*/
74+
default <T> T register(Registry<T> registry, String path, T element) {
75+
return Registry.register(registry, RegistryKey.of(registry.getKey(), Identifier.of(this.getMetadata().getId(), path)), element);
76+
}
77+
78+
/**
79+
* A registration method filling the mod namespace automatically.
80+
* @see Registerable#register(RegistryKey, Object)
81+
*/
82+
default <T> T register(RegistryKey<? extends Registry<T>> registry, Registerable<T> registerable, String path, T element) {
83+
registerable.register(RegistryKey.of(registry, Identifier.of(this.getMetadata().getId(), path)), element);
84+
return element;
85+
}
86+
7087
/**
7188
* Allows to make a bunch of registrations for a specified {@link Registry}.
7289
* @param registry the registry

mmodding-core/src/main/java/com/mmodding/library/core/api/registry/StaticElement.java

Lines changed: 0 additions & 41 deletions
This file was deleted.

mmodding-core/src/main/java/com/mmodding/library/core/api/registry/factory/RegistrationFactory.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
public interface RegistrationFactory<T> {
1010

11-
1211
/**
1312
* Creates a {@link RegistrationFactory}.
1413
* @param registry the registry

mmodding-core/src/main/java/com/mmodding/library/core/impl/registry/StaticElementImpl.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

mmodding-item/build.gradle

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@ mmodding {
55
environment = EnvironmentTarget.ANY
66
addMixin("mmodding_item.mixins.json")
77
withInjectedInterfaces {
8-
it.injectTo("net/minecraft/class_1792", Set.of(
9-
"com/mmodding/library/core/api/registry/StaticElement<Lnet/minecraft/item/Item;>",
10-
"com/mmodding/library/item/api/category/ItemCategoryContainer"
11-
))
8+
it.injectTo("net/minecraft/class_1792", "com/mmodding/library/item/api/category/ItemCategoryContainer")
129
}
1310
}
1411
modules {
Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,24 @@
11
package com.mmodding.library.item.mixin;
22

3-
import com.mmodding.library.core.api.registry.StaticElement;
43
import com.mmodding.library.item.api.category.ItemCategory;
54
import com.mmodding.library.item.api.category.ItemCategoryContainer;
65
import com.mmodding.library.item.impl.category.ItemCategoryImpl;
76
import net.minecraft.item.Item;
8-
import net.minecraft.registry.Registries;
9-
import net.minecraft.registry.Registry;
7+
import net.minecraft.item.ItemStack;
108
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.Shadow;
1110

1211
@Mixin(Item.class)
1312
@SuppressWarnings("AddedMixinMembersNamePattern")
14-
public class ItemMixin implements StaticElement<Item>, ItemCategoryContainer {
13+
public abstract class ItemMixin implements ItemCategoryContainer {
1514

16-
@Override
17-
public Registry<Item> mmodding$getRegistry() {
18-
return Registries.ITEM;
19-
}
20-
21-
@Override
22-
public Item mmodding$as() {
23-
return (Item) (Object) this;
24-
}
15+
@Shadow
16+
public abstract ItemStack getDefaultStack();
2517

2618
@Override
27-
@SuppressWarnings("unchecked")
19+
@SuppressWarnings({"unchecked", "DataFlowIssue"})
2820
public <T extends Item> T setCategory(ItemCategory category) {
29-
ItemCategoryImpl.addEntries(category, this.mmodding$as().getDefaultStack());
30-
return (T) this.mmodding$as();
21+
ItemCategoryImpl.addEntries(category, this.getDefaultStack());
22+
return (T) (Object) this;
3123
}
3224
}

mmodding-worldgen/src/main/java/com/mmodding/library/worldgen/api/vein/VeinType.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.mmodding.library.worldgen.api.vein;
22

33
import com.mmodding.library.block.api.util.RandomStateContainer;
4-
import com.mmodding.library.core.api.registry.StaticElement;
54
import com.mmodding.library.core.api.registry.companion.DynamicRegistryCompanion;
65
import com.mmodding.library.worldgen.impl.vein.VeinTypeImpl;
76
import net.minecraft.block.BlockState;
@@ -12,7 +11,7 @@
1211
import net.minecraft.world.gen.chunk.ChunkNoiseSampler;
1312
import net.minecraft.world.gen.densityfunction.DensityFunction;
1413

15-
public interface VeinType extends StaticElement<VeinType> {
14+
public interface VeinType {
1615

1716
DynamicRegistryCompanion<ChunkGeneratorSettings, VeinType> REGISTRY = DynamicRegistryCompanion.create(RegistryKeys.CHUNK_GENERATOR_SETTINGS);
1817

0 commit comments

Comments
 (0)