61 lines
2.9 KiB
Java
61 lines
2.9 KiB
Java
package com.thebrokenrail.slightlyvanilla;
|
|
|
|
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.minecraft.block.DispenserBlock;
|
|
import net.minecraft.block.dispenser.DispenserBehavior;
|
|
import net.minecraft.block.dispenser.ItemDispenserBehavior;
|
|
import net.minecraft.block.dispenser.ProjectileDispenserBehavior;
|
|
import net.minecraft.entity.EntityCategory;
|
|
import net.minecraft.entity.EntityDimensions;
|
|
import net.minecraft.entity.EntityType;
|
|
import net.minecraft.entity.projectile.ProjectileEntity;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.item.Items;
|
|
import net.minecraft.util.Identifier;
|
|
import net.minecraft.util.math.BlockPointer;
|
|
import net.minecraft.util.math.Position;
|
|
import net.minecraft.util.registry.Registry;
|
|
import net.minecraft.world.World;
|
|
|
|
public class SlightlyVanilla implements ModInitializer {
|
|
public static final String NAMESPACE = "slightlyvanilla";
|
|
|
|
public static EntityType<SlimeballEntity> SLIMEBALL_ENTITY;
|
|
public static EntityType<SpawnEggEntity> SPAWN_EGG_ENTITY;
|
|
|
|
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>) SlimeballEntity::new).size(EntityDimensions.fixed(0.25f, 0.25f)).build();
|
|
SPAWN_EGG_ENTITY = FabricEntityTypeBuilder.create(EntityCategory.MISC, (EntityType.EntityFactory<SpawnEggEntity>) 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, (pointer, stack) -> {
|
|
if (getConfig().throwableSlimeballs) {
|
|
return new ProjectileDispenserBehavior() {
|
|
@Override
|
|
protected ProjectileEntity createProjectile(World position, Position stack, ItemStack itemStack) {
|
|
SlimeballEntity entity = new SlimeballEntity(position, stack.getX(), stack.getY(), stack.getZ());
|
|
entity.setItem(itemStack);
|
|
return entity;
|
|
}
|
|
}.dispense(pointer, stack);
|
|
} else {
|
|
return new ItemDispenserBehavior().dispense(pointer, stack);
|
|
}
|
|
});
|
|
}
|
|
}
|