Jump to content

The_SlayerMC

Members
  • Posts

    209
  • Joined

  • Last visited

Everything posted by The_SlayerMC

  1. as nooby as it sounds, i looked up the new registration tutorials and thats what they had, probably looking at that it doubles up on code. Which would be the better one to run with?
  2. https://github.com/TheSlayerMC/Journey-1.12
  3. The biome code is crashing at trying to set the top block which makes no sense due to prior versions it was working, and basing it off vanilla code it should work too The block code is getting called before the biome which is the way it should be public class BiomeGenEuca extends Biome { public BiomeGenEuca(String par1) { super(new BiomeProperties(par1)); this.setRegistryName(par1); this.topBlock = JourneyBlocks.eucaGrass.getDefaultState(); this.fillerBlock = JourneyBlocks.eucaStone.getDefaultState(); this.spawnableCreatureList.clear(); this.spawnableMonsterList.clear(); this.spawnableWaterCreatureList.clear(); this.spawnableCaveCreatureList.clear(); getSkyColorByTemp(0xffd800); } } and also reading a problem at the portal block trying to register the property for the axis of the block in the constructor public class BlockEucaPortal extends BlockBreakable { public static final PropertyEnum AXIS = PropertyEnum.create("axis", EnumFacing.Axis.class, new EnumFacing.Axis[] {EnumFacing.Axis.X, EnumFacing.Axis.Z}); protected static final AxisAlignedBB X_AABB = new AxisAlignedBB(0.0D, 0.0D, 0.375D, 1.0D, 1.0D, 0.625D); protected static final AxisAlignedBB Z_AABB = new AxisAlignedBB(0.375D, 0.0D, 0.0D, 0.625D, 1.0D, 1.0D); protected static final AxisAlignedBB Y_AABB = new AxisAlignedBB(0.375D, 0.0D, 0.375D, 0.625D, 1.0D, 0.625D); public BlockEucaPortal(String name) { super(Material.PORTAL, false); LangRegistry.addBlock(name, "Euca Portal"); this.setTickRandomly(true); setCreativeTab(JourneyTabs.portalBlocks); this.setDefaultState(this.blockState.getBaseState().withProperty(AXIS, EnumFacing.Axis.X)); //THIS LINE HERE setUnlocalizedName(name); JourneyBlocks.blockName.add(name); JourneyBlocks.blocks.add(this); setRegistryName(name); } @Override public Item getItemDropped(IBlockState state, Random rand, int fortune) { return null; } @Override public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, IBlockAccess worldIn, BlockPos pos) { return null; } @Override public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) { switch ((EnumFacing.Axis)state.getValue(AXIS)) { case X: return X_AABB; case Y: default: return Y_AABB; case Z: return Z_AABB; } } @Override public boolean isFullCube(IBlockState state) { return false; } @Override public int quantityDropped(Random p_149745_1_) { return 0; } @Override public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entity) { if ((entity.getRidingEntity() == null) && ((entity instanceof EntityPlayerMP))) { EntityPlayerMP thePlayer = (EntityPlayerMP)entity; WorldServer worldserver = thePlayer.mcServer.getWorld(thePlayer.dimension); //thePlayer.triggerAchievement(JourneyAchievements.achievementEuca); int dimensionID = Config.euca; Block blockFrame = JourneyBlocks.eucaPortalFrame; if(thePlayer.timeUntilPortal > 0) thePlayer.timeUntilPortal = 10; else if(thePlayer.dimension != dimensionID) { thePlayer.timeUntilPortal = 10; thePlayer.mcServer.getPlayerList().transferPlayerToDimension(thePlayer, dimensionID, new ModTeleporter(thePlayer.mcServer.getWorld(dimensionID), dimensionID, this, blockFrame)); } else { thePlayer.timeUntilPortal = 10; thePlayer.mcServer.getPlayerList().transferPlayerToDimension(thePlayer, 0, new ModTeleporter(thePlayer.mcServer.getWorld(0), 0, this, blockFrame)); } } } @Override public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(AXIS, (meta & 3) == 2 ? EnumFacing.Axis.Z : EnumFacing.Axis.X); } @Override @SideOnly(Side.CLIENT) public BlockRenderLayer getBlockLayer() { return BlockRenderLayer.TRANSLUCENT; } @Override @SideOnly(Side.CLIENT) public void randomDisplayTick(IBlockState state, World worldIn, BlockPos pos, Random rand) { if(rand.nextInt(100) == 0) worldIn.playSound((double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, SoundEvents.BLOCK_PORTAL_AMBIENT, SoundCategory.BLOCKS, 0.5F, rand.nextFloat() * 0.4F + 0.8F, false); for(int i = 0; i < 4; ++i) { double d0 = (float)pos.getX() + rand.nextFloat(); double d1 = (float)pos.getY() + rand.nextFloat(); double d2 = (float)pos.getZ() + rand.nextFloat(); double d3 = (rand.nextFloat() - 0.5D) * 0.5D; double d4 = (rand.nextFloat() - 0.5D) * 0.5D; double d5 = (rand.nextFloat() - 0.5D) * 0.5D; int j = rand.nextInt(2) * 2 - 1; if(worldIn.getBlockState(pos.west()).getBlock() != this && worldIn.getBlockState(pos.east()).getBlock() != this) { d0 = (double)pos.getX() + 0.5D + 0.25D * j; d3 = rand.nextFloat() * 2.0F * j; } else { d2 = (double)pos.getZ() + 0.5D + 0.25D * j; d5 = rand.nextFloat() * 2.0F * j; } EntityEucaPotalFX var20 = new EntityEucaPotalFX(worldIn, d0, d1, d2, d3, d4, d5); FMLClientHandler.instance().getClient().effectRenderer.addEffect(var20); } } @Override @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) { pos = pos.offset(side); EnumFacing.Axis enumfacing$axis = null; if(blockState.getBlock() == this) { enumfacing$axis = (EnumFacing.Axis)blockState.getValue(AXIS); if(enumfacing$axis == null) return false; if(enumfacing$axis == EnumFacing.Axis.Z && side != EnumFacing.EAST && side != EnumFacing.WEST) return false; if(enumfacing$axis == EnumFacing.Axis.X && side != EnumFacing.SOUTH && side != EnumFacing.NORTH) return false; } boolean flag = blockAccess.getBlockState(pos.west()).getBlock() == this && blockAccess.getBlockState(pos.west(2)).getBlock() != this; boolean flag1 = blockAccess.getBlockState(pos.east()).getBlock() == this && blockAccess.getBlockState(pos.east(2)).getBlock() != this; boolean flag2 = blockAccess.getBlockState(pos.north()).getBlock() == this && blockAccess.getBlockState(pos.north(2)).getBlock() != this; boolean flag3 = blockAccess.getBlockState(pos.south()).getBlock() == this && blockAccess.getBlockState(pos.south(2)).getBlock() != this; boolean flag4 = flag || flag1 || enumfacing$axis == EnumFacing.Axis.X; boolean flag5 = flag2 || flag3 || enumfacing$axis == EnumFacing.Axis.Z; if(flag4 && side == EnumFacing.WEST) return true; else if(flag4 && side == EnumFacing.EAST)return true; else if(flag5 && side == EnumFacing.NORTH) return true; else return flag5 && side == EnumFacing.SOUTH; } public boolean makePortal(World worldIn, BlockPos p) { BlockEucaPortal.Size size = new BlockEucaPortal.Size(worldIn, p, EnumFacing.Axis.X); if(size.isValid() && size.portalBlockCount == 0) { size.placePortalBlocks(); return true; } else { BlockEucaPortal.Size size1 = new BlockEucaPortal.Size(worldIn, p, EnumFacing.Axis.Z); if(size1.isValid() && size1.portalBlockCount == 0) { size1.placePortalBlocks(); return true; } else { return false; } } } @Override public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) { return new ItemStack(this); } @Override public int getMetaFromState(IBlockState state) { return meta((EnumFacing.Axis)state.getValue(AXIS)); } public static int meta(Axis a) { return a == EnumFacing.Axis.X ? 1 : (a == EnumFacing.Axis.Z ? 2 : 0); } @Override public IBlockState withRotation(IBlockState state, Rotation rot) { switch (rot) { case COUNTERCLOCKWISE_90: case CLOCKWISE_90: switch ((EnumFacing.Axis)state.getValue(AXIS)) { case X: return state.withProperty(AXIS, EnumFacing.Axis.Z); case Z: return state.withProperty(AXIS, EnumFacing.Axis.X); default: return state; } default: return state; } } @Override public BlockFaceShape getBlockFaceShape(IBlockAccess i, IBlockState i2, BlockPos p, EnumFacing f) { return BlockFaceShape.UNDEFINED; } public static class Size { private final World world; private final EnumFacing.Axis axis; private final EnumFacing rightDir; private final EnumFacing leftDir; private int portalBlockCount; private BlockPos bottomLeft; private int height; private int width; public Size(World worldIn, BlockPos pos, EnumFacing.Axis axis) { this.world = worldIn; this.axis = axis; if(axis == EnumFacing.Axis.X) { this.leftDir = EnumFacing.EAST; this.rightDir = EnumFacing.WEST; } else { this.leftDir = EnumFacing.NORTH; this.rightDir = EnumFacing.SOUTH; } for(BlockPos blockpos = pos; pos.getY() > blockpos.getY() - 21 && pos.getY() > 0 && this.isEmptyBlock(worldIn.getBlockState(pos.down()).getBlock()); pos = pos.down()) { ; } int i = this.getDistanceUntilEdge(pos, this.leftDir) - 1; if(i >= 0) { this.bottomLeft = pos.offset(this.leftDir, i); this.width = this.getDistanceUntilEdge(this.bottomLeft, this.rightDir); if(this.width < 2 || this.width > 21) { this.bottomLeft = null; this.width = 0; } } if(this.bottomLeft != null) { this.height = this.calculatePortalHeight(); } } protected int getDistanceUntilEdge(BlockPos pos, EnumFacing facing) { int i; for(i = 0; i < 22; ++i) { BlockPos blockpos = pos.offset(facing, i); if(!this.isEmptyBlock(this.world.getBlockState(blockpos).getBlock()) || this.world.getBlockState(blockpos.down()).getBlock() != JourneyBlocks.eucaPortalFrame) { break; } } Block block = this.world.getBlockState(pos.offset(facing, i)).getBlock(); return block == JourneyBlocks.eucaPortalFrame ? i : 0; } public int getHeight() { return this.height; } public int getWidth() { return this.width; } protected int calculatePortalHeight() { label56: for(this.height = 0; this.height < 21; ++this.height) { for(int i = 0; i < this.width; ++i) { BlockPos blockpos = this.bottomLeft.offset(this.rightDir, i).up(this.height); Block block = this.world.getBlockState(blockpos).getBlock(); if(!this.isEmptyBlock(block)) { break label56; } if(block == JourneyBlocks.eucaPortal) { ++this.portalBlockCount; } if(i == 0) { block = this.world.getBlockState(blockpos.offset(this.leftDir)).getBlock(); if(block != JourneyBlocks.eucaPortalFrame) { break label56; } } else if(i == this.width - 1) { block = this.world.getBlockState(blockpos.offset(this.rightDir)).getBlock(); if(block != JourneyBlocks.eucaPortalFrame) { break label56; } } } } for(int j = 0; j < this.width; ++j) { if (this.world.getBlockState(this.bottomLeft.offset(this.rightDir, j).up(this.height)).getBlock() != JourneyBlocks.eucaPortalFrame) { this.height = 0; break; } } if (this.height <= 21 && this.height >= 3) { return this.height; } else { this.bottomLeft = null; this.width = 0; this.height = 0; return 0; } } protected boolean isEmptyBlock(Block blockIn) { return blockIn.getMaterial(blockIn.getDefaultState()) == Material.AIR || blockIn == JourneyBlocks.fire || blockIn == JourneyBlocks.eucaPortal; } public boolean isValid() { return this.bottomLeft != null && this.width >= 2 && this.width <= 21 && this.height >= 3 && this.height <= 21; } public void placePortalBlocks() { for(int i = 0; i < this.width; ++i) { BlockPos blockpos = this.bottomLeft.offset(this.rightDir, i); for(int j = 0; j < this.height; ++j) { this.world.setBlockState(blockpos.up(j), JourneyBlocks.eucaPortal.getDefaultState().withProperty(BlockEucaPortal.AXIS, this.axis), 2); } } } } } net.minecraftforge.fml.common.LoaderExceptionModCrash: Caught exception from Journey Into the Light (essence) Caused by: java.lang.ExceptionInInitializerError at net.journey.dimension.euca.BiomeGenEuca.<init>(BiomeGenEuca.java:12) at net.journey.dimension.DimensionHelper.<clinit>(DimensionHelper.java:105) at net.journey.proxy.CommonProxy.preInit(CommonProxy.java:72) at net.journey.JITL.preInit(JITL.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:629) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) at com.google.common.eventbus.EventBus.post(EventBus.java:217) at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:218) at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:196) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) at com.google.common.eventbus.EventBus.post(EventBus.java:217) at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:135) at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:627) at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:245) at net.minecraft.client.Minecraft.init(Minecraft.java:513) at net.minecraft.client.Minecraft.run(Minecraft.java:421) at net.minecraft.client.main.Main.main(Main.java:118) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) at GradleStart.main(GradleStart.java:25) Caused by: java.lang.IllegalArgumentException: Cannot set property PropertyEnum{name=axis, clazz=class net.minecraft.util.EnumFacing$Axis, values=[x, z]} as it does not exist in BlockStateContainer{block=null, properties=[]} at net.minecraft.block.state.BlockStateContainer$StateImplementation.withProperty(BlockStateContainer.java:221) at net.journey.blocks.portal.BlockEucaPortal.<init>(BlockEucaPortal.java:48) at net.journey.JourneyBlocks.<clinit>(JourneyBlocks.java:285) ... 51 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details: Minecraft Version: 1.12.2 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_171, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 634148792 bytes (604 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: MCP 9.42 Powered by Forge 14.23.4.2705 5 mods loaded, 5 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored | State | ID | Version | Source | Signature | |:----- |:--------- |:------------ |:-------------------------------- |:--------- | | UCH | minecraft | 1.12.2 | minecraft.jar | None | | UCH | mcp | 9.42 | minecraft.jar | None | | UCH | FML | 8.0.99.99 | forgeSrc-1.12.2-14.23.4.2705.jar | None | | UCH | forge | 14.23.4.2705 | forgeSrc-1.12.2-14.23.4.2705.jar | None | | UCEE | essence | 1.2 | bin | None | Loaded coremods (and transformers): GL info: ' Vendor: 'Intel' Version: '4.4.0 - Build 22.20.16.4708' Renderer: 'Intel(R) HD Graphics 630' [12:34:15] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: #@!@# Game crashed! Crash report saved to: #@!@# D:\Development\Minecraft\Forge\1.12\run\.\crash-reports\crash-2018-06-17_12.34.15-client.txt
  4. As each item/block is constructed, it adds to the array list that it uses, why would i do it separate and have to double up on code?
  5. its under the devmode boolean which is false on release, meaning it doesnt run when mod isnt in dev
  6. automating some and manually doing the rest makes no sense, automate all or none at all
  7. it took about 20 mins to write a file that has written 1055 lines for me and can continue to with no effort
  8. because it automatically adds new items/blocks by itself so i dont have to do it, why would i do it manually if i scripted it to do it automatically
  9. I only generate it during dev as it generates to the users desktop meaning mine or whoever downloads the source, ive got a booelan running for dev mode
  10. My lang registry file is auto generated, just same name as the old one sorry https://github.com/TheSlayerMC/Journey-1.12/blob/master/main/java/net/journey/util/LangRegistry.java
  11. just changed for(int i = 0; i < items.size(); i++) event.getRegistry().registerAll(items.get(i));
  12. Quick question, where is the null being pointed from, shouldnt be nulled from what i can see
  13. Ive just come back from a 3 year break and forge is different now, im back to the basics and struggling to register items/blocks. this is basically my setup for items and blocks https://github.com/TheSlayerMC/Journey-1.12 Items: @EventBusSubscriber(modid=SlayerAPI.MOD_ID) public class JourneyItems public static ArrayList<Item> items = new ArrayList<Item>(); public static final Item hellstoneIngot = new ItemMod("hellstoneIngot", "Bloodcrust Ingot"); @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) { for(Item i : items) event.getRegistry().registerAll(i); } ItemMod: public ItemMod(String name, String finalName, CreativeTabs tab){ LangRegistry.addItem(name, finalName); setUnlocalizedName(name); setCreativeTab(tab); setRegistryName(name); JourneyItems.itemNames.add(name); JourneyItems.items.add(this); } CrashReport
  14. I think its fixed now, i added a player parameter to the methods and seemed to fix it all if(player instanceof EntityPlayerMP) Journey.wrapper.sendTo(new MessageEssenceBar(essence, regenDelay == 0), (EntityPlayerMP)player); also did that, thanks!
  15. The thing is i dont have a instance to EntityPlayer in the Essence class, i could make a constructor in the class getting one, but i dont create an instance for the Essence class either, its constructed from the default instance method, and even if i wanted to change that, where i register my class in the BarTickHandler i dont have a player instance either so thats another problem, i could use Minecraft.getMinecraft().thePlayer but thats a SP instance and i want MP
  16. Also should state that that code changes things, the bar rendering starts to spazz, changes from rendering the ghost value to the normal value every tick
  17. [spoiler=Journey] public static SimpleNetworkWrapper wrapper; @EventHandler public static void preInit(FMLPreInitializationEvent event) { wrapper = NetworkRegistry.INSTANCE.newSimpleChannel("EssenceNetwork"); wrapper.registerMessage(MessageEssenceBar.EssenceHandler.class, MessageEssenceBar.class, 0, Side.CLIENT); } [spoiler=common/client proxy] public void updateEssence(int amount) { } ------------------------------------------------------------------- @Override public void updateEssence(int amount) { final IEssenceBar essence = Minecraft.getMinecraft().thePlayer.getCapability(BarTickHandler.ESSENCE_CAP, null); essence.setBarValue(amount); } [spoiler=MessageEssenceBar] public class MessageEssenceBar implements IMessage { public int amount; public boolean shouldRegen; public MessageEssenceBar() { } public MessageEssenceBar(int amount, boolean shouldRegen) { this.amount = amount; this.shouldRegen = shouldRegen; } @Override public void fromBytes(ByteBuf buf) { amount = buf.readInt(); shouldRegen = buf.readBoolean(); } @Override public void toBytes(ByteBuf buf) { buf.writeInt(amount); buf.writeBoolean(shouldRegen); } public static class EssenceHandler implements IMessageHandler<MessageEssenceBar, IMessage> { @Override public IMessage onMessage(MessageEssenceBar message, MessageContext ctx) { BarTickHandler.essenceAmount = message.amount; BarTickHandler.regenEssence = message.shouldRegen; Journey.proxy.updateEssence(message.amount); return null; } } }
  18. Ive really not had much to do with Packets
  19. do you mean the read/write NBTBase method?
  20. Hey, i was updating from 1.8 with IEEP to 1.10 with Capabilities, but everything I've done seem to add a copy of my mana, an un usable version of it. I ran a debug system print of the mana value, it rejuvenates as you would expect it too over time, but a ghost value renders over my mana bar and not the value that keeps changing when i right click the item The ghost value rejuvenates as well but it gets to 10, like the bar is supposed too but wont go down when i use the item, the main value does go down when i use it though, its like when i right click the item, the value gets used, then the ghost value is dominate as the bar rending code uses that value instead. [spoiler=Item code] @Override public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand) { final IEssenceBar bar1 = player.getCapability(BarTickHandler.ESSENCE_CAP, null); if(!world.isRemote && bar1.useBar(usage)) { //ENTITY SPAWN CODE } } [spoiler=Bar tick code] public class BarTickHandler { private EntityPlayer player; private int ticks = 10; public static int darkAmount, powerAmount; @CapabilityInject(IEssenceBar.class) public static Capability<IEssenceBar> ESSENCE_CAP = null; @SubscribeEvent public void onEntityConstructing(AttachCapabilitiesEvent evt) { evt.addCapability(new ResourceLocation(SlayerAPI.MOD_ID, "IEssenceBar"), new ICapabilitySerializable<NBTPrimitive>() { IEssenceBar inst = ESSENCE_CAP.getDefaultInstance(); @Override public boolean hasCapability(Capability<?> capability, EnumFacing facing) { return capability == ESSENCE_CAP; } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { return capability == ESSENCE_CAP ? ESSENCE_CAP.<T>cast(inst) : null; } @Override public NBTPrimitive serializeNBT() { return (NBTPrimitive)ESSENCE_CAP.getStorage().writeNBT(ESSENCE_CAP, inst, null); } @Override public void deserializeNBT(NBTPrimitive nbt) { ESSENCE_CAP.getStorage().readNBT(ESSENCE_CAP, inst, null, nbt); } }); } @SubscribeEvent public void onTick(PlayerTickEvent event) { if(event.phase == Phase.END) tickEnd(event.player); } @SubscribeEvent @SideOnly(Side.CLIENT) public void renderEvent(RenderTickEvent event) { onTickRender(Minecraft.getMinecraft().thePlayer); } @SideOnly(Side.CLIENT) private void onTickRender(EntityPlayer player) { Minecraft mc = Minecraft.getMinecraft(); if(mc.currentScreen == null) { if(!player.capabilities.isCreativeMode) { GL11.glPushMatrix(); GlStateManager.enableBlend(); GlStateManager.enableAlpha(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GuiIngame gig = mc.ingameGUI; ScaledResolution scaledresolution = new ScaledResolution(mc); mc.getTextureManager().bindTexture(new ResourceLocation(SlayerAPI.MOD_ID, "textures/gui/misc.png")); int y = scaledresolution.getScaledHeight() - 30, x = 10, x1 = 10, x2 = 10; gig.drawTexturedModalRect(x - 10, y + 10, 0, 177, 117, 19); gig.drawTexturedModalRect(x - 10, y - 5, 0, 177, 117, 19); gig.drawTexturedModalRect(x - 10, y - 20, 0, 177, 117, 19); gig.drawTexturedModalRect(x - 6, y - 13, 0, 23, 109, 5); for(int i = 0; i < player.getCapability(ESSENCE_CAP, null).getBarValue(); i++) { x += 11; gig.drawTexturedModalRect(x - 17, y - 13, 0, 0, 10, 5); } y += 15; gig.drawTexturedModalRect(x1 - 6, y - 13, 0, 36, 109, 5); for(int i = 0; i < darkAmount; i++) { x1 += 11; gig.drawTexturedModalRect(x1 - 17, y - 13, 0, 5, 10, 5); } gig.drawTexturedModalRect(x2 - 6, y + 2, 0, 49, 109, 5); for(int i = 0; i < powerAmount; i++) { x2 += 11; gig.drawTexturedModalRect(x2 - 17, y + 2, 0, 10, 10, 5); } GlStateManager.disableAlpha(); GlStateManager.disableBlend(); GL11.glPopMatrix(); } } } private void tickEnd(EntityPlayer player) { final IEssenceBar essence = player.getCapability(ESSENCE_CAP, null); if(ticks-- <= 0) ticks = 20; if(ticks >= 20) { essence.updateAllBars(); } essence.mainUpdate(); } } [spoiler=Capability registry in common proxy] CapabilityManager.INSTANCE.register(IEssenceBar.class, new EssenceStorage(), EssenceBar.class); [spoiler=IEssenceBar] public interface IEssenceBar { boolean useBar(int mana); int getBarValue(); void mainUpdate(); void setBarValue(int mana); void removeBarPoints(int mana); void updateAllBars(); } [spoiler=EssenceBar] @Override public boolean useBar(int amount) { if(essence < amount) { regenDelay = 10; return false; } essence -= amount; regenDelay = 10; return true; } @Override public int getBarValue() { return essence; } @Override public void mainUpdate() { if(getBarValue() >= 10) essence = 10; System.out.println(essence); } @Override public void setBarValue(int mana) { essence = mana; } @Override public void removeBarPoints(int mana) { regenDelay = 10; essence -= mana; } @Override public void updateAllBars() { essence += 1; } } [spoiler=EssenceStorage] public class EssenceStorage implements Capability.IStorage<IEssenceBar>{ @Override public NBTBase writeNBT(Capability<IEssenceBar> capability, IEssenceBar instance, EnumFacing side) { return new NBTTagByte((byte)0); } @Override public void readNBT(Capability<IEssenceBar> capability, IEssenceBar instance, EnumFacing side, NBTBase nbt) { } }
  21. I used to be a coder for JurassicCraft, and the LLibrary is just a helper. The "Animation API" is inside the actual mods code, not a library.
  22. It literally says in the top line... [08:38:56] [Netty Local Client IO #0/ERROR] [FML]: There was a critical exception handling a packet on channel TriamChannel io.netty.handler.codec.DecoderException: java.lang.IllegalArgumentException: Varint length is between 1 and 5, not 16
  23. Oh wow.... I can't believe I'm stupid enough to not set the items to null but to set the actual field to null.... Thanks!
  24. While trying to make some kind of "crafting table" by checking the items in the slots I seem to get a crash when i try to remove an item from any slot in the Tile Entity (Inventory slots work fine) Here is what the GUI looks like: http://prntscr.com/6rh5df I get a NPE at the line for(int i = 0; i < inventory.length; i++) In the Tile entity -> public void writeToNBT(NBTTagCompound nbt) [spoiler=Container] public class ContainerSummoningTable extends Container { public IInventory tableInventory; private World world; public ContainerSummoningTable(InventoryPlayer inventory, TileEntitySummoningTable entity, World w) { world = w; tableInventory = entity; this.addSlotToContainer(new Slot(entity, 0, 44, 17)); this.addSlotToContainer(new Slot(entity, 1, 44, 35)); this.addSlotToContainer(new Slot(entity, 2, 44, 53)); this.addSlotToContainer(new Slot(entity, 3, 80, 35)); this.addSlotToContainer(new Slot(entity, 4, 117, 17)); this.addSlotToContainer(new Slot(entity, 5, 117, 35)); this.addSlotToContainer(new Slot(entity, 6, 117, 53)); for(int i = 0; i < 3; ++i) for(int j = 0; j < 9; ++j) this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); for(int i = 0; i < 9; ++i) this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 142)); } @Override public void onContainerClosed(EntityPlayer playerIn) { super.onContainerClosed(playerIn); /*if(!world.isRemote) { ItemStack itemstack = this.tableInventory.getStackInSlotOnClosing(0); if (itemstack != null) { playerIn.dropPlayerItemWithRandomChoice(itemstack, false); } }*/ } @Override public boolean canInteractWith(EntityPlayer playerIn) { return true; } } [spoiler=Tile Entity] public class TileEntitySummoningTable extends TileEntity implements IUpdatePlayerListBox, IInventory { private ItemStack[] inventory; public TileEntitySummoningTable() { this.inventory = new ItemStack[7]; } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagList nbttaglist = new NBTTagList(); for(int i = 0; i < inventory.length; i++) { if(this.inventory[i] != null) { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte)i); this.inventory[i].writeToNBT(nbttagcompound1); nbttaglist.appendTag(nbttagcompound1); } } nbt.setTag("Items", nbttaglist); } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList nbttaglist = nbt.getTagList("Items", 10); for(int i = 0; i < nbttaglist.tagCount(); i++) { NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); byte b0 = nbttagcompound1.getByte("Slot"); if(b0 >= 0 && b0 < this.inventory.length) this.inventory[b0] = ItemStack.loadItemStackFromNBT(nbttagcompound1); } } @Override public void update() { /*if(inventory[0] != null && inventory[1] != null && inventory[2] != null && inventory[3] != null && inventory[4] != null && inventory[5] != null && inventory[6] != null) { Item item1 = inventory[0].getItem(), item2 = inventory[1].getItem(), item3 = inventory[2].getItem(), item4 = inventory[3].getItem(), item5 = inventory[4].getItem(), item6 = inventory[5].getItem(), item7 = inventory[6].getItem(); if(item1 == EssenceItems.boilPowder && item2 == EssenceItems.boilPowder && item3 == EssenceItems.boilPowder && item4 == EssenceItems.blazingFireball && item5 == EssenceItems.boilPowder && item6 == EssenceItems.boilPowder && item7 == EssenceItems.boilPowder) { inventory[3].setItem(EssenceItems.blazierOrb); } }*/ } @Override public int getSizeInventory() { return inventory.length; } @Override public ItemStack getStackInSlot(int i) { return inventory[i]; } @Override public String getName() { return "Summoning Table"; } @Override public boolean hasCustomName() { return true; } @Override public IChatComponent getDisplayName() { return null; } @Override public ItemStack decrStackSize(int i, int j) { if(inventory[i] != null) { if(inventory[i].stackSize <= j) { ItemStack itemstack = inventory[i]; inventory = null; return itemstack; } else { inventory[i].stackSize -= j; return new ItemStack(inventory[i].getItem(), j, inventory[i].getMetadata()); } } else { return null; } } @Override public ItemStack getStackInSlotOnClosing(int index) { if(this.inventory[index] != null) { ItemStack itemstack = inventory[index]; this.inventory = null; return itemstack; } else { return null; } } @Override public void setInventorySlotContents(int index, ItemStack stack) { boolean flag = stack != null && stack.isItemEqual(this.inventory[index]) && ItemStack.areItemStackTagsEqual(stack, this.inventory[index]); this.inventory[index] = stack; if(stack != null && stack.stackSize > this.getInventoryStackLimit()) stack.stackSize = this.getInventoryStackLimit(); if(index == 0 && !flag) this.markDirty(); } @Override public int getInventoryStackLimit() { return 64; } @Override public boolean isUseableByPlayer(EntityPlayer player) { return true; } @Override public void openInventory(EntityPlayer player) { } @Override public void closeInventory(EntityPlayer player) { } @Override public boolean isItemValidForSlot(int index, ItemStack stack) { return stack.getItem() != null; } @Override public int getField(int id) { return 0; } @Override public void setField(int id, int value) { } @Override public int getFieldCount() { return 0; } @Override public void clear() { for(int i = 0; i < getSizeInventory(); i++) inventory[i] = null; } } [spoiler=Crash] [15:24:40] [server thread/ERROR] [FML]: A TileEntity type net.essence.blocks.tileentity.TileEntitySummoningTable has throw an exception trying to write state. It will not persist. Report this to the mod author java.lang.NullPointerException at net.essence.blocks.tileentity.TileEntitySummoningTable.writeToNBT(TileEntitySummoningTable.java:26) ~[TileEntitySummoningTable.class:?] at net.minecraft.world.chunk.storage.AnvilChunkLoader.writeChunkToNBT(AnvilChunkLoader.java:382) [AnvilChunkLoader.class:?] at net.minecraft.world.chunk.storage.AnvilChunkLoader.saveChunk(AnvilChunkLoader.java:183) [AnvilChunkLoader.class:?] at net.minecraft.world.gen.ChunkProviderServer.saveChunkData(ChunkProviderServer.java:246) [ChunkProviderServer.class:?] at net.minecraft.world.gen.ChunkProviderServer.saveChunks(ChunkProviderServer.java:305) [ChunkProviderServer.class:?] at net.minecraft.world.WorldServer.saveAllChunks(WorldServer.java:938) [WorldServer.class:?] at net.minecraft.server.MinecraftServer.saveAllWorlds(MinecraftServer.java:363) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.stopServer(MinecraftServer.java:395) [MinecraftServer.class:?] at net.minecraft.server.integrated.IntegratedServer.stopServer(IntegratedServer.java:328) [integratedServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:531) [MinecraftServer.class:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_20]
×
×
  • Create New...

Important Information

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