summaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/morbing/Morbing.java
blob: 67431124fdd846a4336cabf6c0994d7b3443b0e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package moe.nea.morbing;

import moe.nea.morbing.mixin.AccessorBrewingRecipeRegistry;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.event.player.AttackEntityCallback;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.fluid.FlowableFluid;
import net.minecraft.potion.Potion;
import net.minecraft.potion.Potions;
import net.minecraft.sound.SoundEvent;
import net.minecraft.state.property.Properties;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.Registry;

public class Morbing implements ModInitializer {

    public static String MODID = "morbing";

    public static Identifier identifier(String path) {
        return new Identifier(MODID, path);
    }

    public static FlowableFluid STILL_BLOOD = new BloodFluid.Still();
    public static FlowableFluid FLOWING_BLOOD = new BloodFluid.Flowing();
    public static SoundEvent ITSMORBINTIME_SOUND = new SoundEvent(Morbing.identifier("itsmorbintime"));
    public static Potion MORB_POTION = new Potion(new StatusEffectInstance(MorbingTimeStatus.INSTANCE, 600));

    @Override
    public void onInitialize() {
        ModItems.INSTANCE.registerAll();
        ModBlocks.INSTANCE.registerAll();
        ModEntities.INSTANCE.registerAll();
        Registry.register(Registry.FLUID, Morbing.identifier("blood"), STILL_BLOOD);
        Registry.register(Registry.FLUID, Morbing.identifier("blood_flowing"), FLOWING_BLOOD);
        Registry.register(Registry.STATUS_EFFECT, Morbing.identifier("morbingtime"), MorbingTimeStatus.INSTANCE);
        Registry.register(Registry.POTION, Morbing.identifier("morbingtime"), MORB_POTION);

        AttackEntityCallback.EVENT.register((player, world, hand, entity, hitResult) -> {
            StatusEffectInstance morbingStatus = player.getStatusEffect(MorbingTimeStatus.INSTANCE);
            if (morbingStatus != null && morbingStatus.getDuration() > 0) {
                BlockPos blockPos = entity.getBlockPos();
                world.setBlockState(blockPos, ModBlocks.INSTANCE.bloodFluidBlock.getDefaultState().with(Properties.LEVEL_15, 1));
            }
            return ActionResult.PASS;
        });
        Registry.register(Registry.SOUND_EVENT, Morbing.identifier("itsmorbintime"), ITSMORBINTIME_SOUND);
        AccessorBrewingRecipeRegistry.registerPotionRecipe(Potions.AWKWARD, ModItems.INSTANCE.morbSyringe, MORB_POTION);
        System.out.println("It's Morbing time!");
    }
}