Jump to content

Kirderf

Members
  • Posts

    3
  • Joined

  • Last visited

Kirderf's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. Thank you for your advice. I fixed the problem now. @diesieben07
  2. package com.kirderf.compactxpbottles; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.kirderf.compactxpbottles.dispenser.CustumDispenseBehavior; import com.kirderf.compactxpbottles.entity.CustomExperienceBottleEntity; import com.kirderf.compactxpbottles.lists.ItemList; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.entity.SpriteRenderer; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.registries.ObjectHolder; @Mod("compactxpbottles") public class compactxpbottles { public static compactxpbottles instance; private static final Logger logger = LogManager.getLogger("compactxpbottles"); public static final String MODID = "compactxpbottles"; public static ItemGroup KirderfCreativeTab = new KirderfCreativeTab("compactxpbottles"); public compactxpbottles() { instance = this; FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup); FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientRegisteries); MinecraftForge.EVENT_BUS.register(this); } private void setup(final FMLCommonSetupEvent event) { CustumDispenseBehavior.init(); logger.info("Setup method registered"); } private void clientRegisteries(final FMLClientSetupEvent event) { logger.info("ClientRegisteries method registered"); } @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) @ObjectHolder(compactxpbottles.MODID) public static class RegistryEvents { @SubscribeEvent public static void RegistryItems(final RegistryEvent.Register<Item> event) { event.getRegistry().registerAll( ItemList.x4experiencebottle.setRegistryName(location("x4experiencebottle")), ItemList.x16experiencebottle.setRegistryName(location("x16experiencebottle")), ItemList.x64experiencebottle.setRegistryName(location("x64experiencebottle")), ItemList.x256experiencebottle.setRegistryName(location("x256experiencebottle"))); logger.info("Items registered"); } public static ResourceLocation location(String name) { return new ResourceLocation("compactxpbottles", name); } } } public abstract class CustumDispenseBehavior extends DefaultDispenseItemBehavior implements ICustomDiespenseItemBehavior{ @Override public ItemStack dispenseStack(IBlockSource source, ItemStack stack) { Direction direction = source.getBlockState().get(DispenserBlock.FACING); IPosition iposition = DispenserBlock.getDispensePosition(source); ItemStack itemstack = stack.split(1); doDispense(source.getWorld(), itemstack, 6, direction, iposition); return stack; } public static void init() { } } package com.kirderf.compactxpbottles.dispenser; import com.kirderf.compactxpbottles.entity.CustomExperienceBottleEntity; import com.kirderf.compactxpbottles.lists.ItemList; import net.minecraft.block.DispenserBlock; import net.minecraft.dispenser.IBlockSource; import net.minecraft.dispenser.IDispenseItemBehavior; import net.minecraft.dispenser.IPosition; import net.minecraft.dispenser.ProjectileDispenseBehavior; import net.minecraft.entity.IProjectile; import net.minecraft.item.ItemStack; import net.minecraft.util.Util; import net.minecraft.world.World; public interface ICustomDiespenseItemBehavior extends IDispenseItemBehavior { ICustomDiespenseItemBehavior NOOP = (p_210297_0_, p_210297_1_) -> { return p_210297_1_; }; ItemStack dispense(IBlockSource p_dispense_1_, ItemStack p_dispense_2_); static void init() { DispenserBlock.registerDispenseBehavior(ItemList.x4experiencebottle, new ProjectileDispenseBehavior() { protected IProjectile getProjectileEntity(World worldIn, IPosition position, ItemStack stackIn) { return Util.make(new CustomExperienceBottleEntity(worldIn, position.getX(), position.getY(), position.getZ(), 4), (p_218410_1_) -> { p_218410_1_.func_213884_b(stackIn); }); } protected float getProjectileInaccuracy() { return super.getProjectileInaccuracy() * 0.5F; } protected float getProjectileVelocity() { return super.getProjectileVelocity() * 1.25F; } }); DispenserBlock.registerDispenseBehavior(ItemList.x16experiencebottle, new ProjectileDispenseBehavior() { protected IProjectile getProjectileEntity(World worldIn, IPosition position, ItemStack stackIn) { return Util.make(new CustomExperienceBottleEntity(worldIn, position.getX(), position.getY(), position.getZ(), 16), (p_218410_1_) -> { p_218410_1_.func_213884_b(stackIn); }); } protected float getProjectileInaccuracy() { return super.getProjectileInaccuracy() * 0.5F; } protected float getProjectileVelocity() { return super.getProjectileVelocity() * 1.25F; } }); DispenserBlock.registerDispenseBehavior(ItemList.x64experiencebottle, new ProjectileDispenseBehavior() { protected IProjectile getProjectileEntity(World worldIn, IPosition position, ItemStack stackIn) { return Util.make(new CustomExperienceBottleEntity(worldIn, position.getX(), position.getY(), position.getZ(), 64), (p_218410_1_) -> { p_218410_1_.func_213884_b(stackIn); }); } protected float getProjectileInaccuracy() { return super.getProjectileInaccuracy() * 0.5F; } protected float getProjectileVelocity() { return super.getProjectileVelocity() * 1.25F; } }); DispenserBlock.registerDispenseBehavior(ItemList.x256experiencebottle, new ProjectileDispenseBehavior() { protected IProjectile getProjectileEntity(World worldIn, IPosition position, ItemStack stackIn) { return Util.make(new CustomExperienceBottleEntity(worldIn, position.getX(), position.getY(), position.getZ(), 256), (p_218410_1_) -> { p_218410_1_.func_213884_b(stackIn); }); } protected float getProjectileInaccuracy() { return super.getProjectileInaccuracy() * 0.5F; } protected float getProjectileVelocity() { return super.getProjectileVelocity() * 1.25F; } }); } }
  3. When does Minecraft handle DispenserBehavior? Trying to extend DefaultDispenserBehavior to add my entity Do I need a registry event ? Added some files for clarification CustomExperienceBottleEntity.java compactxpbottles.java CustumDispenseBehavior.java ICustomDiespenseItemBehavior.java
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.