package com.thebrokenrail.slightlyvanilla; import com.thebrokenrail.slightlyvanilla.dispenser.SlimeballDispenserBehavior; import com.thebrokenrail.slightlyvanilla.dispenser.SpawnEggDispenserBehavior; import com.thebrokenrail.slightlyvanilla.entity.SlimeballEntity; import com.thebrokenrail.slightlyvanilla.entity.SpawnEggEntity; import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; import me.sargunvohra.mcmods.autoconfig1u.serializer.GsonConfigSerializer; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.entity.FabricEntityTypeBuilder; import net.fabricmc.fabric.api.tag.TagRegistry; import net.minecraft.block.Block; import net.minecraft.block.DispenserBlock; import net.minecraft.entity.EntityCategory; import net.minecraft.entity.EntityDimensions; import net.minecraft.entity.EntityType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Items; import net.minecraft.item.SpawnEggItem; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.tag.Tag; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import java.util.Random; public class SlightlyVanilla implements ModInitializer { public static final String NAMESPACE = "slightlyvanilla"; public static EntityType SLIMEBALL_ENTITY; public static EntityType SPAWN_EGG_ENTITY; public static final Tag EXTRA_PORTAL_BLOCKS_TAG = TagRegistry.block(new Identifier(NAMESPACE, "extra_portal_blocks")); public static ModConfig getConfig() { return AutoConfig.getConfigHolder(ModConfig.class).getConfig(); } @Override public void onInitialize() { AutoConfig.register(ModConfig.class, GsonConfigSerializer::new); SLIMEBALL_ENTITY = FabricEntityTypeBuilder.create(EntityCategory.MISC, (EntityType.EntityFactory) SlimeballEntity::new).size(EntityDimensions.fixed(0.25f, 0.25f)).build(); SPAWN_EGG_ENTITY = FabricEntityTypeBuilder.create(EntityCategory.MISC, (EntityType.EntityFactory) SpawnEggEntity::new).size(EntityDimensions.fixed(0.25f, 0.25f)).build(); Registry.register(Registry.ENTITY_TYPE, new Identifier(NAMESPACE, "slimeball"), SLIMEBALL_ENTITY); Registry.register(Registry.ENTITY_TYPE, new Identifier(NAMESPACE, "spawn_egg"), SPAWN_EGG_ENTITY); DispenserBlock.registerBehavior(Items.SLIME_BALL, new SlimeballDispenserBehavior()); for (SpawnEggItem spawnEgg : SpawnEggItem.getAll()) { DispenserBlock.registerBehavior(spawnEgg, new SpawnEggDispenserBehavior()); } } public static void playThrowSound(PlayerEntity user) { user.getEntityWorld().playSound(null, user.getX(), user.getY(), user.getZ(), SoundEvents.ENTITY_SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (new Random().nextFloat() * 0.4F + 0.8F)); } }