Skip to content

Commit

Permalink
refactor(loot): register function types using deferred register
Browse files Browse the repository at this point in the history
  • Loading branch information
WakelessSloth56 committed Apr 4, 2022
1 parent ca0e8fa commit 926dd1a
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 21 deletions.
10 changes: 1 addition & 9 deletions src/main/java/org/auioc/mods/arnicalib/Initialization.java
Expand Up @@ -11,8 +11,6 @@
import org.auioc.mods.arnicalib.server.loot.AHLootItemFunctions;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.loot.GlobalLootModifierSerializer;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.ModLoadingContext;
Expand Down Expand Up @@ -50,18 +48,12 @@ public CommonSetup(final IEventBus modEventBus, final IEventBus forgeEventBus) {

public void registerConfig() {}

@SuppressWarnings(value = {"unchecked", "rawtypes"})
private void modSetup() {
AHPacketHandler.init();
AHCommandArguments.init();
modEventBus.register(AHGlobalLootModifiers.class);
AHLootItemConditions.LOOT_CONDITION_TYPES.register(modEventBus);
modEventBus.addGenericListener(
GlobalLootModifierSerializer.class, // It works within any RegistryEvent.Register
(RegistryEvent.Register event) -> {
AHLootItemFunctions.init();
}
);
AHLootItemFunctions.LOOT_FUNCTION_TYPES.register(modEventBus);
}

private void forgeSetup() {
Expand Down
@@ -1,6 +1,5 @@
package org.auioc.mods.arnicalib.server.loot;

import java.util.function.Supplier;
import org.auioc.mods.arnicalib.ArnicaLib;
import org.auioc.mods.arnicalib.server.loot.predicate.ModLoadedCondition;
import net.minecraft.core.Registry;
Expand All @@ -14,10 +13,10 @@ public final class AHLootItemConditions {

public static final DeferredRegister<LootItemConditionType> LOOT_CONDITION_TYPES = DeferredRegister.create(Registry.LOOT_ITEM_REGISTRY, ArnicaLib.MOD_ID);

private static RegistryObject<LootItemConditionType> register(String id, Supplier<Serializer<? extends LootItemCondition>> serializerSup) {
return LOOT_CONDITION_TYPES.register(id, () -> new LootItemConditionType(serializerSup.get()));
private static RegistryObject<LootItemConditionType> register(String id, Serializer<? extends LootItemCondition> serializer) {
return LOOT_CONDITION_TYPES.register(id, () -> new LootItemConditionType(serializer));
}

public static final RegistryObject<LootItemConditionType> MOD_LOADED = register("mod_loaded", ModLoadedCondition.SerializerX::new);
public static final RegistryObject<LootItemConditionType> MOD_LOADED = register("mod_loaded", new ModLoadedCondition.SerializerX());

}
Expand Up @@ -7,16 +7,18 @@
import net.minecraft.world.level.storage.loot.Serializer;
import net.minecraft.world.level.storage.loot.functions.LootItemFunction;
import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;

public final class AHLootItemFunctions {

public static void init() {}
public static final DeferredRegister<LootItemFunctionType> LOOT_FUNCTION_TYPES = DeferredRegister.create(Registry.LOOT_FUNCTION_REGISTRY, ArnicaLib.MOD_ID);

public static final LootItemFunctionType SET_RANDOM_POTION = register("set_random_potion", new SetRandomPotionFunction.SerializerX());
public static final LootItemFunctionType SET_CUSTOM_EFFECTS = register("set_custom_effects", new SetCustomEffectsFunction.SerializerX());

private static LootItemFunctionType register(String id, Serializer<? extends LootItemFunction> serializer) {
return Registry.register(Registry.LOOT_FUNCTION_TYPE, ArnicaLib.id(id), new LootItemFunctionType(serializer));
private static RegistryObject<LootItemFunctionType> register(String id, Serializer<? extends LootItemFunction> serializer) {
return LOOT_FUNCTION_TYPES.register(id, () -> new LootItemFunctionType(serializer));
}

public static final RegistryObject<LootItemFunctionType> SET_RANDOM_POTION = register("set_random_potion", new SetRandomPotionFunction.SerializerX());
public static final RegistryObject<LootItemFunctionType> SET_CUSTOM_EFFECTS = register("set_custom_effects", new SetCustomEffectsFunction.SerializerX());

}
Expand Up @@ -30,7 +30,7 @@ protected SetCustomEffectsFunction(LootItemCondition[] conditions, List<MobEffec

@Override
public LootItemFunctionType getType() {
return AHLootItemFunctions.SET_CUSTOM_EFFECTS;
return AHLootItemFunctions.SET_CUSTOM_EFFECTS.get();
}

@Override
Expand Down
Expand Up @@ -35,7 +35,7 @@ protected SetRandomPotionFunction(LootItemCondition[] conditions, List<Potion> p

@Override
public LootItemFunctionType getType() {
return AHLootItemFunctions.SET_RANDOM_POTION;
return AHLootItemFunctions.SET_RANDOM_POTION.get();
}

@Override
Expand Down

0 comments on commit 926dd1a

Please sign in to comment.