SpikeViper
Members-
Posts
35 -
Joined
-
Last visited
Converted
-
Gender
Male
-
Location
USA
-
Personal Text
Modding Mods!
SpikeViper's Achievements
Tree Puncher (2/8)
1
Reputation
-
Thanks; works beautifully!
-
I'm currently making a mod that adds projectiles to the game, but I can't get them to hit a target accurately because I cannot factor in Minecraft's air drag. Does anyone know the equation minecraft uses to apply air drag (per tick)?
-
Thank you! Works perfectly!
-
So I'm going to have to get rid of the Registry and do it the normal way then? Or at least the initialization part?
-
Could you please explain how to fix this? I thought that the Main class called the registry class, which was initializing them... I tried to make the registry class so I could make the main class cleaner.
-
Im 99.99% sure it is initialized... Here is ALL the code: Main: package com.dotk.main; import java.lang.reflect.InvocationTargetException; import com.dotk.proxies.CommonProxy; import com.dotk.registry.Registry; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @Mod(modid = Main.MODID, version = Main.VERSION, name = Main.NAME) public class Main { public static final String MODID = "dotk"; public static final String VERSION = "1.0"; public static final String NAME = "Defenders Of The Keep"; public static CreativeTabs tabDotk = new CreativeTabs("Defenders Of The Keep") { @Override @SideOnly(Side.CLIENT) public Item getTabIconItem() { return Items.nether_star; } }; public static Item TestItem; public static Block TestBlock; public static Block CastleWall; public static Block CastleWall1; public static Block CastleWall2; public static Block CastleWall3; @Instance public static Main instance = new Main(); @SidedProxy(clientSide="com.dotk.proxies.ClientProxy", serverSide="com.dotk.proxies.ServerProxy") public static CommonProxy proxy; @EventHandler public void preInit(FMLPreInitializationEvent event) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { } @EventHandler public void Init(FMLInitializationEvent event) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { Registry.RegisterItem(TestItem, "TestItem", "TestItem"); Registry.RegisterBlock(TestBlock, "TestBlock", "TestBlock"); Registry.RegisterBlock(CastleWall, "CastleWall", "CastleWall"); Registry.RegisterBlock(CastleWall1, "CastleWall1", "CastleWall1"); Registry.RegisterBlock(CastleWall2, "CastleWall2", "CastleWall2"); Registry.RegisterBlock(CastleWall3, "CastleWall3", "CastleWall3"); } @EventHandler public void postInit(FMLPostInitializationEvent event) { } } REGISTRY: package com.dotk.registry; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import com.dotk.blocks.TestBlock; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraftforge.fml.common.registry.GameRegistry; public class Registry { public static void RegisterBlock(Object block, String className, String unlocalizedname) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ className = "com.dotk.blocks." + className; Class<?> clazz = Class.forName(className); Constructor<?> ctor = clazz.getConstructor(); GameRegistry.registerBlock((Block) (block = ctor.newInstance(new Object[] {})), unlocalizedname); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock((Block) block), 0, new ModelResourceLocation("dotk:" + unlocalizedname, "inventory")); } public static void RegisterItem(Object item, String className, String unlocalizedname) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ className = "com.dotk.items." + className; Class<?> clazz = Class.forName(className); Constructor<?> ctor = clazz.getConstructor(); item = ctor.newInstance(new Object[] {}); GameRegistry.registerItem((Item) item, unlocalizedname); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register((Item) item, 0, new net.minecraft.client.resources.model.ModelResourceLocation("dotk:" + unlocalizedname, "inventory")); } } ] CASTLEWALL: package com.dotk.blocks; import java.util.List; import com.dotk.main.Main; import com.dotk.registry.Registry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumWorldBlockLayer; import net.minecraft.world.World; import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; public class CastleWall extends Block { public CastleWall() { super(Material.rock); this.setUnlocalizedName("CastleWall"); this.setCreativeTab(Main.tabDotk); this.setHardness(7.0f); this.setResistance(5.0f); this.setHarvestLevel("pickaxe",1); this.setDefaultState(this.blockState.getBaseState()); } @Override public EnumWorldBlockLayer getBlockLayer() { return EnumWorldBlockLayer.SOLID; } @Override public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { worldIn.setBlockState(pos, Main.CastleWall1.getDefaultState()); } } CASTLEWALL1: package com.dotk.blocks; import java.util.List; import com.dotk.main.Main; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumWorldBlockLayer; import net.minecraft.world.World; public class CastleWall1 extends Block { public CastleWall1() { super(Material.rock); this.setUnlocalizedName("CastleWall1"); this.setCreativeTab(Main.tabDotk); this.setHardness(7.0f); this.setResistance(5.0f); this.setHarvestLevel("pickaxe",1); this.setDefaultState(this.blockState.getBaseState()); } @Override public EnumWorldBlockLayer getBlockLayer() { return EnumWorldBlockLayer.SOLID; } public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player) throws InterruptedException { } @Override public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { } }
-
Bump? Is bumping allowed?
-
Yes. If I remove the break method, I can place it, mine it, etc.
-
Using breakBlock now since I want this to happen whether it's a player or not. But now I get errors. CODE: package com.dotk.blocks; import java.util.List; import com.dotk.main.Main; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumWorldBlockLayer; import net.minecraft.world.World; import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; public class CastleWall extends Block { public CastleWall() { super(Material.rock); this.setUnlocalizedName("CastleWall"); this.setCreativeTab(Main.tabDotk); this.setHardness(7.0f); this.setResistance(5.0f); this.setHarvestLevel("pickaxe",1); this.setDefaultState(this.blockState.getBaseState()); } @Override public EnumWorldBlockLayer getBlockLayer() { return EnumWorldBlockLayer.SOLID; } @Override public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { worldIn.setBlockState(pos, Main.CastleWall1.getDefaultState()); } } [/Code] ERROR: [Code][13:51:23] [server thread/FATAL] [FML]: Exception caught executing FutureTask: java.util.concurrent.ExecutionException: java.lang.NullPointerException java.util.concurrent.ExecutionException: java.lang.NullPointerException at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_51] at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_51] at net.minecraftforge.fml.common.FMLCommonHandler.callFuture(FMLCommonHandler.java:715) [FMLCommonHandler.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:727) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:669) [MinecraftServer.class:?] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:171) [integratedServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:540) [MinecraftServer.class:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_51] Caused by: java.lang.NullPointerException at com.dotk.blocks.CastleWall.breakBlock(CastleWall.java:50) ~[CastleWall.class:?] at net.minecraft.world.chunk.Chunk.setBlockState(Chunk.java:721) ~[Chunk.class:?] at net.minecraft.world.World.setBlockState(World.java:386) ~[World.class:?] at net.minecraft.world.World.setBlockToAir(World.java:435) ~[World.class:?] at net.minecraft.block.Block.removedByPlayer(Block.java:1402) ~[block.class:?] at net.minecraft.server.management.ItemInWorldManager.removeBlock(ItemInWorldManager.java:296) ~[itemInWorldManager.class:?] at net.minecraft.server.management.ItemInWorldManager.tryHarvestBlock(ItemInWorldManager.java:349) ~[itemInWorldManager.class:?] at net.minecraft.server.management.ItemInWorldManager.blockRemoving(ItemInWorldManager.java:261) ~[itemInWorldManager.class:?] at net.minecraft.network.NetHandlerPlayServer.processPlayerDigging(NetHandlerPlayServer.java:563) ~[NetHandlerPlayServer.class:?] at net.minecraft.network.play.client.C07PacketPlayerDigging.processPacket(C07PacketPlayerDigging.java:53) ~[C07PacketPlayerDigging.class:?] at net.minecraft.network.play.client.C07PacketPlayerDigging.processPacket(C07PacketPlayerDigging.java:76) ~[C07PacketPlayerDigging.class:?] at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:24) ~[PacketThreadUtil$1.class:?] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_51] at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_51] at net.minecraftforge.fml.common.FMLCommonHandler.callFuture(FMLCommonHandler.java:714) ~[FMLCommonHandler.class:?] ... 5 more [13:51:25] [server thr[/Code]
-
I am currently trying to make a block that, when broke, replaces itself with a more damaged version of itself. I didn't just give one block blockstates, because the blocks will act differently depending on how damaged they are. I am currently using the blockBreak event, but it doesn't seem to be working. Block Code: package com.dotk.blocks; import java.util.List; import com.dotk.main.Main; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumWorldBlockLayer; import net.minecraft.world.World; import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; public class CastleWall extends Block { public CastleWall() { super(Material.rock); this.setUnlocalizedName("CastleWall"); this.setCreativeTab(Main.tabDotk); this.setHardness(7.0f); this.setResistance(5.0f); this.setHarvestLevel("pickaxe",1); this.setDefaultState(this.blockState.getBaseState()); } @Override public EnumWorldBlockLayer getBlockLayer() { return EnumWorldBlockLayer.SOLID; } @SubscribeEvent public void BreakEvent(BreakEvent event) { BlockPos pos = event.pos; World world = event.world; world.setBlockState(pos, Main.CastleWall1.getDefaultState()); } } [/Code]