Jump to content

Chuck16

Members
  • Posts

    11
  • Joined

  • Last visited

Everything posted by Chuck16

  1. Hello, I am trying to add real crafting support for the fletching table. I started out by making the GUI texture. I made it just like the smithing table except no hammer and no outline of an ingot on the second slot. I then went on to make a custom crafting type for the fletching recipes. I had lots of trouble doing this. I was wondering if their is any good reference code or tutorials on the internet for 1.16 for custom crafting types. All the references for this were outdated. Thank you for any help
  2. It works! Thank you so much. That example really helped me out. To avoid that error I down graded forge from 32.0.101 to 32.0.99.
  3. Ok thank you soo much. That was more helpful than you will ever know. I am left with one arrow on rendering: [15:42:06] [Render thread/ERROR] [minecraft/Util]: No data fixer registered for jade_arrow. I think I can figure this out but I just wanted to put that out there. This error is thrown when I shoot the arrow and crashes the game. When I load the game back up the mob I shot is dead.
  4. Okay I think I successfully registered the arrow. Now when I shoot the arrow it does not take from the stack and does not shoot an arrow. Only the bow animation plays. public static EntityType<EntityJadeArrow> jadeArrow; @SubscribeEvent public static void onEntityTypeRegistration(RegistryEvent.Register<EntityType<?>> entityTypeRegisterEvent) { jadeArrow = EntityType.Builder.<EntityJadeArrow>create(EntityJadeArrow::new, EntityClassification.MISC) .size(0.25F, 0.25F) .build("jade:jade_arrow"); jadeArrow.setRegistryName("jade:jade_arrow"); entityTypeRegisterEvent.getRegistry().register(jadeArrow); } I still need to know how to bind my entity to the renderer
  5. public static EntityType<?> jadearrow = EntityType.Builder.<EntityJadeArrow>create(EntityJadeArrow::new, EntityClassification.MISC) .size(0.25F, 0.25F) .build("jade:jade_arrow") .setRegistryName("jade:jade_arrow"); public static final RegistryObject<EntityType<?>> JADE_ARROW_ENTITY = ENTITY_TYPES.register("jade_arrow", jadearrow); Okay, I switched the field and still get the "Inferred type 'I' for type parameter 'I' is not within its bound; should extend 'net.minecraft.entity.EntityType<?>'"
  6. Ok a little update. I was able to make my entity type but not register it: public static EntityType<EntityJadeArrow> jadearrow = (EntityType<EntityJadeArrow>) EntityType.Builder.<EntityJadeArrow>create(EntityJadeArrow::new, EntityClassification.MISC) .size(0.25F, 0.25F) .build("jade:jade_arrow") .setRegistryName("jade_arrow"); When I call this as an entity type in JadeArrow, I kid you not it shoots pigs This is not a joke. I get the same "Inferred type 'I' for type parameter 'I' is not within its bound; should extend 'net.minecraft.entity.EntityType<?>'" when I try to register jadearrow under ENTITY_TYPES.
  7. Thank you for all the help. When I use ENTITY_TYPES#register my IDE says "Inferred type 'I' for type parameter 'I' is not within its bound; should extend 'net.minecraft.entity.EntityType<?>'" And how do I bind my Renderer to my entity?
  8. I can't figure out how to register my Arrow Entity under my ENTITY_TYPE registry because my EntityJadeArrow class does not extend EntityType. What is the way to register my EntityArrow under the ENTITY_TYPE registry?
  9. [17:30:58] [Render thread/FATAL] [minecraft/Minecraft]: Unreported exception thrown! java.lang.NullPointerException: null at net.minecraft.client.renderer.entity.EntityRendererManager.shouldRender(EntityRendererManager.java:238) ~[forge-1.16.1-32.0.108_mapped_snapshot_20200514-1.16-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.WorldRenderer.updateCameraAndRender(WorldRenderer.java:983) ~[forge-1.16.1-32.0.108_mapped_snapshot_20200514-1.16-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.GameRenderer.renderWorld(GameRenderer.java:613) ~[forge-1.16.1-32.0.108_mapped_snapshot_20200514-1.16-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.GameRenderer.updateCameraAndRender(GameRenderer.java:434) ~[forge-1.16.1-32.0.108_mapped_snapshot_20200514-1.16-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:988) ~[forge-1.16.1-32.0.108_mapped_snapshot_20200514-1.16-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:587) ~[forge-1.16.1-32.0.108_mapped_snapshot_20200514-1.16-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.1-32.0.108_mapped_snapshot_20200514-1.16-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_261] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_261] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_261] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_261] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:55) ~[forge-1.16.1-32.0.108_mapped_snapshot_20200514-1.16-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-6.1.3.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-6.1.3.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-6.1.3.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:81) [modlauncher-6.1.3.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:65) [modlauncher-6.1.3.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:105) [forge-1.16.1-32.0.108_mapped_snapshot_20200514-1.16-recomp.jar:?] {}
  10. Sounds cool Might check this out, do you have a discord?
  11. First off, I had trouble finding a nice example for custom arrows. I had to look at vanilla classes and may have butchered some stuff. I am pretty new to Forge in general too (You can probably get this from my question). I am making a mod that implements Jade and some other cool stuff I was thinking of. It is a crystal that naturally generates in caves and I made blocks for it slabs, some cool recipes to go with it, etc. Now I wanted to make a Jade Arrow. The Jade Arrow is just a "sharper" arrow. I set the arrowHit() to deal excess damage to the LivingEntity that was hit. For some reason when I shoot my Jade Arrow the game crashes. RegistryHandler: package com.chuck.jademod.util; import com.chuck.jademod.Jade; import com.chuck.jademod.blocks.*; import com.chuck.jademod.entities.EntityJadeArrow; import com.chuck.jademod.items.ItemBase; import com.chuck.jademod.items.JadeArrow; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.StairsBlock; import net.minecraft.block.WallBlock; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.entity.projectile.AbstractArrowEntity; import net.minecraft.entity.projectile.ArrowEntity; import net.minecraft.item.*; import net.minecraft.util.ResourceLocation; import net.minecraft.util.registry.Registry; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import java.rmi.registry.RegistryHandler; import static com.chuck.jademod.Jade.MOD_ID; public class RegisteryHandler { public static DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MOD_ID); public static DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MOD_ID); public static DeferredRegister<EntityType<?>> ENTITY_TYPES = DeferredRegister.create(ForgeRegistries.ENTITIES, MOD_ID); public static void init(){ ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus()); BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus()); } // items public static final RegistryObject<Item> JADE_SHARD = ITEMS.register("jade_shard", ItemBase::new ); public static final RegistryObject<Item> JADE_ARROW = ITEMS.register("jade_arrow", JadeArrow::new); // Blocks public static final RegistryObject<Block> JADE_CRYSTAL_BLOCK = BLOCKS.register("jade_crystal_block", JadeCrystalBlock::new); public static final RegistryObject<Block> JADE_ORE_BLOCK = BLOCKS.register("jade_ore_block", JadeOreBlock::new); public static final RegistryObject<Block> JADE_BLOCK = BLOCKS.register("jade_block", JadeBlock::new); public static final RegistryObject<Block> JADE_BLOCK_POLISHED = BLOCKS.register("jade_block_polished", JadeBlockPolished::new); public static final RegistryObject<Block> MOSSY_BRICKS = BLOCKS.register("mossy_brick", MossyBricks::new); public static final RegistryObject<Block> MOSSY_BRICK_WALL = BLOCKS.register("mossy_brick_wall", () -> new WallBlock(Block.Properties.from(Blocks.BRICK_WALL))); public static final RegistryObject<Block> MOSSY_BRICK_STAIR = BLOCKS.register("mossy_brick_stair", () -> new StairsBlock(() -> MOSSY_BRICKS.get().getDefaultState(), Block.Properties.create(Material.ROCK).hardnessAndResistance(2.0F, 6.0F))); public static final RegistryObject<Block> MOSSY_BRICK_SLAB = BLOCKS.register("mossy_brick_slab", MossyBrickSlab::new); // Blocks Items public static final RegistryObject<Item> JADE_CRYSTAL_BLOCK_ITEM = ITEMS.register("jade_crystal_block", () -> new BlockItemBase(JADE_CRYSTAL_BLOCK.get())); public static final RegistryObject<Item> JADE_ORE_BLOCK_ITEM = ITEMS.register("jade_ore_block", () -> new BlockItemBase(JADE_ORE_BLOCK.get())); public static final RegistryObject<Item> JADE_BLOCK_ITEM = ITEMS.register("jade_block", () -> new BlockItemBase(JADE_BLOCK.get())); public static final RegistryObject<Item> JADE_BLOCK_POLISHED_ITEM = ITEMS.register("jade_block_polished", () -> new BlockItemBase(JADE_BLOCK_POLISHED.get())); public static final RegistryObject<Item> MOSSY_BRICK_ITEM = ITEMS.register("mossy_brick", () -> new BlockItemBase(MOSSY_BRICKS.get())); public static final RegistryObject<Item> MOSSY_BRICK_STAIR_ITEM = ITEMS.register("mossy_brick_stair", () -> new BlockItemBase(MOSSY_BRICK_STAIR.get())); public static final RegistryObject<Item> MOSSY_BRICK_SLAB_ITEM = ITEMS.register("mossy_brick_slab", () -> new BlockItemBase(MOSSY_BRICK_SLAB.get())); public static final RegistryObject<Item> MOSSY_BRICK_WALL_ITEM = ITEMS.register("mossy_brick_wall", () -> new BlockItemBase(MOSSY_BRICK_WALL.get())); // Entity Types public static final EntityType<EntityJadeArrow> JADE_ARROW_ENTITY = register("jade_arrow", EntityType.Builder.<EntityJadeArrow>create(EntityJadeArrow::new, EntityClassification.MISC).size(0.5F, 0.5F).func_233606_a_(4).func_233608_b_(20)); private static <T extends Entity> EntityType<T> register(String key, EntityType.Builder<T> builder) { return Registry.register(Registry.ENTITY_TYPE, key, builder.build(key)); } } EntityJadeArrow: package com.chuck.jademod.entities; import com.chuck.jademod.util.RegisteryHandler; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.projectile.AbstractArrowEntity; import net.minecraft.item.ItemStack; import net.minecraft.network.IPacket; import net.minecraft.potion.*; import net.minecraft.world.World; import net.minecraftforge.fml.network.NetworkHooks; public class EntityJadeArrow extends AbstractArrowEntity { public EntityJadeArrow(World worldIn, LivingEntity shooter) { super(RegisteryHandler.JADE_ARROW_ENTITY, shooter, worldIn); } public EntityJadeArrow(EntityType<EntityJadeArrow> entityJadeArrowEntityType, World world) { super(entityJadeArrowEntityType, world); } protected void arrowHit(LivingEntity living) { super.arrowHit(living); EffectInstance effectinstance = new EffectInstance(Effects.INSTANT_DAMAGE, 1, 1); living.addPotionEffect(effectinstance); } protected ItemStack getArrowStack() { return new ItemStack(RegisteryHandler.JADE_ARROW.get());} public IPacket<?> createSpawnPacket() { return NetworkHooks.getEntitySpawningPacket(this); } } JadeArrow: package com.chuck.jademod.items; import com.chuck.jademod.entities.EntityJadeArrow; import com.chuck.jademod.util.RegisteryHandler; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.projectile.AbstractArrowEntity; import net.minecraft.entity.projectile.ArrowEntity; import net.minecraft.entity.projectile.SpectralArrowEntity; import net.minecraft.item.ArrowItem; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class JadeArrow extends ArrowItem { public JadeArrow() { super((new Item.Properties()).group(ItemGroup.COMBAT)); } public AbstractArrowEntity createArrow(World worldIn, ItemStack stack, LivingEntity shooter) { return new EntityJadeArrow(worldIn, shooter); } } JadeArrowRenderer: package com.chuck.jademod.render.entities; import com.chuck.jademod.entities.EntityJadeArrow; import net.minecraft.client.renderer.entity.ArrowRenderer; import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class JadeArrowRenderer extends ArrowRenderer<EntityJadeArrow> { public static final ResourceLocation RES_JADE_ARROW = new ResourceLocation("jade:textures/entity/projectiles/arrow.png"); public JadeArrowRenderer(EntityRendererManager manager) { super(manager); } public ResourceLocation getEntityTexture(EntityJadeArrow entity) { return RES_JADE_ARROW; } } Thank you for any help at all. The arrow.png entity resource is just the same as the default arrow
×
×
  • Create New...

Important Information

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