Mark136
-
Posts
77 -
Joined
-
Last visited
Posts posted by Mark136
-
-
public static SimpleNetworkWrapper network;
and in my pre-Init i got this
network = NetworkRegistry.INSTANCE.newSimpleChannel("mark13695");
network.registerMessage(SkillPacket.MarkHandler.class , SkillPacket.class, 0, Side.CLIENT);
no error anymore but my player is null:
this print: System.out.println("Test-3 Packet" + this.Player + " Excavation XP: " + XP[10]);
gives me this
[21:39:03] [Client thread/INFO] [sTDOUT]: [com.modMark.Packets.SkillPacket:toBytes:52]: Test-3 Packetnull Excavation XP: 0
-
...
public class SkillPacket implements IMessage{ private EntityPlayer Player; //oh, you not gonna mis this laughery. Look at it, the perfect way to initialise an Array //-.- private int[] XP; // Changed to private int
-
Okay, Changed my XP tot non-static, so now i understand that, but still got an console error
now, i gonna try again what i'm doing exactly
first, I mine a block.
then MinExcaWC_XP will be called.
public void MinExcaWC_XP(BreakEvent event){ // this Method Checks what Block What Player Breaks // And then, this adds XP (I Checked if this works on Serverside, and it's all fine.) // and tells to Synchronise MarkData p = MarkData.get(event.getPlayer()); [...] p.Sync(); }
Now we gonna Look at some things in the
public static MarkData get(EntityPlayer player) { return (MarkData) player.getExtendedProperties(EXT_PLAYER136); } //it is nessesary to check if The Player is on the ServerSide, Otherwise you got an error like "EntityPlayerSP cannot be cast to EntityPlayerMP" public boolean isServerSide() { return player instanceof EntityPlayerMP; } public void sync() { if (this.isServerSide()){ MainRegistry.network.sendTo(new SkillPacket(), (EntityPlayerMP) player); System.out.println("Player: " + player); } }
here is the error:
[21:35:37] [server thread/ERROR] [FML]: FMLIndexedMessageCodec exception caught io.netty.handler.codec.EncoderException: java.lang.NullPointerException at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107) ~[MessageToMessageEncoder.class:4.0.23.Final] at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) ~[MessageToMessageCodec.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:658) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:716) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:706) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:741) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:895) ~[DefaultChannelPipeline.class:4.0.23.Final] at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:240) ~[AbstractChannel.class:4.0.23.Final] at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.sendTo(SimpleNetworkWrapper.java:229) [simpleNetworkWrapper.class:?] at com.modMark.Skill.MarkData.sync(MarkData.java:202) [MarkData.class:?] at com.modMark.Skill.EventHandlerMark.MinExcaWC_XP(EventHandlerMark.java:373) [EventHandlerMark.class:?] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_9_EventHandlerMark_MinExcaWC_XP_BreakEvent.invoke(.dynamic) [?:?] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:55) [ASMEventHandler.class:?] at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:140) [EventBus.class:?] at net.minecraftforge.common.ForgeHooks.onBlockBreakEvent(ForgeHooks.java:684) [ForgeHooks.class:?] at net.minecraft.server.management.ItemInWorldManager.tryHarvestBlock(ItemInWorldManager.java:299) [itemInWorldManager.class:?] at net.minecraft.server.management.ItemInWorldManager.blockRemoving(ItemInWorldManager.java:251) [itemInWorldManager.class:?] at net.minecraft.network.NetHandlerPlayServer.processPlayerDigging(NetHandlerPlayServer.java:562) [NetHandlerPlayServer.class:?] at net.minecraft.network.play.client.C07PacketPlayerDigging.processPacket(C07PacketPlayerDigging.java:56) [C07PacketPlayerDigging.class:?] at net.minecraft.network.play.client.C07PacketPlayerDigging.processPacket(C07PacketPlayerDigging.java:12) [C07PacketPlayerDigging.class:?] at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) [PacketThreadUtil$1.class:?] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_40] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_40] at net.minecraft.util.Util.runTask(Util.java:22) [util.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:736) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:681) [MinecraftServer.class:?] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:159) [integratedServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:548) [MinecraftServer.class:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_40] Caused by: java.lang.NullPointerException at com.modMark.Packets.SkillPacket.toBytes(SkillPacket.java:50) ~[skillPacket.class:?] at net.minecraftforge.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:11) ~[simpleIndexedCodec.class:?] at net.minecraftforge.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:7) ~[simpleIndexedCodec.class:?] at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.encode(FMLIndexedMessageToMessageCodec.java:55) ~[FMLIndexedMessageToMessageCodec.class:?] at io.netty.handler.codec.MessageToMessageCodec$1.encode(MessageToMessageCodec.java:67) ~[MessageToMessageCodec$1.class:4.0.23.Final] at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89) ~[MessageToMessageEncoder.class:4.0.23.Final] ... 28 more
and my updated IMessage + IMessageHandler class:
package com.modMark.Packets; import com.modMark.Main.GuiStatlist; import com.modMark.Skill.MarkData; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentText; import net.minecraft.util.IThreadListener; import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; public class SkillPacket implements IMessage{ private EntityPlayer Player; private int[] XP; public SkillPacket() {} public SkillPacket(int[] s, EntityPlayer player){ MarkData p = MarkData.get(player); this.Player = player; s = p.getXp(); XP = p.getXp(); System.out.println("Test-1 Packet" + player); } @Override public void fromBytes(ByteBuf buf) { for (int k = 0; k < 35; k++){ XP[k] = buf.readInt(); } System.out.println("Test-2 Packet" + Player + " Excavation XP: " + XP[10]); } @Override public void toBytes(ByteBuf buf) { for (int j = 0; j < 35; j++){ buf.writeInt(XP[j]); } System.out.println("Test-3 Packet" + Player + " Excavation XP: " + XP[10]); } //----------------------------------------------------------------------------------------------- public static class MarkHandler implements IMessageHandler<SkillPacket, IMessage > { @Override public IMessage onMessage(final SkillPacket message, MessageContext ctx) { IThreadListener ThreadListener = Minecraft.getMinecraft(); ThreadListener.addScheduledTask(new Runnable() { @Override public void run() { final EntityPlayer player = Minecraft.getMinecraft().thePlayer; MarkData p = MarkData.get(player); GuiStatlist.XP = message.XP; System.out.println("PlayerData is send to " + player); } }); return null; } } }
I can feel i'm almost there. I know this code is maybe to complex for me. but I want the learn it.
I already created a very cool gui. some blocks(not the easiest) and some Items.
-
oops forgot to remove that static, but changed itWhy is
candothis
still static? It is the property you use to determine if the player being operated on can mine the block or not, yet this is still a shared value.
you need an if statement for onEntityConstruction to check if the entity is a player, otherwise you got a crash report like "entityRabbit cannot be cast to EntityPlayer." but i have make my IEEP more clearer so you can read it- The code in
onEntityConstructing
is a mess and unnecessary. All you need in there is
MarkData.register
. No if-checks, no loading from empty NBT.
- You send the entityID in your packet, but you never use it.
- In your message handler you put stuff into the message instead of taking stuff out. This makes no sense.
- The code in your IEEP is a mess, what in the heck are all those fields?
- Overall your code formatting is a mess. Your indentation is absolutely inconsistent and it's all barely readable.
here are my files again:
EventHandler:
package com.modMark.Skill; import java.util.List; import com.modMark.Item_Block.MarkBlocks; import com.modMark.Main.MainRegistry; import com.modMark.Packets.SkillPacket; import akka.actor.FSM.State; import ibxm.Player; import net.minecraft.block.Block; import net.minecraft.block.BlockCrops; import net.minecraft.block.BlockStone; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.event.entity.EntityEvent.EntityConstructing; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerEvent.BreakSpeed; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; import net.minecraftforge.event.entity.player.PlayerUseItemEvent; import net.minecraftforge.event.terraingen.SaplingGrowTreeEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent; import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent.ItemCraftedEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent.ItemSmeltedEvent; import scala.reflect.internal.Trees.ThisSubstituter; public class EventHandlerMark { @SubscribeEvent public void onEntityConstructing(EntityConstructing event) { if (event.entity instanceof EntityPlayer && MarkData.get((EntityPlayer) event.entity) == null){ MarkData.register((EntityPlayer) event.entity); System.out.println("Registering Player!"); } } @SubscribeEvent public void onEntityJoinWorld(EntityJoinWorldEvent event) { if (event.entity instanceof EntityPlayer) { MarkData.get((EntityPlayer) event.entity).RequestingSync(); System.out.println("PlayerData is from onEntityJoinWorld"); } } @SubscribeEvent public void onPlayerCloned(PlayerEvent.Clone event) { NBTTagCompound compound = new NBTTagCompound(); MarkData.get(event.original).saveReviveRelevantNBTData(compound, event.wasDeath); MarkData.get(event.entityPlayer).loadNBTData(compound); System.out.println("PlayerData is Cloned"); } @SubscribeEvent public void Farming(SaplingGrowTreeEvent event) { //problem: need to put what player placed the block } @SubscribeEvent public void MinExcaWCFarm_Req(BreakSpeed event) { //Event for req level Mining, Excavation, Woodcutting & Farming EntityPlayer player = event.entityPlayer; MarkData p = MarkData.get(player); System.out.println("PlayerData is from BreakSpeedEvent"); Block block = event.state.getBlock(); if (block == Blocks.stone || block == Blocks.cobblestone){ p.requireLvl(8, 0, 0); } else if (block == Blocks.wheat){ p.requireLvl(7, 0, 0); } else if (block == Blocks.carrots){ p.requireLvl(7, 5, 0); } else if (block == Blocks.potatoes){ p.requireLvl(7, 10, 0); } else if (block == Blocks.coal_ore){ p.requireLvl(8, 5, 0); } else if (block == Blocks.emerald_ore){ p.requireLvl(8, 10, 0); } else if (block == Blocks.iron_ore){ p.requireLvl(8, 20, 0); } else if (block == Blocks.lapis_ore){ p.requireLvl(8, 25, 0); } else if (block == Blocks.gold_ore){ p.requireLvl(8, 30, 0); } else if (block == Blocks.diamond_ore){ p.requireLvl(8, 40, 0); } else if (block == Blocks.redstone_ore || block == Blocks.lit_redstone_ore ||block == Blocks.redstone_block || block == Blocks.obsidian ){ p.requireLvl(8, 45, 0); } else if (block == Blocks.netherrack ||block == Blocks.nether_brick ){ p.requireLvl(8, 50, 0); } else if (block == MarkBlocks.OreNetherite){ p.requireLvl(8, 60, 0); } else if (block == Blocks.quartz_ore || block == Blocks.quartz_block){ p.requireLvl(8, 70, 0); } else if (block == MarkBlocks.CrystRack){ p.requireLvl(8, 75, 0); } else if (block == MarkBlocks.OreCrystlium){ p.requireLvl(8, 80, 0); } //excavation else if (block == Blocks.dirt || block == Blocks.grass){ p.requireLvl(10, 0, 0); } else if (block == MarkBlocks.GemOpalOre){ p.requireLvl(10, 5, 0); } else if (block == Blocks.gravel){ p.requireLvl(10, 5, 0); } else if (block == MarkBlocks.GemSapphireOre){ p.requireLvl(10, 10, 0); } else if (block == Blocks.sand){ p.requireLvl(10, 10, 0); } else if (block == MarkBlocks.GemOlivineOre){ p.requireLvl(10, 15, 0); } else if (block == MarkBlocks.GemHyacinthOre){ p.requireLvl(10, 15, 0); } else if (block == MarkBlocks.GemTopazOre){ p.requireLvl(10, 25, 0); } else if (block == Blocks.mycelium){ p.requireLvl(10, 30, 0); } else if (block == MarkBlocks.GemAmethystOre){ p.requireLvl(10, 40, 0); } else if (block == Blocks.soul_sand){ p.requireLvl(10, 50, 0); } else if (block == MarkBlocks.GemSiamOre){ p.requireLvl(10, 60, 0); } else if (block == MarkBlocks.CrystSand){ p.requireLvl(10, 75, 0); } else if (block == MarkBlocks.GemAquamarineOre){ p.requireLvl(10, 80, 0); } else if (block == Blocks.log){ p.requireLvl(11, 0, 0); } else if (block == Blocks.cactus){ p.requireLvl(11, 10, 0); } else if (block == Blocks.log2){ p.requireLvl(11, 20, 0); } else if (block == MarkBlocks.LogYew){ p.requireLvl(11, 40, 0); } else if (block == MarkBlocks.LogNetherBranch){ p.requireLvl(11, 60, 0); } else if (block == MarkBlocks.LogCrystWood){ p.requireLvl(11, 80, 0); } if (p.candothis == false){ event.setCanceled(true); } } @SubscribeEvent public void MinExcaWC_XP(BreakEvent event){ MarkData p = MarkData.get(event.getPlayer()); System.out.println("PlayerData is from BreakEvent"); Block block = event.state.getBlock(); if (block == Blocks.stone || block == Blocks.cobblestone){ p.addXp(8, ; } else if (block == Blocks.wheat && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.addXp(7, 5); } else if (block == Blocks.carrots && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.addXp(7, 7); } else if (block == Blocks.potatoes && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.addXp(7, 9); } //mining else if (block == Blocks.coal_ore){ p.addXp(8, 12); } else if (block == Blocks.emerald_ore){ p.addXp(8, 16); } else if (block == Blocks.iron_ore){ p.addXp(8, 20); } else if (block == Blocks.lapis_ore){ p.addXp(8, 24); } else if (block == Blocks.gold_ore){ p.addXp(8, 28); } else if (block == Blocks.diamond_ore){ p.addXp(8, 32); } else if (block == Blocks.redstone_ore){ p.addXp(8, 33); } else if (block == Blocks.obsidian){ p.addXp(8, 34); } else if (block == Blocks.netherrack || block == Blocks.nether_brick){ p.addXp(8, 35); } else if (block == MarkBlocks.OreNetherite){ p.addXp(8, 40); } else if (block == Blocks.quartz_ore){ p.addXp(8, 42); } else if (block == MarkBlocks.CrystRack){ p.addXp(8, 45); } else if (block == MarkBlocks.OreCrystlium){ p.addXp(8, 50); } else if (block == Blocks.dirt || block == Blocks.grass){ p.addXp(10, 5); } else if (block == MarkBlocks.GemOpalOre){ p.addXp(10, ; } else if (block == Blocks.gravel){ p.addXp(10, 7); } else if (block == MarkBlocks.GemSapphireOre){ p.addXp(10, 12); } else if (block == Blocks.sand){ p.addXp(10, 9); } else if (block == MarkBlocks.GemOlivineOre){ p.addXp(10, 16); } else if (block == MarkBlocks.GemHyacinthOre){ p.addXp(10, 20); } else if (block == MarkBlocks.GemTopazOre){ p.addXp(10, 24); } else if (block == Blocks.mycelium){ p.addXp(10, 28); } else if (block == MarkBlocks.GemAmethystOre){ p.addXp(10, 32); } else if (block == Blocks.soul_sand){ p.addXp(10, 35); } else if (block == MarkBlocks.GemSiamOre){ p.addXp(10, 40); } else if (block == MarkBlocks.CrystSand){ p.addXp(10, 45); } else if (block == MarkBlocks.GemAquamarineOre){ p.addXp(10, 50); } else if (block == Blocks.log){ p.addXp(11, 10); } else if (block == Blocks.cactus){ p.addXp(11, 12); } else if (block == Blocks.log2){ p.addXp(11, 18); } else if (block == MarkBlocks.LogYew){ p.addXp(11, 30); } else if (block == MarkBlocks.LogNetherBranch){ p.addXp(11, 45); } else if (block == MarkBlocks.LogCrystWood){ p.addXp(11, 60); } p.sync(); p.getXp(); } @SubscribeEvent public void PlayerInteractEvent(PlayerInteractEvent event){ if(event.action == Action.LEFT_CLICK_BLOCK && event.face != null && event.pos != null && event.useBlock != null && event.useItem != null){ EntityPlayer player = event.entityPlayer; if(player.getCurrentEquippedItem() != null){ Item item = player.getCurrentEquippedItem().getItem(); MarkData p = MarkData.get(event.entityPlayer); //Stone if(item == Items.stone_hoe){ p.requireLvl(7, 10, 1); } else if(item == Items.stone_pickaxe){ p.requireLvl(8, 10, 1); } else if(item == Items.stone_shovel){ p.requireLvl(10, 10, 1); } else if(item == Items.stone_axe){ p.requireLvl(11, 10, 1); } //Iron else if(item == Items.iron_hoe){ p.requireLvl(7, 20, 1); } else if(item == Items.iron_pickaxe){ p.requireLvl(8, 20, 1); } else if(item == Items.iron_shovel){ p.requireLvl(10, 20, 1); } else if(item == Items.iron_axe){ p.requireLvl(11, 20, 1); } //Gold else if(item == Items.golden_hoe){ p.requireLvl(7, 30, 1); } else if(item == Items.golden_pickaxe){ p.requireLvl(8, 30, 1); } else if(item == Items.golden_shovel){ p.requireLvl(10, 30, 1); } else if(item == Items.golden_axe){ p.requireLvl(11, 30, 1); } //Diamond else if(item == Items.diamond_hoe){ p.requireLvl(7, 40, 1); } else if(item == Items.diamond_pickaxe){ p.requireLvl(8, 40, 1); } else if(item == Items.diamond_shovel){ p.requireLvl(10, 40, 1); } else if(item == Items.diamond_axe){ p.requireLvl(11, 40, 1); } else{p.requireLvl(10, 0, 1);} if (p.candothisTool == false & event.action == Action.LEFT_CLICK_BLOCK){ event.setCanceled(true); } else{} } else{}}else{} } @SubscribeEvent public void ItemCraftedEvent(ItemCraftedEvent event){ Item item = event.crafting.getItem(); MarkData p = MarkData.get(event.player); if (p != null){ //Tailory if(item == Item.getItemFromBlock(Blocks.wool)){ p.addXp(14, 5);} //Smithing if(item == Items.wooden_sword){ p.addXp(15, 3);} else if(item == Items.wooden_hoe){ p.addXp(15, 3);} else if(item == Items.wooden_shovel){ p.addXp(15, 3);} else if(item == Items.wooden_pickaxe){ p.addXp(15, 3);} else if(item == Items.wooden_axe){ p.addXp(15, 3);} else if(item == Items.stone_sword){ p.addXp(15, 9);} else if(item == Items.stone_hoe){ p.addXp(15, 9);} else if(item == Items.stone_shovel){ p.addXp(15, 6);} else if(item == Items.stone_pickaxe){ p.addXp(15, 12);} else if(item == Items.stone_axe){ p.addXp(15, 12);} else if(item == Items.iron_sword){ p.addXp(15, 19);} else if(item == Items.iron_hoe){ p.addXp(15, 19);} else if(item == Items.iron_shovel){ p.addXp(15, 11);} else if(item == Items.iron_pickaxe){ p.addXp(15, 27);} else if(item == Items.iron_axe){ p.addXp(15, 27);} else if(item == Items.golden_sword){ p.addXp(15, 25);} else if(item == Items.golden_hoe){ p.addXp(15, 25);} else if(item == Items.golden_shovel){ p.addXp(15, 14);} else if(item == Items.golden_pickaxe){ p.addXp(15, 36);} else if(item == Items.golden_axe){ p.addXp(15, 36);} else if(item == Items.diamond_sword){ p.addXp(15, 27);} else if(item == Items.diamond_hoe){ p.addXp(15, 27);} else if(item == Items.diamond_shovel){ p.addXp(15, 15);} else if(item == Items.diamond_pickaxe){ p.addXp(15, 39);} else if(item == Items.diamond_axe){ p.addXp(15, 39);} //Tanning else if(item == Items.leather){ p.addXp(16, 10);} else if(item == Items.leather_boots){ p.addXp(16, 16);} else if(item == Items.leather_helmet){ p.addXp(16, 20);} else if(item == Items.leather_leggings){ p.addXp(16, 28);} else if(item == Items.leather_chestplate){ p.addXp(16, 32);} //Jewelry //-- //Fletching else if(item == Items.stick){ p.addXp(18, 4);} //Construction else if(item == Item.getItemFromBlock(Blocks.planks)) { p.addXp(22, 5);} else if(item == Item.getItemFromBlock(Blocks.bed)){ p.addXp(22, 30);} else if(item == Item.getItemFromBlock(Blocks.oak_door)||item == Item.getItemFromBlock(Blocks.spruce_door)||item == Item.getItemFromBlock(Blocks.birch_door)||item == Item.getItemFromBlock(Blocks.jungle_door)) { p.addXp(22, 30);} else if(item == Item.getItemFromBlock(Blocks.oak_stairs)||item == Item.getItemFromBlock(Blocks.spruce_stairs)||item == Item.getItemFromBlock(Blocks.birch_stairs)||item == Item.getItemFromBlock(Blocks.jungle_stairs)) { p.addXp(22, 30);} p.sync(); p.getXp(); } } @SubscribeEvent public void ItemSmeltedEvent(ItemSmeltedEvent event){ Item item = event.smelting.getItem(); EntityPlayer player = event.player; MarkData p = MarkData.get(player); if (p != null){ //smithing if(item == Item.getItemFromBlock(Blocks.stone)){ p.addXp(15, (3 * event.smelting.stackSize));} else if(item == Items.iron_ingot){ p.addXp(15, (8 * event.smelting.stackSize));} else if(item == Items.gold_ingot){ p.addXp(15, (11 * event.smelting.stackSize));} //juwelry else if(item == Item.getItemFromBlock(Blocks.glass)){ p.addXp(17, (4 * event.smelting.stackSize));} //cooking else if(item == Items.cooked_porkchop || item == Items.cooked_beef || item == Items.cooked_chicken|| item == Items.cooked_fish || item == Items.cooked_rabbit){ p.addXp(19, (4 * event.smelting.stackSize));} p.sync(); p.getXp(); } } }
IEEP:
package com.modMark.Skill; import com.modMark.Main.MainRegistry; import com.modMark.Packets.SkillPacket; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagIntArray; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; public class MarkData implements IExtendedEntityProperties { //this field is used in getXP() public int MainLock = 1; //you know this public EntityPlayer Player; //this fields are some future this to unlock the locked skills public int XpLock1 = 0; public int XpLock2 = 0; public int XpLock3 = 0; public int XpLock4 = 0; public int XpLock5 = 0; public int XpLock6 = 0; public int XpLock7 = 0; //The name of the Skill public String[] SkillName = new String[35]; //head //this field are for calculating the skill levels ect public double[] Level1 = new double[35]; public int[] Level = new int[35]; //head public double[] NextLevel0 = new double[35]; public double[] NextLevel1 = new double[35]; public int[] NextLevel = new int[35]; //head public int[] XpNeed = new int[35]; //head //total and combat level public int Total; public double Combat1; public int Combat; public static final String EXT_PLAYER136 = "ModMark136Data"; private final EntityPlayer player; public boolean candothis; public boolean candothisTool; public static int[] XP = new int[35]; public MarkData(EntityPlayer player){ this.player = player; //sets the skill Xps to zero(i don't know i this makes sence) for (int i = 0; i < 35; i++){ if (this.XP[i] == 0){ XP[i] = 0; } } } public static void register(EntityPlayer player) { player.registerExtendedProperties(MarkData.EXT_PLAYER136, new MarkData(player)); System.out.println("register Player"); } public static MarkData get(EntityPlayer player) { return (MarkData) player.getExtendedProperties(EXT_PLAYER136); } public boolean isServerSide() { return player instanceof EntityPlayerMP; } @Override public void saveNBTData(NBTTagCompound compound) { NBTTagCompound Array = new NBTTagCompound(); Array.setIntArray("Skill136", this.getXp()); compound.setTag(EXT_PLAYER136 , Array); System.out.println("Saving Xp Levels for " + player.getName() + " ," + Array); } @Override public void loadNBTData(NBTTagCompound compound) { NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PLAYER136); this.setXP(properties.getIntArray("Skill136")); System.out.println("Loading Xp Levels"); } @Override public void init(Entity entity, World world) { } public static void resetXP(){ for (int i = 0; i < 35; i++) XP[i] = 0; } public void setXP(int[] Xp){ this.XP = Xp; } public int addXp(int SkillID, int amount){ this.Lvlcalc(player); this.setSkillName(); if((XP[skillID] + amount) >= this.NextLevel[skillID] && XP[skillID] < this.NextLevel[skillID]){ ChatComponentText component = new ChatComponentText("Congratulations! Your Level in " + this.SkillName[skillID] + " is now " + (this.Level[skillID]+ 1)); player.addChatComponentMessage(component); } return this.XP[skillID] += amount; } //this is to check if the requirement level is high enough to do the action. // SkillID = the ID of the skill. // reqlvl = the requirement level to do the action // method = the text that will apear public void requireLvl(int SkillID, int reqlvl, int method){ this.setSkillName(); this.Lvlcalc(Player); if (method == 0){ candothis = this.Level[skillID] >= reqlvl; if(candothis == false){ ChatComponentText component = new ChatComponentText("You need " + reqlvl + " " + this.SkillName[skillID] + " for this"); player.addChatComponentMessage(component); }} if (method == 1){ candothisTool = this.Level[skillID] >= reqlvl; if(candothisTool == false){ ChatComponentText component = new ChatComponentText("You need a level of " + reqlvl + " " + this.SkillName[skillID] + " to use this tool"); player.addChatComponentMessage(component); }} else {} } public int[] getXp() { for (int i = 0;i < 35; i++){ if ((this.XP[i]) > 500000 && this.MainLock == 1) {this.XP[i] = 500000;} else if ((this.XP[i]) > 85000000 && this.MainLock == 2) {this.XP[i] = 85000000;} else if ((this.XP[i]) > 2000000000 && this.MainLock == 3) {this.XP[i] = 2000000000;} } return this.XP; } public void sync() { if (this.isServerSide()){ MainRegistry.network.sendTo(new SkillPacket(), (EntityPlayerMP) player); } } public void RequestingSync() { if (!this.isServerSide()) MainRegistry.network.sendToServer(new SkillPacket()); } //saves data if death or end public void saveReviveRelevantNBTData(NBTTagCompound compound, boolean wasDeath) { this.saveNBTData(compound); } //sets the name of the skill public void setSkillName(){ this.SkillName[0] = "Constitution"; this.SkillName[1] = "Melee"; this.SkillName[2] = "Ranged"; this.SkillName[3] = "Magic"; this.SkillName[4] = "Defence"; this.SkillName[5] = "Endurance"; this.SkillName[6] = "Slayer"; this.SkillName[7] = "Farming"; this.SkillName[8] = "Mining"; this.SkillName[9] = "Hunter"; this.SkillName[10] = "Excavation"; this.SkillName[11] = "Woodcutting"; this.SkillName[12] = "Fishing"; this.SkillName[13] = "Archeology"; this.SkillName[14] = "Tailory"; this.SkillName[15] = "Smithing"; this.SkillName[16] = "Tanning"; this.SkillName[17] = "Jewelry"; this.SkillName[18] = "Fletching"; this.SkillName[19] = "Cooking"; this.SkillName[20] = "Herblore"; this.SkillName[21] = "Honour"; this.SkillName[22] = "Construction"; this.SkillName[23] = "Agility"; this.SkillName[24] = "Dungeoneering"; this.SkillName[25] = "Firemaking"; this.SkillName[26] = "Lifestock"; this.SkillName[27] = "Knowledge"; this.SkillName[28] = "Technology"; this.SkillName[29] = "Petting"; this.SkillName[30] = "Chemistry"; this.SkillName[31] = "Specility"; this.SkillName[32] = "Mutating"; this.SkillName[33] = "Fisioning"; this.SkillName[34] = "Fusioning"; } //this methode is to calculate my XP to level(and this really works!!) public void Lvlcalc(EntityPlayer player) { Player = player; for (int i = 0; i < 35;i++) { if (this.getXp()[i] == 2000000000) {this.Level1[i] = 255;} else if (this.getXp()[i] >= 1720000000 && this.getXp()[i] <= 1999999999) {this.Level1[i] = 254;} else if (this.getXp()[i] >= 1480000000 && this.getXp()[i] <= 1719999999) {this.Level1[i] = 253;} else if (this.getXp()[i] >= 1280000000 && this.getXp()[i] <= 1479999999) {this.Level1[i] = 252;} else if (this.getXp()[i] >= 1120000000 && this.getXp()[i] <= 1279999999) {this.Level1[i] = 251;} else if (this.getXp()[i] >= 1000000000 && this.getXp()[i] <= 1119999999) {this.Level1[i] = 250;} else if (this.getXp()[i] >= 954238196 && this.getXp()[i] <= 999999999) {this.Level1[i] = 249;} else if (this.getXp()[i] >= 100005814 && this.getXp()[i] <= 954238195) {this.Level1[i] = ((Math.log(this.getXp()[i] + 8287)/Math.log(8287))-1)*192+1;} else if (this.getXp()[i] >= 70404413 && this.getXp()[i] <= 100005813) {this.Level1[i] = 200;} else if (this.getXp()[i] >= 701754 && this.getXp()[i] <= 70404412) {this.Level1[i] = ((Math.log10(this.getXp()[i] + 7480)/Math.log10(7480))-1)*194+1;} else if (this.getXp()[i] >= 409286 && this.getXp()[i] <= 701753) {this.Level1[i] = 99;} else if (this.getXp()[i] <= 409285) {this.Level1[i] = ((Math.log10(this.getXp()[i] + 522)/Math.log10(522))-1)*92+1;} else {this.Level1[i] = 0;} this.Level[i] = (int) Math.floor(this.Level1[i]); /** floors this.Level down*/ this.NextLevel0[i] = (int) (this.Level[i] + 1); /** says Level + 1*/ this.NextLevel[i] = (int) Math.ceil(this.NextLevel1[i]); this.XpNeed[i] = (int) (this.NextLevel[i] - this.getXp()[i]); if (this.Level[i] < 99) {this.NextLevel1[i] = (Math.pow(522, (this.NextLevel0[i] - 1)/92 +1) - 522);} else if (this.Level[i] == 99) {this.NextLevel1[i] = 701754;} else if (this.Level[i] >= 100 && this.Level[i] < 200) {this.NextLevel1[i] = (Math.pow(7480, (this.NextLevel0[i] - 1)/194 +1) - 7480);} else if (this.Level[i] == 200) {this.NextLevel1[i] = 100005814;} else if (this.Level[i] >= 201 && this.Level[i] < 249) {this.NextLevel1[i] = (Math.pow(8287, (this.NextLevel0[i] - 1)/192 +1) - 8287);} else if (this.Level[i] == 249) {this.NextLevel1[i] = 1000000000;} else if (this.Level[i] == 250) {this.NextLevel1[i] = 1120000000;} else if (this.Level[i] == 251) {this.NextLevel1[i] = 1280000000;} else if (this.Level[i] == 252) {this.NextLevel1[i] = 1480000000;} else if (this.Level[i] == 253) {this.NextLevel1[i] = 1720000000;} else if (this.Level[i] == 254) {this.NextLevel1[i] = 2000000000;} else {this.NextLevel1[i] = 0;} }} //to calculate the combat level public void getCombatLvl(EntityPlayer player){ Player = player; Lvlcalc(Player); if(this.Level[1] >= this.Level[2] && this.Level[1] >= this.Level[3]){ Combat1 = (Math.sqrt(this.Level[0]) * Math.sqrt(this.Level[5]) + this.Level[1] + this.Level[4]) / 765*350; } else if(this.Level[2] >= this.Level[3]){ Combat1 = (Math.sqrt(this.Level[0]) * Math.sqrt(this.Level[5]) + this.Level[2] + this.Level[4]) / 765*350; } else { Combat1 = (Math.sqrt(this.Level[0]) * Math.sqrt(this.Level[5]) + this.Level[3] + this.Level[4]) / 765*350; } Combat = (int) Math.floor(Combat1); } //to calculate the Total Level---------------------------------------------------------------------- public void getTotalLvl(EntityPlayer player) { Player = player; Lvlcalc(Player); this.Total = 0; for (int i = 0; i < 35; i++){ Total += this.Level[i]; } } }
PacketHandler thing:
package com.modMark.Packets; import com.modMark.Main.GuiStatlist; import com.modMark.Skill.MarkData; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.ChatComponentText; import net.minecraft.util.IThreadListener; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; public class SkillPacket implements IMessage{ public SkillPacket() {} public SkillPacket(EntityPlayer E, int[] s ){ MarkData p = MarkData.get(Minecraft.getMinecraft().thePlayer); p.XP = s; } @Override public void fromBytes(ByteBuf buf) { MarkData p = MarkData.get(Minecraft.getMinecraft().thePlayer); for (int k = 0; k < 35; k++){ p.XP[k] = buf.readInt(); } } @Override public void toBytes(ByteBuf buf) { MarkData p = MarkData.get(Minecraft.getMinecraft().thePlayer); for (int j = 0; j < 35; j++){ buf.writeInt(p.XP[j]); } } //----------------------------------------------------------------------------------------------- public static class MarkHandler implements IMessageHandler<SkillPacket, IMessage > { @Override public IMessage onMessage(final SkillPacket message, MessageContext ctx) { IThreadListener ThreadListener = Minecraft.getMinecraft(); ThreadListener.addScheduledTask(new Runnable() { @Override public void run() { for (int i = 0; i < 35; i++){ MarkData p = MarkData.get(Minecraft.getMinecraft().thePlayer); GuiStatlist.XP = p.XP; } System.out.println("PlayerData is from the PacketHandler"); } }); return null; } } }
the XP in guiStatlist wil be used to show in the gui, and works correctly
the bugs are still, I receive every package but my friends only got if they to something like it should be.
but the biggest problem is that everyone shares the same xp so if i mine, my friends gets mining xp to and visa versa.
- The code in
-
srry then, i tried as much to change as many static field/method to non-statics
finally, he saves my stats(or something like that). but got a little problem if i play my mod with more people.
i check some events (breakEvent/ItemCraftedEvent/ItemSmeltedEvent) to get XP. but if a player is influent by an event. I always get XP and the other player gets XP only if he craft/smelt/break something or event don't get xp at all.
so whats the problem?(also, i hope my files are better now )
EventHandlerMark (contains EventHandler)
package com.modMark.Skill; import java.util.List; import com.modMark.Item_Block.MarkBlocks; import com.modMark.Main.MainRegistry; import com.modMark.Packets.SkillPacket; import akka.actor.FSM.State; import ibxm.Player; import net.minecraft.block.Block; import net.minecraft.block.BlockCrops; import net.minecraft.block.BlockStone; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.event.entity.EntityEvent.EntityConstructing; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerEvent.BreakSpeed; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; import net.minecraftforge.event.entity.player.PlayerUseItemEvent; import net.minecraftforge.event.terraingen.SaplingGrowTreeEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent; import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent.ItemCraftedEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent.ItemSmeltedEvent; import scala.reflect.internal.Trees.ThisSubstituter; public class EventHandlerMark { @SubscribeEvent public void onEntityConstructing(EntityConstructing event) { if (event.entity instanceof EntityPlayer && MarkData.get((EntityPlayer) event.entity) == null){ MarkData.register((EntityPlayer) event.entity); System.out.println("Registering Player!"); } else if(event.entity instanceof EntityPlayer && MarkData.get((EntityPlayer) event.entity) != null){ NBTTagCompound compound = new NBTTagCompound(); MarkData.get((EntityPlayer)event.entity).loadNBTData(compound); } else{} } @SubscribeEvent public void onEntityJoinWorld(EntityJoinWorldEvent event) { if (event.entity instanceof EntityPlayer) { MarkData.get((EntityPlayer) event.entity).RequestingSync(); System.out.println("PlayerData is from onEntityJoinWorld"); } } @SubscribeEvent public void onPlayerCloned(PlayerEvent.Clone event) { NBTTagCompound compound = new NBTTagCompound(); MarkData.get(event.original).saveReviveRelevantNBTData(compound, event.wasDeath); MarkData.get(event.entityPlayer).loadNBTData(compound); System.out.println("PlayerData is Cloned"); } @SubscribeEvent public void Farming(SaplingGrowTreeEvent event) { //problem: need to put what player placed the block } @SubscribeEvent public void MinExcaWCFarm_Req(BreakSpeed event) { //Event for req level Mining, Excavation, Woodcutting & Farming EntityPlayer player = event.entityPlayer; MarkData p = MarkData.get(player); System.out.println("PlayerData is from BreakSpeedEvent"); Block block = event.state.getBlock(); if (block == Blocks.stone || block == Blocks.cobblestone){ p.requireLvl(8, 0, 0); } else if (block == Blocks.wheat){ p.requireLvl(7, 0, 0); } else if (block == Blocks.carrots){ p.requireLvl(7, 5, 0); } else if (block == Blocks.potatoes){ p.requireLvl(7, 10, 0); } else if (block == Blocks.coal_ore){ p.requireLvl(8, 5, 0); } else if (block == Blocks.emerald_ore){ p.requireLvl(8, 10, 0); } else if (block == Blocks.iron_ore){ p.requireLvl(8, 20, 0); } else if (block == Blocks.lapis_ore){ p.requireLvl(8, 25, 0); } else if (block == Blocks.gold_ore){ p.requireLvl(8, 30, 0); } else if (block == Blocks.diamond_ore){ p.requireLvl(8, 40, 0); } else if (block == Blocks.redstone_ore || block == Blocks.lit_redstone_ore ||block == Blocks.redstone_block || block == Blocks.obsidian ){ p.requireLvl(8, 45, 0); } else if (block == Blocks.netherrack ||block == Blocks.nether_brick ){ p.requireLvl(8, 50, 0); } else if (block == MarkBlocks.OreNetherite){ p.requireLvl(8, 60, 0); } else if (block == Blocks.quartz_ore || block == Blocks.quartz_block){ p.requireLvl(8, 70, 0); } else if (block == MarkBlocks.CrystRack){ p.requireLvl(8, 75, 0); } else if (block == MarkBlocks.OreCrystlium){ p.requireLvl(8, 80, 0); } //excavation else if (block == Blocks.dirt || block == Blocks.grass){ p.requireLvl(10, 0, 0); } else if (block == MarkBlocks.GemOpalOre){ p.requireLvl(10, 5, 0); } else if (block == Blocks.gravel){ p.requireLvl(10, 5, 0); } else if (block == MarkBlocks.GemSapphireOre){ p.requireLvl(10, 10, 0); } else if (block == Blocks.sand){ p.requireLvl(10, 10, 0); } else if (block == MarkBlocks.GemOlivineOre){ p.requireLvl(10, 15, 0); } else if (block == MarkBlocks.GemHyacinthOre){ p.requireLvl(10, 15, 0); } else if (block == MarkBlocks.GemTopazOre){ p.requireLvl(10, 25, 0); } else if (block == Blocks.mycelium){ p.requireLvl(10, 30, 0); } else if (block == MarkBlocks.GemAmethystOre){ p.requireLvl(10, 40, 0); } else if (block == Blocks.soul_sand){ p.requireLvl(10, 50, 0); } else if (block == MarkBlocks.GemSiamOre){ p.requireLvl(10, 60, 0); } else if (block == MarkBlocks.CrystSand){ p.requireLvl(10, 75, 0); } else if (block == MarkBlocks.GemAquamarineOre){ p.requireLvl(10, 80, 0); } else if (block == Blocks.log){ p.requireLvl(11, 0, 0); } else if (block == Blocks.cactus){ p.requireLvl(11, 10, 0); } else if (block == Blocks.log2){ p.requireLvl(11, 20, 0); } else if (block == MarkBlocks.LogYew){ p.requireLvl(11, 40, 0); } else if (block == MarkBlocks.LogNetherBranch){ p.requireLvl(11, 60, 0); } else if (block == MarkBlocks.LogCrystWood){ p.requireLvl(11, 80, 0); } if (MarkData.candothis == false){ event.setCanceled(true); } } @SubscribeEvent public void MinExcaWC_XP(BreakEvent event){ MarkData p = MarkData.get(event.getPlayer()); System.out.println("PlayerData is from BreakEvent"); Block block = event.state.getBlock(); if (block == Blocks.stone || block == Blocks.cobblestone){ p.addXp(8, ; } else if (block == Blocks.wheat && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.addXp(7, 5); } else if (block == Blocks.carrots && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.addXp(7, 7); } else if (block == Blocks.potatoes && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.addXp(7, 9); } //mining else if (block == Blocks.coal_ore){ p.addXp(8, 12); } else if (block == Blocks.emerald_ore){ p.addXp(8, 16); } else if (block == Blocks.iron_ore){ p.addXp(8, 20); } else if (block == Blocks.lapis_ore){ p.addXp(8, 24); } else if (block == Blocks.gold_ore){ p.addXp(8, 28); } else if (block == Blocks.diamond_ore){ p.addXp(8, 32); } else if (block == Blocks.redstone_ore){ p.addXp(8, 33); } else if (block == Blocks.obsidian){ p.addXp(8, 34); } else if (block == Blocks.netherrack || block == Blocks.nether_brick){ p.addXp(8, 35); } else if (block == MarkBlocks.OreNetherite){ p.addXp(8, 40); } else if (block == Blocks.quartz_ore){ p.addXp(8, 42); } else if (block == MarkBlocks.CrystRack){ p.addXp(8, 45); } else if (block == MarkBlocks.OreCrystlium){ p.addXp(8, 50); } else if (block == Blocks.dirt || block == Blocks.grass){ p.addXp(10, 5); } else if (block == MarkBlocks.GemOpalOre){ p.addXp(10, ; } else if (block == Blocks.gravel){ p.addXp(10, 7); } else if (block == MarkBlocks.GemSapphireOre){ p.addXp(10, 12); } else if (block == Blocks.sand){ p.addXp(10, 9); } else if (block == MarkBlocks.GemOlivineOre){ p.addXp(10, 16); } else if (block == MarkBlocks.GemHyacinthOre){ p.addXp(10, 20); } else if (block == MarkBlocks.GemTopazOre){ p.addXp(10, 24); } else if (block == Blocks.mycelium){ p.addXp(10, 28); } else if (block == MarkBlocks.GemAmethystOre){ p.addXp(10, 32); } else if (block == Blocks.soul_sand){ p.addXp(10, 35); } else if (block == MarkBlocks.GemSiamOre){ p.addXp(10, 40); } else if (block == MarkBlocks.CrystSand){ p.addXp(10, 45); } else if (block == MarkBlocks.GemAquamarineOre){ p.addXp(10, 50); } else if (block == Blocks.log){ p.addXp(11, 10); } else if (block == Blocks.cactus){ p.addXp(11, 12); } else if (block == Blocks.log2){ p.addXp(11, 18); } else if (block == MarkBlocks.LogYew){ p.addXp(11, 30); } else if (block == MarkBlocks.LogNetherBranch){ p.addXp(11, 45); } else if (block == MarkBlocks.LogCrystWood){ p.addXp(11, 60); } p.sync(); p.getXp(); } @SubscribeEvent public void PlayerInteractEvent(PlayerInteractEvent event){ if(event.action == Action.LEFT_CLICK_BLOCK && event.face != null && event.pos != null && event.useBlock != null && event.useItem != null){ EntityPlayer player = event.entityPlayer; if(player.getCurrentEquippedItem() != null){ Item item = player.getCurrentEquippedItem().getItem(); MarkData p = MarkData.get(event.entityPlayer); //Stone if(item == Items.stone_hoe){ p.requireLvl(7, 10, 1); } else if(item == Items.stone_pickaxe){ p.requireLvl(8, 10, 1); } else if(item == Items.stone_shovel){ p.requireLvl(10, 10, 1); } else if(item == Items.stone_axe){ p.requireLvl(11, 10, 1); } //Iron else if(item == Items.iron_hoe){ p.requireLvl(7, 20, 1); } else if(item == Items.iron_pickaxe){ p.requireLvl(8, 20, 1); } else if(item == Items.iron_shovel){ p.requireLvl(10, 20, 1); } else if(item == Items.iron_axe){ p.requireLvl(11, 20, 1); } //Gold else if(item == Items.golden_hoe){ p.requireLvl(7, 30, 1); } else if(item == Items.golden_pickaxe){ p.requireLvl(8, 30, 1); } else if(item == Items.golden_shovel){ p.requireLvl(10, 30, 1); } else if(item == Items.golden_axe){ p.requireLvl(11, 30, 1); } //Diamond else if(item == Items.diamond_hoe){ p.requireLvl(7, 40, 1); } else if(item == Items.diamond_pickaxe){ p.requireLvl(8, 40, 1); } else if(item == Items.diamond_shovel){ p.requireLvl(10, 40, 1); } else if(item == Items.diamond_axe){ p.requireLvl(11, 40, 1); } else{p.requireLvl(10, 0, 1);} if (MarkData.candothisTool == false & event.action == Action.LEFT_CLICK_BLOCK){ event.setCanceled(true); } else{} } else{}}else{} } @SubscribeEvent public void ItemCraftedEvent(ItemCraftedEvent event){ Item item = event.crafting.getItem(); MarkData p = MarkData.get(event.player); if (p != null){ //Tailory if(item == Item.getItemFromBlock(Blocks.wool)){ p.addXp(14, 5);} //Smithing if(item == Items.wooden_sword){ p.addXp(15, 3);} else if(item == Items.wooden_hoe){ p.addXp(15, 3);} else if(item == Items.wooden_shovel){ p.addXp(15, 3);} else if(item == Items.wooden_pickaxe){ p.addXp(15, 3);} else if(item == Items.wooden_axe){ p.addXp(15, 3);} else if(item == Items.stone_sword){ p.addXp(15, 9);} else if(item == Items.stone_hoe){ p.addXp(15, 9);} else if(item == Items.stone_shovel){ p.addXp(15, 6);} else if(item == Items.stone_pickaxe){ p.addXp(15, 12);} else if(item == Items.stone_axe){ p.addXp(15, 12);} else if(item == Items.iron_sword){ p.addXp(15, 19);} else if(item == Items.iron_hoe){ p.addXp(15, 19);} else if(item == Items.iron_shovel){ p.addXp(15, 11);} else if(item == Items.iron_pickaxe){ p.addXp(15, 27);} else if(item == Items.iron_axe){ p.addXp(15, 27);} else if(item == Items.golden_sword){ p.addXp(15, 25);} else if(item == Items.golden_hoe){ p.addXp(15, 25);} else if(item == Items.golden_shovel){ p.addXp(15, 14);} else if(item == Items.golden_pickaxe){ p.addXp(15, 36);} else if(item == Items.golden_axe){ p.addXp(15, 36);} else if(item == Items.diamond_sword){ p.addXp(15, 27);} else if(item == Items.diamond_hoe){ p.addXp(15, 27);} else if(item == Items.diamond_shovel){ p.addXp(15, 15);} else if(item == Items.diamond_pickaxe){ p.addXp(15, 39);} else if(item == Items.diamond_axe){ p.addXp(15, 39);} //Tanning else if(item == Items.leather){ p.addXp(16, 10);} else if(item == Items.leather_boots){ p.addXp(16, 16);} else if(item == Items.leather_helmet){ p.addXp(16, 20);} else if(item == Items.leather_leggings){ p.addXp(16, 28);} else if(item == Items.leather_chestplate){ p.addXp(16, 32);} //Jewelry //-- //Fletching else if(item == Items.stick){ p.addXp(18, 4);} //Construction else if(item == Item.getItemFromBlock(Blocks.planks)) { p.addXp(22, 5);} else if(item == Item.getItemFromBlock(Blocks.bed)){ p.addXp(22, 30);} else if(item == Item.getItemFromBlock(Blocks.oak_door)||item == Item.getItemFromBlock(Blocks.spruce_door)||item == Item.getItemFromBlock(Blocks.birch_door)||item == Item.getItemFromBlock(Blocks.jungle_door)) { p.addXp(22, 30);} else if(item == Item.getItemFromBlock(Blocks.oak_stairs)||item == Item.getItemFromBlock(Blocks.spruce_stairs)||item == Item.getItemFromBlock(Blocks.birch_stairs)||item == Item.getItemFromBlock(Blocks.jungle_stairs)) { p.addXp(22, 30);} p.sync(); p.getXp(); } } @SubscribeEvent public void ItemSmeltedEvent(ItemSmeltedEvent event){ Item item = event.smelting.getItem(); EntityPlayer player = event.player; MarkData p = MarkData.get(player); if (p != null){ //smithing if(item == Item.getItemFromBlock(Blocks.stone)){ p.addXp(15, (3 * event.smelting.stackSize));} else if(item == Items.iron_ingot){ p.addXp(15, (8 * event.smelting.stackSize));} else if(item == Items.gold_ingot){ p.addXp(15, (11 * event.smelting.stackSize));} //juwelry else if(item == Item.getItemFromBlock(Blocks.glass)){ p.addXp(17, (4 * event.smelting.stackSize));} //cooking else if(item == Items.cooked_porkchop || item == Items.cooked_beef || item == Items.cooked_chicken|| item == Items.cooked_fish || item == Items.cooked_rabbit){ p.addXp(19, (4 * event.smelting.stackSize));} p.sync(); p.getXp(); } } }
MarkData (contains IExtendedEntityProperties
package com.modMark.Skill; import com.modMark.Main.MainRegistry; import com.modMark.Packets.SkillPacket; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagIntArray; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; public class MarkData implements IExtendedEntityProperties { public int MainLock = 1; public EntityPlayer Player; public int XpLock1 = 0; public int XpLock2 = 0; public int XpLock3 = 0; public int XpLock4 = 0; public int XpLock5 = 0; public int XpLock6 = 0; public int XpLock7 = 0; public String[] SkillName = new String[35]; //head //head public double[] Level1 = new double[35]; public int[] Level = new int[35]; //head public double[] NextLevel0 = new double[35]; public double[] NextLevel1 = new double[35]; public int[] NextLevel = new int[35]; //head public int[] XpNeed = new int[35]; //head public double[] Degrees1 = new double[35]; public double[] Degrees = new double[35]; //head public int Total; public int Totalcb; public int Totalga; public int Totalar; public int Totalsp; public int Totalot; public double Combat1; public int Combat; public static final String EXT_PLAYER136 = "ModMark136Data"; private final EntityPlayer player; public static boolean candothis; public static boolean candothisTool; public static int[] XP = new int[35]; public MarkData(EntityPlayer player){ this.player = player; for (int i = 0; i < 35; i++){ if (this.XP[i] == 0){ XP[i] = 0; } } } public static void register(EntityPlayer player) { player.registerExtendedProperties(MarkData.EXT_PLAYER136, new MarkData(player)); System.out.println("register Player"); } public static MarkData get(EntityPlayer player) { return (MarkData) player.getExtendedProperties(EXT_PLAYER136); } public boolean isServerSide() { return player instanceof EntityPlayerMP; } @Override public void saveNBTData(NBTTagCompound compound) { NBTTagCompound Array = new NBTTagCompound(); Array.setIntArray("Skill136", this.getXp()); compound.setTag(EXT_PLAYER136 , Array); System.out.println("Saving Xp Levels for " + player.getName() + " ," + Array); } @Override public void loadNBTData(NBTTagCompound compound) { NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PLAYER136); this.setXP(properties.getIntArray("Skill136")); System.out.println("Loading Xp Levels"); } @Override public void init(Entity entity, World world) { } public static void resetXP(){ for (int i = 0; i < 35; i++) XP[i] = 0; } public void setXP(int[] Xp){ this.XP = Xp; } public int addXp(int SkillID, int amount){ this.Lvlcalc(player); this.setSkillName(); if((XP[skillID] + amount) >= this.NextLevel[skillID] && XP[skillID] < this.NextLevel[skillID]){ ChatComponentText component = new ChatComponentText("Congratulations! Your Level in " + this.SkillName[skillID] + " is now " + (this.Level[skillID]+ 1)); player.addChatComponentMessage(component); } return this.XP[skillID] += amount; } //this is to check if the requirement level is high enough to do the action. // SkillID = the ID of the skill. // reqlvl = the requirement level to do the action // method = the text that will apear public void requireLvl(int SkillID, int reqlvl, int method){ this.getSkillName(); this.Lvlcalc(Player); if (method == 0){ candothis = this.Level[skillID] >= reqlvl; if(candothis == false){ ChatComponentText component = new ChatComponentText("You need " + reqlvl + " " + this.SkillName[skillID] + " for this"); player.addChatComponentMessage(component); }} if (method == 1){ candothisTool = this.Level[skillID] >= reqlvl; if(candothisTool == false){ ChatComponentText component = new ChatComponentText("You need a level of " + reqlvl + " " + this.SkillName[skillID] + " to use this tool"); player.addChatComponentMessage(component); }} else {} } public int[] getXp() { for (int i = 0;i < 35; i++){ if ((this.XP[i]) > 500000 && this.MainLock == 1){ this.XP[i] = 500000; } else if ((this.XP[i]) > 85000000 && this.MainLock == 2){ this.XP[i] = 85000000; } else if ((this.XP[i]) > 2000000000 && this.MainLock == 3){ this.XP[i] = 2000000000; } } return this.XP; } public void sync() { if (this.isServerSide()){ MainRegistry.network.sendTo(new SkillPacket(), (EntityPlayerMP) player); } } public void RequestingSync() { if (!this.isServerSide()) MainRegistry.network.sendToServer(new SkillPacket()); } public void saveReviveRelevantNBTData(NBTTagCompound compound, boolean wasDeath) { this.saveNBTData(compound); } public void setSkillName(){ this.SkillName[0] = "Constitution"; this.SkillName[1] = "Melee"; this.SkillName[2] = "Ranged"; this.SkillName[3] = "Magic"; this.SkillName[4] = "Defence"; this.SkillName[5] = "Endurance"; this.SkillName[6] = "Slayer"; this.SkillName[7] = "Farming"; this.SkillName[8] = "Mining"; this.SkillName[9] = "Hunter"; this.SkillName[10] = "Excavation"; this.SkillName[11] = "Woodcutting"; this.SkillName[12] = "Fishing"; this.SkillName[13] = "Archeology"; this.SkillName[14] = "Tailory"; this.SkillName[15] = "Smithing"; this.SkillName[16] = "Tanning"; this.SkillName[17] = "Jewelry"; this.SkillName[18] = "Fletching"; this.SkillName[19] = "Cooking"; this.SkillName[20] = "Herblore"; this.SkillName[21] = "Honour"; this.SkillName[22] = "Construction"; this.SkillName[23] = "Agility"; this.SkillName[24] = "Dungeoneering"; this.SkillName[25] = "Firemaking"; this.SkillName[26] = "Lifestock"; this.SkillName[27] = "Knowledge"; this.SkillName[28] = "Technology"; this.SkillName[29] = "Petting"; this.SkillName[30] = "Chemistry"; this.SkillName[31] = "Specility"; this.SkillName[32] = "Mutating"; this.SkillName[33] = "Fisioning"; this.SkillName[34] = "Fusioning"; } public String getSkillName() { return "skill"; } public void Lvlcalc(EntityPlayer player) { Player = player; for (int i = 0; i < 35;i++) { if (this.getXp()[i] == 2000000000){ this.Level1[i] = 255; } else if (this.getXp()[i] >= 1720000000 && this.getXp()[i] <= 1999999999){ this.Level1[i] = 254; } else if (this.getXp()[i] >= 1480000000 && this.getXp()[i] <= 1719999999){ this.Level1[i] = 253; } else if (this.getXp()[i] >= 1280000000 && this.getXp()[i] <= 1479999999){ this.Level1[i] = 252; } else if (this.getXp()[i] >= 1120000000 && this.getXp()[i] <= 1279999999){ this.Level1[i] = 251; } else if (this.getXp()[i] >= 1000000000 && this.getXp()[i] <= 1119999999){ this.Level1[i] = 250; } else if (this.getXp()[i] >= 954238196 && this.getXp()[i] <= 999999999){ this.Level1[i] = 249; } else if (this.getXp()[i] >= 100005814 && this.getXp()[i] <= 954238195){ this.Level1[i] = ((Math.log(this.getXp()[i] + 8287)/Math.log(8287))-1)*192+1; } else if (this.getXp()[i] >= 70404413 && this.getXp()[i] <= 100005813){ this.Level1[i] = 200; } else if (this.getXp()[i] >= 701754 && this.getXp()[i] <= 70404412){ this.Level1[i] = ((Math.log10(this.getXp()[i] + 7480)/Math.log10(7480))-1)*194+1; } else if (this.getXp()[i] >= 409286 && this.getXp()[i] <= 701753){ this.Level1[i] = 99; } else if (this.getXp()[i] <= 409285){ this.Level1[i] = ((Math.log10(this.getXp()[i] + 522)/Math.log10(522))-1)*92+1; } else { this.Level1[i] = 0; } this.Level[i] = (int) Math.floor(this.Level1[i]); /** floors this.Level down*/ this.NextLevel0[i] = (int) (this.Level[i] + 1); /** says Level + 1*/ this.NextLevel[i] = (int) Math.ceil(this.NextLevel1[i]); this.XpNeed[i] = (int) (this.NextLevel[i] - this.getXp()[i]); if (this.Level[i] == 99 || this.Level[i] == 200 || this.Level[i] == 255) { this.Degrees[i] = 0; } else { this.Degrees[i] = ((this.getXp()[i] - Math.ceil(this.Degrees1[i])) / (this.NextLevel[i] - Math.ceil(this.Degrees1[i]))) * 39; } if (this.Level[i] < 99) { this.NextLevel1[i] = (Math.pow(522, (this.NextLevel0[i] - 1)/92 +1) - 522); } else if (this.Level[i] == 99) { this.NextLevel1[i] = 701754; } else if (this.Level[i] >= 100 && this.Level[i] < 200) { this.NextLevel1[i] = (Math.pow(7480, (this.NextLevel0[i] - 1)/194 +1) - 7480); } else if (this.Level[i] == 200) { this.NextLevel1[i] = 100005814; } else if (this.Level[i] >= 201 && this.Level[i] < 249) { this.NextLevel1[i] = (Math.pow(8287, (this.NextLevel0[i] - 1)/192 +1) - 8287); } else if (this.Level[i] == 249) { this.NextLevel1[i] = 1000000000; } else if (this.Level[i] == 250) { this.NextLevel1[i] = 1120000000; } else if (this.Level[i] == 251) { this.NextLevel1[i] = 1280000000; } else if (this.Level[i] == 252) { this.NextLevel1[i] = 1480000000; } else if (this.Level[i] == 253) { this.NextLevel1[i] = 1720000000; } else if (this.Level[i] == 254) { this.NextLevel1[i] = 2000000000; } else { this.NextLevel1[i] = 0; } if (this.Level[i] <= 98) { this.Degrees1[i] = (Math.pow(522, (this.NextLevel0[i] - 2)/92 +1) - 522) ; } else if (this.Level[i] >= 100 && this.Level[i] <= 199) { this.Degrees1[i] = (Math.pow(7480, (this.NextLevel0[i] - 2)/194 +1) - 7480); } else if (this.Level[i] >= 201 && this.Level[i] <= 249) { this.Degrees1[i] = (Math.pow(8287, (this.NextLevel0[i] - 2)/192 +1) - 8287); } else if (this.Level[i] == 250) { this.Degrees1[i] = 1000000000; } else if (this.Level[i] == 251) { this.Degrees1[i] = 1120000000; } else if (this.Level[i] == 252) { this.Degrees1[i] = 1280000000; } else if (this.Level[i] == 253) { this.Degrees1[i] = 1480000000; } else if (this.Level[i] == 254) { this.Degrees1[i] = 1720000000; } else { this.Degrees1[i] = 0; } } } public void getCombatLvl(EntityPlayer player){ Player = player; Lvlcalc(Player); if(this.Level[1] >= this.Level[2] && this.Level[1] >= this.Level[3]){ Combat1 = (Math.sqrt(this.Level[0]) * Math.sqrt(this.Level[5]) + this.Level[1] + this.Level[4]) / 765*350; } else if(this.Level[2] >= this.Level[3]){ Combat1 = (Math.sqrt(this.Level[0]) * Math.sqrt(this.Level[5]) + this.Level[2] + this.Level[4]) / 765*350; } else { Combat1 = (Math.sqrt(this.Level[0]) * Math.sqrt(this.Level[5]) + this.Level[3] + this.Level[4]) / 765*350; } Combat = (int) Math.floor(Combat1); } public void getTotalLvl(EntityPlayer player) { Player = player; Lvlcalc(Player); Totalcb = this.Level[0] + this.Level[1] + this.Level[2] + this.Level[3] + this.Level[4] + this.Level[5] + this.Level[6]; Totalga = this.Level[7] + this.Level[8] + this.Level[9] + this.Level[10] + this.Level[11] + this.Level[12] + this.Level[13]; Totalar = this.Level[14] + this.Level[15] + this.Level[16] + this.Level[17] + this.Level[18] + this.Level[19] + this.Level[20]; Totalsp = this.Level[21] + this.Level[22] + this.Level[23] + this.Level[24] + this.Level[25] + this.Level[26] + this.Level[27]; Totalot = this.Level[28] + this.Level[29] + this.Level[30] + this.Level[31] + this.Level[32] + this.Level[33] + this.Level[34]; Total = Totalcb + Totalga + Totalar + Totalsp + Totalot; } }
SkillPacket (contains IMessage and IMessageHandler)
package com.modMark.Packets; import com.modMark.Main.GuiStatlist; import com.modMark.Skill.MarkData; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.ChatComponentText; import net.minecraft.util.IThreadListener; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; public class SkillPacket implements IMessage{ private int ID; private int[] XP = new int[35]; public SkillPacket() {} public SkillPacket(EntityPlayer E, int[] s ){ this.ID = E.getEntityId(); this.XP = s; } @Override public void fromBytes(ByteBuf buf) { for (int k = 0; k < 35; k++){ this.XP[k] = buf.readInt(); } this.ID = buf.readInt(); } @Override public void toBytes(ByteBuf buf) { for (int j = 0; j < 35; j++){ buf.writeInt(this.XP[j]); } buf.writeInt(this.ID); } //----------------------------------------------------------------------------------------------- public static class MarkHandler implements IMessageHandler<SkillPacket, IMessage > { @Override public IMessage onMessage(final SkillPacket message, MessageContext ctx) { IThreadListener ThreadListener = Minecraft.getMinecraft(); ThreadListener.addScheduledTask(new Runnable() { @Override public void run() { for (int i = 0; i < 35; i++){ EntityPlayer player = Minecraft.getMinecraft().thePlayer; MarkData p = MarkData.get(player); message.XP = p.getXp(); } System.out.println("PlayerData is from the PacketHandler"); } }); return null; } } }
-
yeah but i need some methods/fields outside their class. but then eclipse gives me errors with "make it static" and if i do, the error disappears. if i use the methods/fields inside their class, i can use "this.
but okay here are my files again.
EventHandler:
package com.modMark.Skill; import java.util.List; import com.modMark.Item_Block.MarkBlocks; import com.modMark.Main.MainRegistry; import com.modMark.Packets.SkillPacket; import akka.actor.FSM.State; import ibxm.Player; import net.minecraft.block.Block; import net.minecraft.block.BlockCrops; import net.minecraft.block.BlockStone; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.event.entity.EntityEvent.EntityConstructing; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerEvent.BreakSpeed; import net.minecraftforge.event.terraingen.SaplingGrowTreeEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent; import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import scala.reflect.internal.Trees.ThisSubstituter; public class EventHandlerMark { public static boolean notnull; @SubscribeEvent public void onEntityConstructing(EntityConstructing event) { if (event.entity instanceof EntityPlayer && MarkData.get((EntityPlayer) event.entity) == null){ MarkData.register((EntityPlayer) event.entity); System.out.println("Creating properties for the player" + event.entity.getName()); } } @SubscribeEvent public void onEntityJoinWorld(EntityJoinWorldEvent event) { if (event.entity instanceof EntityPlayer) { MarkData.get((EntityPlayer) event.entity).RequestingSync(); } } @SubscribeEvent public void onPlayerCloned(PlayerEvent.Clone event) { NBTTagCompound compound = new NBTTagCompound(); MarkData.get(event.original).saveReviveRelevantNBTData(compound, event.wasDeath); MarkData.get(event.entityPlayer).loadNBTData(compound); } @SubscribeEvent public void Farming(SaplingGrowTreeEvent event) { //problem: need to put what player placed the block } @SubscribeEvent public void MinExcaWCFarm_Req(BreakSpeed event) { //Event for req level Mining, Excavation, Woodcutting & Farming EntityPlayer player = event.entityPlayer; MarkData p = MarkData.get(player); Block block = event.state.getBlock(); if (block == Blocks.stone || block == Blocks.cobblestone){ p.requireLvl(8, 0); } if (block == Blocks.wheat){ p.requireLvl(7, 0); } if (block == Blocks.carrots){ p.requireLvl(7, 5); } if (block == Blocks.potatoes){ p.requireLvl(7, 10); } if (block == Blocks.coal_ore){ p.requireLvl(8, 5); } if (block == Blocks.emerald_ore){ p.requireLvl(8, 10); } if (block == Blocks.iron_ore){ p.requireLvl(8, 20); } if (block == Blocks.lapis_ore){ p.requireLvl(8, 25); } if (block == Blocks.gold_ore){ p.requireLvl(8, 30); } if (block == Blocks.diamond_ore){ p.requireLvl(8, 40); } if (block == Blocks.redstone_ore || block == Blocks.lit_redstone_ore ||block == Blocks.redstone_block || block == Blocks.obsidian ){ p.requireLvl(8, 45); } if (block == Blocks.netherrack ||block == Blocks.nether_brick ){ p.requireLvl(8, 50); } if (block == MarkBlocks.OreNetherite){ p.requireLvl(8, 60); } if (block == Blocks.quartz_ore || block == Blocks.quartz_block){ p.requireLvl(8, 70); } if (block == MarkBlocks.CrystRack){ p.requireLvl(8, 75); } if (block == MarkBlocks.OreCrystlium){ p.requireLvl(8, 80); } //excavation if (block == Blocks.dirt || block == Blocks.grass){ p.requireLvl(10, 0); } if (block == MarkBlocks.GemOpalOre){ p.requireLvl(10, 5); } if (block == Blocks.gravel){ p.requireLvl(10, 5); } if (block == MarkBlocks.GemSapphireOre){ p.requireLvl(10, 10); } if (block == Blocks.sand){ p.requireLvl(10, 10); } if (block == MarkBlocks.GemOlivineOre){ p.requireLvl(10, 15); } if (block == MarkBlocks.GemHyacinthOre){ p.requireLvl(10, 15); } if (block == MarkBlocks.GemTopazOre){ p.requireLvl(10, 25);; } if (block == Blocks.mycelium){ p.requireLvl(10, 30); } if (block == MarkBlocks.GemAmethystOre){ p.requireLvl(10, 40); } if (block == Blocks.soul_sand){ p.requireLvl(10, 50); } if (block == MarkBlocks.GemSiamOre){ p.requireLvl(10, 60); } if (block == MarkBlocks.CrystSand){ p.requireLvl(10, 75); } if (block == MarkBlocks.GemAquamarineOre){ p.requireLvl(10, 80); } if (block == Blocks.log){ p.requireLvl(11, 0); } if (block == Blocks.cactus){ p.requireLvl(11, 10); } if (block == Blocks.log2){ p.requireLvl(11, 20); } if (block == MarkBlocks.LogYew){ p.requireLvl(11, 40); } if (block == MarkBlocks.LogNetherBranch){ p.requireLvl(11, 60); } if (block == MarkBlocks.LogCrystWood){ p.requireLvl(11, 80); } if (MarkData.candothis == false){ event.setCanceled(true); } } @SubscribeEvent public void MinExcaWC_XP(BreakEvent event){ EntityPlayer player = event.getPlayer(); MarkData p = MarkData.get(player); Block block = event.state.getBlock(); if (block != null || block != Blocks.air){ this.notnull = true; } else{ this.notnull = false; } if (block == Blocks.stone || block == Blocks.cobblestone){ p.addXp(8, ; } else if (block == Blocks.wheat && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.addXp(7, 5); } else if (block == Blocks.carrots && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.addXp(7, 7); } else if (block == Blocks.potatoes && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.addXp(7, 9); } //mining else if (block == Blocks.coal_ore){ p.addXp(8, 12); } else if (block == Blocks.emerald_ore){ p.addXp(8, 16); } else if (block == Blocks.iron_ore){ p.addXp(8, 20); } else if (block == Blocks.lapis_ore){ p.addXp(8, 24); } else if (block == Blocks.gold_ore){ p.addXp(8, 28); } else if (block == Blocks.diamond_ore){ p.addXp(8, 32); } else if (block == Blocks.redstone_ore){ p.addXp(8, 33); } else if (block == Blocks.obsidian){ p.addXp(8, 34); } else if (block == Blocks.netherrack || block == Blocks.nether_brick){ p.addXp(8, 35); } else if (block == MarkBlocks.OreNetherite){ p.addXp(8, 40); } else if (block == Blocks.quartz_ore){ p.addXp(8, 42); } else if (block == MarkBlocks.CrystRack){ p.addXp(8, 45); } else if (block == MarkBlocks.OreCrystlium){ p.addXp(8, 50); } else if (block == Blocks.dirt || block == Blocks.grass){ p.addXp(10, 5); } else if (block == MarkBlocks.GemOpalOre){ p.addXp(10, ; } else if (block == Blocks.gravel){ p.addXp(10, 7); } else if (block == MarkBlocks.GemSapphireOre){ p.addXp(10, 12); } else if (block == Blocks.sand){ p.addXp(10, 9); } else if (block == MarkBlocks.GemOlivineOre){ p.addXp(10, 16); } else if (block == MarkBlocks.GemHyacinthOre){ p.addXp(10, 20); } else if (block == MarkBlocks.GemTopazOre){ p.addXp(10, 24); } else if (block == Blocks.mycelium){ p.addXp(10, 28); } else if (block == MarkBlocks.GemAmethystOre){ p.addXp(10, 32); } else if (block == Blocks.soul_sand){ p.addXp(10, 35); } else if (block == MarkBlocks.GemSiamOre){ p.addXp(10, 40); } else if (block == MarkBlocks.CrystSand){ p.addXp(10, 45); } else if (block == MarkBlocks.GemAquamarineOre){ p.addXp(10, 50); } else if (block == Blocks.log){ p.addXp(11, 10); } else if (block == Blocks.cactus){ p.addXp(11, 12); } else if (block == Blocks.log2){ p.addXp(11, 18); } else if (block == MarkBlocks.LogYew){ p.addXp(11, 30); } else if (block == MarkBlocks.LogNetherBranch){ p.addXp(11, 45); } else if (block == MarkBlocks.LogCrystWood){ p.addXp(11, 60); } else { } if (notnull == true){ p.getXp(); MainRegistry.network.sendTo(new SkillPacket(), (EntityPlayerMP) player); } } }
MarkData (previous called XpSave, but i thought MarkData was a better name)
package com.modMark.Skill; import com.modMark.Main.MainRegistry; import com.modMark.Packets.SkillPacket; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagIntArray; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; public class MarkData implements IExtendedEntityProperties { public static final String EXT_PLAYER136 = "ModMark136Data"; private final EntityPlayer player; public static boolean candothis; public static int[] XP = new int[35]; public MarkData(EntityPlayer player){ this.player = player; for (int i = 0; i < 35; i++){ XP[i] = 0; } System.out.println("Set Xps to 0!!"); } public final static void register(EntityPlayer player) { player.registerExtendedProperties(MarkData.EXT_PLAYER136, new MarkData(player)); } public final static MarkData get(EntityPlayer player) { return (MarkData) player.getExtendedProperties(EXT_PLAYER136); } public boolean isServerSide() { return this.player instanceof EntityPlayerMP; } @Override public void saveNBTData(NBTTagCompound compound) { NBTTagCompound Array = new NBTTagCompound(); Array.setIntArray("Skill136", this.getXp()); compound.setTag(EXT_PLAYER136 , Array); } @Override public void loadNBTData(NBTTagCompound compound) { NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PLAYER136); if (compound.hasKey("Skill136", 11)){ this.setXP(properties.getIntArray("Skill136")); System.out.println("Loading Xp Levels"); } } @Override public void init(Entity entity, World world) { } public void setXP(int[] Xp){ XP = Xp; } public int addXp(int SkillID, int amount){ Skill.Lvlcalc(player); Skill.getSkillName(); if((XP[skillID] + amount) >= Skill.NextLevel[skillID] && XP[skillID] < Skill.NextLevel[skillID]){ ChatComponentText component = new ChatComponentText("Congratulations! Your Level in " + Skill.SkillName[skillID] + " is now " + (Skill.Level[skillID]+ 1)); player.addChatComponentMessage(component); } //ChatComponentText component2 = new ChatComponentText(Skill.SkillName[skillID] + " XP: " + (XP[skillID] + amount)); //player.addChatComponentMessage(component2); return XP[skillID] += amount; } public void requireLvl(int SkillID, int reqlvl){ Skill.getSkillName(); candothis = Skill.Level[skillID] >= reqlvl; if(candothis == false){ ChatComponentText component = new ChatComponentText("You need " + reqlvl + " " + Skill.SkillName[skillID] + " for this"); player.addChatComponentMessage(component); } } public int[] getXp() { for (int i = 0;i < 35; i++){ if ((XP[i]) > 500000 && Skill.MainLock == 1){ XP[i] = 500000; } else if ((XP[i]) > 85000000 && Skill.MainLock == 2){ XP[i] = 85000000; } else if ((XP[i]) > 2000000000 && Skill.MainLock == 3){ XP[i] = 2000000000; } } return XP; } public void sync() { if (this.isServerSide()){ MainRegistry.network.sendTo(new SkillPacket(), (EntityPlayerMP) player); } } public void RequestingSync() { if (!this.isServerSide()) MainRegistry.network.sendToServer(new SkillPacket()); } public void saveReviveRelevantNBTData(NBTTagCompound compound, boolean wasDeath) { this.saveNBTData(compound); } }
And the Packet+PacketHandler class,(i did the IMessageHandler class as an inner class of IMessage, to make it more "organisable"
package com.modMark.Packets; import com.modMark.Main.GuiStatlist; import com.modMark.Skill.MarkData; import com.modMark.Skill.Skill; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.ChatComponentText; import net.minecraft.util.IThreadListener; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; public class SkillPacket implements IMessage{ private int ID; private int[] XP = new int[35]; public SkillPacket() {} public SkillPacket(EntityPlayer E,int[] s ){ this.ID = E.getEntityId(); this.XP = s; } @Override public void fromBytes(ByteBuf buf) { for (int k = 0; k < 35; k++){ this.XP[k] = buf.readInt(); } this.ID = buf.readInt(); } @Override public void toBytes(ByteBuf buf) { for (int j = 0; j < 35; j++){ buf.writeInt(this.XP[j]); } buf.writeInt(this.ID); } //----------------------------------------------------------------------------------------------- public static class MarkHandler implements IMessageHandler<SkillPacket, IMessage > { @Override public IMessage onMessage(SkillPacket message, MessageContext ctx) { IThreadListener ThreadListener = Minecraft.getMinecraft(); ThreadListener.addScheduledTask(new Runnable() { @Override public void run() { for (int i = 0; i < 35; i++){ //still need something to get my message here. } //ChatComponentText component2 = new ChatComponentText(player.getName() + " Excavation " + " XP: " + p.XP[10]); //player.addChatComponentMessage(component2); } }); return null; } } }
-
u mean this?
return this == Example1 ? 1 :(this == Example2 ? 2 : (this == Example3 ? 3 : 0))
-
hhm, I got an error... something with The Sending of my Packet from server to client. the game does'nt crash, but i don't get XP
but got an error in the console:
ps. this is much more work than i expected, all i want to do is to give every player the stats. so i need IExtendedEntityProperties for it. also, i need to send this to the client side to put it into the gui. because i got 35 skills with xp variables that changes much i also need a datawatcher. ehh ok i'm lost right know...
here are the files
IExtendedEntityProperties file
package com.modMark.Skill; import com.modMark.Main.MainRegistry; import com.modMark.Packets.SkillPacket; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; public class XpSave implements IExtendedEntityProperties { public static final String EXT_PLAYER136 = "ExtendedPlayer"; private final EntityPlayer player; public static boolean candothis; public static int[] XP = new int[35]; public XpSave(EntityPlayer player){ this.player = player; getEventXp(); } public static final void register(EntityPlayer player) { player.registerExtendedProperties(XpSave.EXT_PLAYER136, new XpSave(player)); } public static final XpSave get(EntityPlayer player) { return (XpSave) player.getExtendedProperties(EXT_PLAYER136); } @Override public void saveNBTData(NBTTagCompound compound) { NBTTagCompound properties = new NBTTagCompound(); for(int i = 0;i < 35; i++){ properties.setInteger("Skill[" + i + "]", XP[i]); } } @Override public void loadNBTData(NBTTagCompound compound) { NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PLAYER136); for (int i = 0; i < 35; i++) XP[i] = properties.getInteger("Skill[" + i + "]"); } @Override public void init(Entity entity, World world) { } public int getXp(int SkillID, int amount){ return XP[skillID] += amount; } public void requireLvl(int SkillID, int reqlvl){ Skill.getSkillName(); candothis = Skill.Level[skillID] >= reqlvl; if(candothis == false){ ChatComponentText component = new ChatComponentText("You need " + reqlvl + " " + Skill.SkillName[skillID] + " for this"); player.addChatComponentMessage(component); } } public static void getEventXp() { for (int i = 0;i < 35; i++){ if ((XP[i]) > 500000 && Skill.MainLock == 1){ XP[i] = 500000; } else if ((XP[i]) > 85000000 && Skill.MainLock == 2){ XP[i] = 85000000; } else if ((XP[i]) > 2000000000 && Skill.MainLock == 3){ XP[i] = 2000000000; } } } }
IMessage file
package com.modMark.Packets; import com.modMark.Main.GuiStatlist; import com.modMark.Skill.Skill; import com.modMark.Skill.XpSave; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; public class SkillPacket implements IMessage{ public SkillPacket() {} public SkillPacket(int s){ XpSave.getEventXp(); EntityPlayer player = (EntityPlayer) Minecraft.getMinecraft().thePlayer; XpSave p = XpSave.get(player); for (int i = 0; i < 35; i++){ p.XP[i] = s[i]; } } @Override public void fromBytes(ByteBuf buf) { for (int j = 0; j < 35; j++){ buf.writeInt(XpSave.XP[j]); } } @Override public void toBytes(ByteBuf buf) { for (int k = 0; k < 35; k++){ XpSave.XP[k] = buf.readInt(); } } }
IMessageHandler File
package com.modMark.Packets; import com.modMark.Main.GuiStatlist; import com.modMark.Skill.XpSave; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.IThreadListener; import net.minecraft.world.WorldServer; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; import net.minecraftforge.fml.relauncher.Side; public class MarkPacketHandler implements IMessageHandler<SkillPacket, IMessage > { @Override public IMessage onMessage(SkillPacket message, MessageContext ctx) { IThreadListener ThreadListener = Minecraft.getMinecraft(); ThreadListener.addScheduledTask(new Runnable() { @Override public void run() { EntityPlayer player = (EntityPlayer) Minecraft.getMinecraft().thePlayer; XpSave p = XpSave.get(player); XpSave.getEventXp(); for (int i = 0; i < 35; i++){ p.XP[i] = GuiStatlist.XP[i]; } } }); return null; } }
and again my EventHandler File
package com.modMark.Skill; import java.util.List; import com.modMark.Item_Block.MarkBlocks; import com.modMark.Main.MainRegistry; import com.modMark.Packets.SkillPacket; import akka.actor.FSM.State; import ibxm.Player; import net.minecraft.block.Block; import net.minecraft.block.BlockCrops; import net.minecraft.block.BlockStone; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.event.entity.EntityEvent.EntityConstructing; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.player.PlayerEvent.BreakSpeed; import net.minecraftforge.event.terraingen.SaplingGrowTreeEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent; import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import scala.reflect.internal.Trees.ThisSubstituter; public class EventHandlerMark { public static boolean notnull; @SubscribeEvent public void onEntityConstructing(EntityConstructing event) { if (event.entity instanceof EntityPlayer && XpSave.get((EntityPlayer) event.entity) == null){ XpSave.register((EntityPlayer) event.entity); EntityPlayer player = (EntityPlayer) event.entity; XpSave p = XpSave.get(player); for (int i = 0; i < 35; i++){ p.XP[i] = 0; } } } @SubscribeEvent public void Farming(SaplingGrowTreeEvent event) { } @SubscribeEvent public void MinExcaWCFarm_Req(BreakSpeed event) { //Event for req level Mining, Excavation, Woodcutting & Farming EntityPlayer player = event.entityPlayer; XpSave p = XpSave.get(player); Block block = event.state.getBlock(); if (block == Blocks.stone || block == Blocks.cobblestone){ p.requireLvl(8, 0); } if (block == Blocks.wheat){ p.requireLvl(7, 0); } if (block == Blocks.carrots){ p.requireLvl(7, 5); } if (block == Blocks.potatoes){ p.requireLvl(7, 10); } if (block == Blocks.coal_ore){ p.requireLvl(8, 5); } if (block == Blocks.emerald_ore){ p.requireLvl(8, 10); } if (block == Blocks.iron_ore){ p.requireLvl(8, 20); } if (block == Blocks.lapis_ore){ p.requireLvl(8, 25); } if (block == Blocks.gold_ore){ p.requireLvl(8, 30); } if (block == Blocks.diamond_ore){ p.requireLvl(8, 40); } if (block == Blocks.redstone_ore || block == Blocks.lit_redstone_ore ||block == Blocks.redstone_block || block == Blocks.obsidian ){ p.requireLvl(8, 45); } if (block == Blocks.netherrack ||block == Blocks.nether_brick ){ p.requireLvl(8, 50); } if (block == MarkBlocks.OreNetherite){ p.requireLvl(8, 60); } if (block == Blocks.quartz_ore || block == Blocks.quartz_block){ p.requireLvl(8, 70); } if (block == MarkBlocks.CrystRack){ p.requireLvl(8, 75); } if (block == MarkBlocks.OreCrystlium){ p.requireLvl(8, 80); } //excavation if (block == Blocks.dirt || block == Blocks.grass){ p.requireLvl(10, 0); } if (block == MarkBlocks.GemOpalOre){ p.requireLvl(10, 5); } if (block == Blocks.gravel){ p.requireLvl(10, 5); } if (block == MarkBlocks.GemSapphireOre){ p.requireLvl(10, 10); } if (block == Blocks.sand){ p.requireLvl(10, 10); } if (block == MarkBlocks.GemOlivineOre){ p.requireLvl(10, 15); } if (block == MarkBlocks.GemHyacinthOre){ p.requireLvl(10, 15); } if (block == MarkBlocks.GemTopazOre){ p.requireLvl(10, 25);; } if (block == Blocks.mycelium){ p.requireLvl(10, 30); } if (block == MarkBlocks.GemAmethystOre){ p.requireLvl(10, 40); } if (block == Blocks.soul_sand){ p.requireLvl(10, 50); } if (block == MarkBlocks.GemSiamOre){ p.requireLvl(10, 60); } if (block == MarkBlocks.CrystSand){ p.requireLvl(10, 75); } if (block == MarkBlocks.GemAquamarineOre){ p.requireLvl(10, 80); } if (block == Blocks.log){ p.requireLvl(11, 0); } if (block == Blocks.cactus){ p.requireLvl(11, 10); } if (block == Blocks.log2){ p.requireLvl(11, 20); } if (block == MarkBlocks.LogYew){ p.requireLvl(11, 40); } if (block == MarkBlocks.LogNetherBranch){ p.requireLvl(11, 60); } if (block == MarkBlocks.LogCrystWood){ p.requireLvl(11, 80); } if (XpSave.candothis == false){ event.setCanceled(true); } } @SubscribeEvent public void MinExcaWC_XP(BreakEvent event){ EntityPlayer player = event.getPlayer(); XpSave p = XpSave.get(player); Block block = event.state.getBlock(); if (block != null || block != Blocks.air){ this.notnull = true; } else{ this.notnull = false; } if (block == Blocks.stone || block == Blocks.cobblestone){ p.getXp(8, ; } else if (block == Blocks.wheat && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.getXp(7, 5); } else if (block == Blocks.carrots && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.getXp(7, 7); } else if (block == Blocks.potatoes && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.getXp(7, 9); } //mining else if (block == Blocks.coal_ore){ p.getXp(8, 12); } else if (block == Blocks.emerald_ore){ p.getXp(8, 16); } else if (block == Blocks.iron_ore){ p.getXp(8, 20); } else if (block == Blocks.lapis_ore){ p.getXp(8, 24); } else if (block == Blocks.gold_ore){ p.getXp(8, 28); } else if (block == Blocks.diamond_ore){ p.getXp(8, 32); } else if (block == Blocks.redstone_ore){ p.getXp(8, 33); } else if (block == Blocks.obsidian){ p.getXp(8, 34); } else if (block == Blocks.netherrack || block == Blocks.nether_brick){ p.getXp(8, 35); } else if (block == MarkBlocks.OreNetherite){ p.getXp(8, 40); } else if (block == Blocks.quartz_ore){ p.getXp(8, 42); } else if (block == MarkBlocks.CrystRack){ p.getXp(8, 45); } else if (block == MarkBlocks.OreCrystlium){ p.getXp(8, 50); } else if (block == Blocks.dirt || block == Blocks.grass){ p.getXp(10, 5); } else if (block == MarkBlocks.GemOpalOre){ p.getXp(10, ; } else if (block == Blocks.gravel){ p.getXp(10, 7); } else if (block == MarkBlocks.GemSapphireOre){ p.getXp(10, 12); } else if (block == Blocks.sand){ p.getXp(10, 9); } else if (block == MarkBlocks.GemOlivineOre){ p.getXp(10, 16); } else if (block == MarkBlocks.GemHyacinthOre){ p.getXp(10, 20); } else if (block == MarkBlocks.GemTopazOre){ p.getXp(10, 24); } else if (block == Blocks.mycelium){ p.getXp(10, 28); } else if (block == MarkBlocks.GemAmethystOre){ p.getXp(10, 32); } else if (block == Blocks.soul_sand){ p.getXp(10, 35); } else if (block == MarkBlocks.GemSiamOre){ p.getXp(10, 40); } else if (block == MarkBlocks.CrystSand){ p.getXp(10, 45); } else if (block == MarkBlocks.GemAquamarineOre){ p.getXp(10, 50); } else if (block == Blocks.log){ p.getXp(11, 10); } else if (block == Blocks.cactus){ p.getXp(11, 12); } else if (block == Blocks.log2){ p.getXp(11, 18); } else if (block == MarkBlocks.LogYew){ p.getXp(11, 30); } else if (block == MarkBlocks.LogNetherBranch){ p.getXp(11, 45); } else if (block == MarkBlocks.LogCrystWood){ p.getXp(11, 60); } else { } if (notnull == true){ p.getEventXp(); MainRegistry.network.sendTo(new SkillPacket(), (EntityPlayerMP) player); } } }
and here is the console:
[14:27:53] [server thread/ERROR] [FML]: FMLIndexedMessageCodec exception caught io.netty.handler.codec.EncoderException: java.lang.IndexOutOfBoundsException: readerIndex(0) + length(4) exceeds writerIndex(1): UnpooledHeapByteBuf(ridx: 0, widx: 1, cap: 256) at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107) ~[MessageToMessageEncoder.class:4.0.23.Final] at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) ~[MessageToMessageCodec.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:658) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:716) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:706) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:741) ~[AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:895) ~[DefaultChannelPipeline.class:4.0.23.Final] at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:240) ~[AbstractChannel.class:4.0.23.Final] at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.sendTo(SimpleNetworkWrapper.java:229) [simpleNetworkWrapper.class:?] at com.modMark.Skill.EventHandlerMark.MinExcaWC_XP(EventHandlerMark.java:354) [EventHandlerMark.class:?] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_10_EventHandlerMark_MinExcaWC_XP_BreakEvent.invoke(.dynamic) [?:?] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:55) [ASMEventHandler.class:?] at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:140) [EventBus.class:?] at net.minecraftforge.common.ForgeHooks.onBlockBreakEvent(ForgeHooks.java:684) [ForgeHooks.class:?] at net.minecraft.server.management.ItemInWorldManager.tryHarvestBlock(ItemInWorldManager.java:299) [itemInWorldManager.class:?] at net.minecraft.server.management.ItemInWorldManager.onBlockClicked(ItemInWorldManager.java:164) [itemInWorldManager.class:?] at net.minecraft.network.NetHandlerPlayServer.processPlayerDigging(NetHandlerPlayServer.java:551) [NetHandlerPlayServer.class:?] at net.minecraft.network.play.client.C07PacketPlayerDigging.processPacket(C07PacketPlayerDigging.java:56) [C07PacketPlayerDigging.class:?] at net.minecraft.network.play.client.C07PacketPlayerDigging.processPacket(C07PacketPlayerDigging.java:12) [C07PacketPlayerDigging.class:?] at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) [PacketThreadUtil$1.class:?] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_40] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_40] at net.minecraft.util.Util.runTask(Util.java:22) [util.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:736) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:681) [MinecraftServer.class:?] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:159) [integratedServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:548) [MinecraftServer.class:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_40] Caused by: java.lang.IndexOutOfBoundsException: readerIndex(0) + length(4) exceeds writerIndex(1): UnpooledHeapByteBuf(ridx: 0, widx: 1, cap: 256) at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1175) ~[AbstractByteBuf.class:4.0.23.Final] at io.netty.buffer.AbstractByteBuf.readInt(AbstractByteBuf.java:619) ~[AbstractByteBuf.class:4.0.23.Final] at net.minecraft.network.PacketBuffer.readInt(PacketBuffer.java:697) ~[PacketBuffer.class:?] at com.modMark.Packets.SkillPacket.toBytes(SkillPacket.java:30) ~[skillPacket.class:?] at net.minecraftforge.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:11) ~[simpleIndexedCodec.class:?] at net.minecraftforge.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:7) ~[simpleIndexedCodec.class:?] at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.encode(FMLIndexedMessageToMessageCodec.java:55) ~[FMLIndexedMessageToMessageCodec.class:?] at io.netty.handler.codec.MessageToMessageCodec$1.encode(MessageToMessageCodec.java:67) ~[MessageToMessageCodec$1.class:4.0.23.Final] at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89) ~[MessageToMessageEncoder.class:4.0.23.Final] ... 27 more
-
yeah, have worked on it. but got a real fight right now with the packetHandler (IMessage/IMessageHandler)
i put my files here again
here's My EventHandler
EventHandlerMark.java:
package com.modMark.Skill; import java.util.List; import com.modMark.Item_Block.MarkBlocks; import akka.actor.FSM.State; import ibxm.Player; import net.minecraft.block.Block; import net.minecraft.block.BlockCrops; import net.minecraft.block.BlockStone; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.event.entity.EntityEvent.EntityConstructing; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.player.PlayerEvent.BreakSpeed; import net.minecraftforge.event.terraingen.SaplingGrowTreeEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent; import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import scala.reflect.internal.Trees.ThisSubstituter; public class EventHandlerMark { public boolean notnull; @SubscribeEvent public void onEntityConstructing(EntityConstructing event) { if (event.entity instanceof EntityPlayer && XpSave.get((EntityPlayer) event.entity) == null){ XpSave.register((EntityPlayer) event.entity); EntityPlayer player = (EntityPlayer) event.entity; XpSave p = XpSave.get(player); for (int i = 0; i < 35; i++){ p.XP[i] = 0; } } } @SubscribeEvent public void Farming(SaplingGrowTreeEvent event) { } @SubscribeEvent public void MinExcaWCFarm_Req(BreakSpeed event) { //Event for req level Mining, Excavation, Woodcutting & Farming EntityPlayer player = event.entityPlayer; XpSave p = XpSave.get(player); Block block = event.state.getBlock(); if (block == Blocks.stone || block == Blocks.cobblestone){ p.requireLvl(8, 0); } if (block == Blocks.wheat){ p.requireLvl(7, 0); } if (block == Blocks.carrots){ p.requireLvl(7, 5); } if (block == Blocks.potatoes){ p.requireLvl(7, 10); } if (block == Blocks.coal_ore){ p.requireLvl(8, 5); } if (block == Blocks.emerald_ore){ p.requireLvl(8, 10); } if (block == Blocks.iron_ore){ p.requireLvl(8, 20); } if (block == Blocks.lapis_ore){ p.requireLvl(8, 25); } if (block == Blocks.gold_ore){ p.requireLvl(8, 30); } if (block == Blocks.diamond_ore){ p.requireLvl(8, 40); } if (block == Blocks.redstone_ore || block == Blocks.lit_redstone_ore ||block == Blocks.redstone_block || block == Blocks.obsidian ){ p.requireLvl(8, 45); } if (block == Blocks.netherrack ||block == Blocks.nether_brick ){ p.requireLvl(8, 50); } if (block == MarkBlocks.OreNetherite){ p.requireLvl(8, 60); } if (block == Blocks.quartz_ore || block == Blocks.quartz_block){ p.requireLvl(8, 70); } if (block == MarkBlocks.CrystRack){ p.requireLvl(8, 75); } if (block == MarkBlocks.OreCrystlium){ p.requireLvl(8, 80); } //excavation if (block == Blocks.dirt || block == Blocks.grass){ p.requireLvl(10, 0); } if (block == MarkBlocks.GemOpalOre){ p.requireLvl(10, 5); } if (block == Blocks.gravel){ p.requireLvl(10, 5); } if (block == MarkBlocks.GemSapphireOre){ p.requireLvl(10, 10); } if (block == Blocks.sand){ p.requireLvl(10, 10); } if (block == MarkBlocks.GemOlivineOre){ p.requireLvl(10, 15); } if (block == MarkBlocks.GemHyacinthOre){ p.requireLvl(10, 15); } if (block == MarkBlocks.GemTopazOre){ p.requireLvl(10, 25);; } if (block == Blocks.mycelium){ p.requireLvl(10, 30); } if (block == MarkBlocks.GemAmethystOre){ p.requireLvl(10, 40); } if (block == Blocks.soul_sand){ p.requireLvl(10, 50); } if (block == MarkBlocks.GemSiamOre){ p.requireLvl(10, 60); } if (block == MarkBlocks.CrystSand){ p.requireLvl(10, 75); } if (block == MarkBlocks.GemAquamarineOre){ p.requireLvl(10, 80); } if (block == Blocks.log){ p.requireLvl(11, 0); } if (block == Blocks.cactus){ p.requireLvl(11, 10); } if (block == Blocks.log2){ p.requireLvl(11, 20); } if (block == MarkBlocks.LogYew){ p.requireLvl(11, 40); } if (block == MarkBlocks.LogNetherBranch){ p.requireLvl(11, 60); } if (block == MarkBlocks.LogCrystWood){ p.requireLvl(11, 80); } if (XpSave.candothis == false){ event.setCanceled(true); } } @SubscribeEvent public void MinExcaWC_XP(BreakEvent event){ EntityPlayer player = event.getPlayer(); XpSave p = XpSave.get(player); Block block = event.state.getBlock(); if (block != null || block != Blocks.air){ this.notnull = true; } else{ this.notnull = false; } if (block == Blocks.stone || block == Blocks.cobblestone){ p.getXp(8, ; } if (block == Blocks.wheat && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.getXp(7, 5); } else if (block == Blocks.carrots && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.getXp(7, 7); } else if (block == Blocks.potatoes && (((Integer)event.state.getValue(BlockCrops.AGE)).intValue() == 7)){ p.getXp(7, 9); } //mining else if (block == Blocks.coal_ore){ p.getXp(8, 12); } else if (block == Blocks.emerald_ore){ p.getXp(8, 16); } else if (block == Blocks.iron_ore){ p.getXp(8, 20); } else if (block == Blocks.lapis_ore){ p.getXp(8, 24); } else if (block == Blocks.gold_ore){ p.getXp(8, 28); } else if (block == Blocks.diamond_ore){ p.getXp(8, 32); } else if (block == Blocks.redstone_ore){ p.getXp(8, 33); } else if (block == Blocks.obsidian){ p.getXp(8, 34); } else if (block == Blocks.netherrack || block == Blocks.nether_brick){ p.getXp(8, 35); } else if (block == MarkBlocks.OreNetherite){ p.getXp(8, 40); } else if (block == Blocks.quartz_ore){ p.getXp(8, 42); } else if (block == MarkBlocks.CrystRack){ p.getXp(8, 45); } else if (block == MarkBlocks.OreCrystlium){ p.getXp(8, 50); } else if (block == Blocks.dirt || block == Blocks.grass){ p.getXp(10, 5); } else if (block == MarkBlocks.GemOpalOre){ p.getXp(10, ; } else if (block == Blocks.gravel){ p.getXp(10, 7); } else if (block == MarkBlocks.GemSapphireOre){ p.getXp(10, 12); } else if (block == Blocks.sand){ p.getXp(10, 9); } else if (block == MarkBlocks.GemOlivineOre){ p.getXp(10, 16); } else if (block == MarkBlocks.GemHyacinthOre){ p.getXp(10, 20); } else if (block == MarkBlocks.GemTopazOre){ p.getXp(10, 24); } else if (block == Blocks.mycelium){ p.getXp(10, 28); } else if (block == MarkBlocks.GemAmethystOre){ p.getXp(10, 32); } else if (block == Blocks.soul_sand){ p.getXp(10, 35); } else if (block == MarkBlocks.GemSiamOre){ p.getXp(10, 40); } else if (block == MarkBlocks.CrystSand){ p.getXp(10, 45); } else if (block == MarkBlocks.GemAquamarineOre){ p.getXp(10, 50); } else if (block == Blocks.log){ p.getXp(11, 10); } else if (block == Blocks.cactus){ p.getXp(11, 12); } else if (block == Blocks.log2){ p.getXp(11, 18); } else if (block == MarkBlocks.LogYew){ p.getXp(11, 30); } else if (block == MarkBlocks.LogNetherBranch){ p.getXp(11, 45); } else if (block == MarkBlocks.LogCrystWood){ p.getXp(11, 60); } else { } if (notnull == true){ p.getEventXp(); } } }
I will come with the XpSave File(IExtendedEntityProperties) as soon as possible
same for the IMessageHandler and IMessage File
-
okay, it's working. maybe not the shortest way but it works. only problem now is that i want to let everyone on my server got his own skill levels and XP.
package com.modMark.Skill; import com.modMark.Item_Block.MarkBlocks; import akka.actor.FSM.State; import ibxm.Player; import net.minecraft.block.Block; import net.minecraft.block.BlockCrops; import net.minecraft.block.BlockStone; import net.minecraft.block.material.Material; import net.minecraft.block.state.BlockState; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.event.entity.player.PlayerEvent.BreakSpeed; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent; import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import scala.reflect.internal.Trees.ThisSubstituter; public class EventHandlerMark { public static Block ID; public static int[] getXP = new int[35]; public static boolean notnull; public static int ReqLvl; public static EntityPlayer player; @SubscribeEvent public void Breakevent1(BreakSpeed event) { //... EntityPlayer Player = player; Block block = event.state.getBlock(); if (block == Blocks.stone || block == Blocks.cobblestone){ ReqLvl = 0; } if (block == Blocks.wheat){ ReqLvl = 0; } if (block == Blocks.carrots){ ReqLvl = 5; } if (block == Blocks.potatoes){ ReqLvl = 10; } if (block == Blocks.coal_ore){ ReqLvl = 5; } if (block == Blocks.emerald_ore){ ReqLvl = 10; } if (block == Blocks.iron_ore){ ReqLvl = 20; } if (block == Blocks.lapis_ore){ ReqLvl = 25; } if (block == Blocks.gold_ore){ ReqLvl = 30; } if (block == Blocks.diamond_ore){ ReqLvl = 40; } if (block == Blocks.redstone_ore || block == Blocks.lit_redstone_ore ||block == Blocks.redstone_block || block == Blocks.obsidian ){ ReqLvl = 45; } if (block == Blocks.netherrack ||block == Blocks.nether_brick ){ ReqLvl = 50; } if (block == MarkBlocks.OreNetherite){ ReqLvl = 60; } if (block == Blocks.quartz_ore || block == Blocks.quartz_block){ ReqLvl = 70; } if (block == MarkBlocks.NetherStone){ ReqLvl = 75; } if (block == MarkBlocks.OreOther){ ReqLvl = 80; } if (block == Blocks.dirt || block == Blocks.grass){ ReqLvl = 0; } if (block == MarkBlocks.GemOpalOre){ ReqLvl = 5; } if (block == Blocks.gravel){ ReqLvl = 5; } if (block == MarkBlocks.GemSapphireOre){ ReqLvl = 10; } if (block == Blocks.sand){ ReqLvl = 10; } if (block == MarkBlocks.GemOlivineOre){ ReqLvl = 15; } if (block == MarkBlocks.GemHyacinthOre){ ReqLvl = 20; } if (block == MarkBlocks.GemTopazOre){ ReqLvl = 25; } if (block == Blocks.mycelium){ ReqLvl = 30; } if (block == MarkBlocks.GemAmethystOre){ ReqLvl = 40; } if (block == Blocks.soul_sand){ ReqLvl = 50; } if (block == MarkBlocks.GemSiamOre){ ReqLvl = 60; } if (block == MarkBlocks.CrystSand){ ReqLvl = 75; } if (block == MarkBlocks.GemAquamarineOre){ ReqLvl = 80; } if (block == Blocks.log){ ReqLvl = 0; } if (block == Blocks.cactus){ ReqLvl = 10; } if (block == Blocks.log2){ ReqLvl = 20; } if (block == MarkBlocks.LogYew){ ReqLvl = 40; } if (block == MarkBlocks.LogNetherBranch){ ReqLvl = 60; } if (block == MarkBlocks.LogNetherWood){ ReqLvl = 80; } if (ReqLvl > Skill.Level[8] && block.getMaterial() == Material.rock){ event.setCanceled(true); FMLClientHandler.instance().getClient().ingameGUI.getChatGUI().printChatMessage(new ChatComponentText("You need " + ReqLvl + " Mining for this.")); } else if (ReqLvl > Skill.Level[10] && block.getMaterial() == Material.sand || ReqLvl > Skill.Level[10] && block.getMaterial() == Material.ground){ event.setCanceled(true); FMLClientHandler.instance().getClient().ingameGUI.getChatGUI().printChatMessage(new ChatComponentText("You need " + ReqLvl + " Excavation for this.")); } else if (ReqLvl > Skill.Level[7] && block.getMaterial() == Material.plants){ event.setCanceled(true); FMLClientHandler.instance().getClient().ingameGUI.getChatGUI().printChatMessage(new ChatComponentText("You need " + ReqLvl + " Farming for this.")); } else if (ReqLvl > Skill.Level[11] && block.getMaterial() == Material.wood || ReqLvl > Skill.Level[11] && block.getMaterial() == Material.cactus){ event.setCanceled(true); FMLClientHandler.instance().getClient().ingameGUI.getChatGUI().printChatMessage(new ChatComponentText("You need " + ReqLvl + " Woodcutting for this.")); } else if (block.getMaterial() == Material.air){ } else{} } @SubscribeEvent public void BreakBlock(BreakEvent event){ Block block = event.state.getBlock(); ID = event.state.getBlock(); if (block != null || block != Blocks.air){ this.notnull = true; } else{ this.notnull = false; } if (block == Blocks.stone || block == Blocks.cobblestone){ getXP[8] += 8; } //farming else if (block == Blocks.wheat){ getXP[7] += 5; } else if (block == Blocks.carrots){ getXP[7] += 7; } else if (block == Blocks.potatoes){ getXP[7] += 9; } //mining else if (block == Blocks.coal_ore){ getXP[8] += 12; } else if (block == Blocks.emerald_ore){ getXP[8] += 16; } else if (block == Blocks.iron_ore){ getXP[8] += 20; } else if (block == Blocks.lapis_ore){ getXP[8] += 24; } else if (block == Blocks.gold_ore){ getXP[8] += 28; } else if (block == Blocks.diamond_ore){ getXP[8] += 32; } else if (block == Blocks.redstone_ore){ getXP[8] += 33; } else if (block == Blocks.obsidian){ getXP[8] += 34; } else if (block == Blocks.netherrack || block == Blocks.nether_brick){ getXP[8] += 35; } else if (block == MarkBlocks.OreNetherite){ getXP[10] += 40; } else if (block == Blocks.quartz_ore){ getXP[8] += 42; } else if (block == MarkBlocks.NetherStone){ getXP[8] += 45; } else if (block == MarkBlocks.OreOther){ getXP[8] += 50; } else if (block == Blocks.dirt || block == Blocks.grass){ getXP[10] += 5; } else if (block == MarkBlocks.GemOpalOre){ getXP[10] += 8; } else if (block == Blocks.gravel){ getXP[10] += 7; } else if (block == MarkBlocks.GemSapphireOre){ getXP[10] += 12; } else if (block == Blocks.sand){ getXP[10] += 9; } else if (block == MarkBlocks.GemOlivineOre){ getXP[10] += 16; } else if (block == MarkBlocks.GemHyacinthOre){ getXP[10] += 20; } else if (block == MarkBlocks.GemTopazOre){ getXP[10] += 24; } else if (block == Blocks.mycelium){ getXP[10] += 28; } else if (block == MarkBlocks.GemAmethystOre){ getXP[10] += 32; } else if (block == Blocks.soul_sand){ getXP[10] += 35; } else if (block == MarkBlocks.GemSiamOre){ getXP[10] += 40; } else if (block == MarkBlocks.OtherSand){ getXP[10] += 45; } else if (block == MarkBlocks.GemAquamarineOre){ getXP[10] += 50; } else if (block == Blocks.log){ getXP[11] += 10; } else if (block == Blocks.cactus){ getXP[11] += 12; } else if (block == Blocks.log2){ getXP[11] += 18; } else if (block == MarkBlocks.LogYew){ getXP[11] += 30; } else if (block == MarkBlocks.LogNetherBranch){ getXP[11] += 45; } else if (block == MarkBlocks.LogNetherWood){ getXP[11] += 60; } else { } if (notnull == true){ getEventXp(); } } public static void getEventXp() { for (int i = 0;i < 35; i++){ if (getXP[i] > 500000 && Skill.MainLock == 1){ getXP[i] = 500000; } else if (getXP[i] > 85000000 && Skill.MainLock == 2){ getXP[i] = 85000000; } else if (getXP[i] > 2000000000 && Skill.MainLock == 3){ getXP[i] = 2000000000; } } Skill.getXp(Skill.Player); for(int j = 0; j < 35; j++){ Skill.XP[j] += getXP[j]; } } }
oh and also, i'm creating some extra stuff like blocks and items and trees. (that new model system for textures is a bit differend than i remembered previous)and that works fine
-
why so Mad, Relax Man, everyone needs to start sometime with java. i already written my Gui myself, and then I come with some problems with finding the right field, but you say I could find that code by looking in the source. okay yeah a very stupit question but where can i find that source code? because i can't find that files man... if i find a method/field that i can use i mostly google it 20 times for what it exactly can do ect.
PS. oh nvm i found them... how can i be so stupid
-
ok i saw that i need 2 events, one for getting Xp if the block breaks and one for interrupting the breakspeed.
But i cant find a method that looks up for me what block i'm exactly mining.
*if(Block == Block.stone)* does'nt work for me
(event.block) gives error "block cannot be resolved or is not a field"
i also replaced my level and Xp and Calcs to an other classfile
i'm sorry for my bad java. im still need to learn a lot more of it. at least i can read it well but can make some ugly mistakes if i write the code myself.
-
Hello,
I'm writing a RPG mod. and i'm currenty stuck at the part with how to add Xp if you mine a block and how to stop
breaking a block if you not have the required level.
yeah i know i'm not a good Java coder if you see my codes but I will become better.
i'm currently stuck at the part writing the eventHandler.
my first problem is how to let the XP gains works
and my second problem is how to cancel the BreakEvent when the required level is higher that your level.
and now if i mine a block with a Req lvl higher than my level. the block will break and turned into a ghost block. by re-entering the world the block will become normal again.
for me it looks like the block will be mined for the client. but not for the server.
here are my codes of my Main file and My EventHandler File and also For my XP problems the codes of my gui file where the xp codes are putted in:
MainRegistry.class:
package com.modMark.Main; import com.modMark.lib.revStrings; 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.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.network.NetworkRegistry; @Mod(modid = "mark13695", name = "Mark's Mod", version = "0.0.1") public class MainRegistry { @Mod.Instance("mark13695") public static MainRegistry instance; @SidedProxy(clientSide = "com.modMark.Main.ClientProxy", serverSide = "com.modMark.Main.ServerProxy" ) public static ServerProxy proxy; @EventHandler public static void PreLoad(FMLPreInitializationEvent PreEvent){ proxy.registerRenderInfo(); MinecraftForge.EVENT_BUS.register(new MarkKeyBindings()); MarkKeyBindings.init(); } @EventHandler public static void Load(FMLInitializationEvent Event){ NetworkRegistry.INSTANCE.registerGuiHandler(instance, new IGuiHandlerMark()); MinecraftForge.EVENT_BUS.register(new EventHandlerMark()); } @EventHandler public static void PostLoad(FMLPostInitializationEvent PostEvent){ } }
EventHandlerMark.class:
package com.modMark.Main; import ibxm.Player; import net.minecraft.block.Block; import net.minecraft.block.BlockStone; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent; import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import scala.reflect.internal.Trees.ThisSubstituter; public class EventHandlerMark { public static int ID; public static int ReqLvl; public static int getXp; @SubscribeEvent public static void BreakEvent(BreakEvent event) { Block block = Block.getBlockById(ID); if (ID == 1){ ReqLvl = 0; getXp = 8; } if (ID == 15){ ReqLvl = 20; getXp = 15; } if (ID == 16){ ReqLvl = 5; getXp = 12; } if (ID == 3){ ReqLvl = 0; getXp = 5; } if (ReqLvl > GuiStatlist.Level[8] && block.getMaterial() == Material.rock){ event.setCanceled(true); } else if (ReqLvl > GuiStatlist.Level[10] && block.getMaterial() == Material.sand){ event.setCanceled(true); } else if( block.getMaterial() == Material.rock) { GuiStatlist.XP[8] += getXp; } else if( block.getMaterial() == Material.sand) { GuiStatlist.XP[10] += getXp; } }
And
GuiStatlist.class:
package com.modMark.Main; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.util.ResourceLocation; public class GuiStatlist extends GuiScreen { public GuiStatlist(){} public static final int MainLock = 1; public static final int XpLock1 = 0; public static final int XpLock2 = 0; public static final int XpLock3 = 0; public static final int XpLock4 = 0; public static final int XpLock5 = 0; public static final int XpLock6 = 1; public static final int XpLock7 = 0; public static String[] Skill = new String[35]; public static int[] XP = new int[35]; public static double[] Level1 = new double[35]; public static int[] Level = new int[35]; public static double[] NextLevel0 = new double[35]; public static double[] NextLevel1 = new double[35]; public static int[] NextLevel = new int[35]; public static int[] XpNeed = new int[35]; public static double[] Degrees1 = new double[35]; public static double[] Degrees = new double[35]; public static int i; @Override public void drawScreen(int mouseX, int mouseY, float pticks) { this.drawDefaultBackground(); ResourceLocation location = new ResourceLocation("mark13695", "textures/gui/skillList.png"); this.mc.getTextureManager().bindTexture(location); /** Xp formule */ for (i = 0; i < 35;i++) { if (XP[i] == 2000000000){ Level1[i] = 255; } else if (XP[i] >= 1720000000 && XP[i] <= 1999999999){ Level1[i] = 254; } else if (XP[i] >= 1480000000 && XP[i] <= 1719999999){ Level1[i] = 253; } else if (XP[i] >= 1280000000 && XP[i] <= 1479999999){ Level1[i] = 252; } else if (XP[i] >= 1120000000 && XP[i] <= 1279999999){ Level1[i] = 251; } else if (XP[i] >= 1000000000 && XP[i] <= 1119999999){ Level1[i] = 250; } else if (XP[i] >= 954238196 && XP[i] <= 999999999){ Level1[i] = 249; } else if (XP[i] >= 100005814 && XP[i] <= 954238195){ Level1[i] = ((Math.log(XP[i] + 8287)/Math.log(8287))-1)*192+1; } else if (XP[i] >= 70404413 && XP[i] <= 100005813){ Level1[i] = 200; } else if (XP[i] >= 701754 && XP[i] <= 70404412){ Level1[i] = ((Math.log10(XP[i] + 7480)/Math.log10(7480))-1)*194+1; } else if (XP[i] >= 409286 && XP[i] <= 701753){ Level1[i] = 99; } else if (XP[i] <= 409285){ Level1[i] = ((Math.log10(XP[i] + 522)/Math.log10(522))-1)*92+1; } else { Level1[i] = 0; } Level[i] = (int) Math.floor(Level1[i]); /** floors level down*/ NextLevel0[i] = (int) (Level[i] + 1); /** says Level + 1*/ NextLevel[i] = (int) Math.ceil(NextLevel1[i]); XpNeed[i] = (int) (NextLevel[i] - XP[i]); if (Level[i] == 99 || Level[i] == 200 || Level[i] == 255) { Degrees[i] = 0; } else { Degrees[i] = ((XP[i] - Math.ceil(Degrees1[i])) / (NextLevel[i] - Math.ceil(Degrees1[i]))) * 39; } if (Level[i] < 99) { NextLevel1[i] = (Math.pow(522, (NextLevel0[i] - 1)/92 +1) - 522); } else if (Level[i] == 99) { NextLevel1[i] = 701754; } else if (Level[i] >= 100 && Level[i] < 200) { NextLevel1[i] = (Math.pow(7480, (NextLevel0[i] - 1)/194 +1) - 7480); } else if (Level[i] == 200) { NextLevel1[i] = 100005814; } else if (Level[i] >= 201 && Level[i] < 249) { NextLevel1[i] = (Math.pow(8287, (NextLevel0[i] - 1)/192 +1) - 8287); } else if (Level[i] == 249) { NextLevel1[i] = 1000000000; } else if (Level[i] == 250) { NextLevel1[i] = 1120000000; } else if (Level[i] == 251) { NextLevel1[i] = 1280000000; } else if (Level[i] == 252) { NextLevel1[i] = 1480000000; } else if (Level[i] == 253) { NextLevel1[i] = 1720000000; } else if (Level[i] == 254) { NextLevel1[i] = 2000000000; } else { NextLevel1[i] = 0; } if (Level[i] <= 98) { Degrees1[i] = (Math.pow(522, (NextLevel0[i] - 2)/92 +1) - 522) ; } else if (Level[i] >= 100 && Level[i] <= 199) { Degrees1[i] = (Math.pow(7480, (NextLevel0[i] - 2)/194 +1) - 7480); } else if (Level[i] >= 201 && Level[i] <= 249) { Degrees1[i] = (Math.pow(8287, (NextLevel0[i] - 2)/192 +1) - 8287); } else if (Level[i] == 250) { Degrees1[i] = 1000000000; } else if (Level[i] == 251) { Degrees1[i] = 1120000000; } else if (Level[i] == 252) { Degrees1[i] = 1280000000; } else if (Level[i] == 253) { Degrees1[i] = 1480000000; } else if (Level[i] == 254) { Degrees1[i] = 1720000000; } else { Degrees1[i] = 0; } } /** Gui Texture loading*/ float PoX = mouseX; float PoY = mouseY; int xSize = 235; int ySize = 211; int w = this.width; int h = this.height; int x = ((w - xSize) / 2); int y = ((h - ySize) / 2); int z = 1; drawModalRectWithCustomSizedTexture(x, y, 0, 0, xSize, ySize, 235, 211); /** Progness Bars, sorry for dead codes. this are codes for when a skill is locked. will be worked on in the future */ ResourceLocation location2 = new ResourceLocation("mark13695", "textures/gui/SkillBarL.png"); this.mc.getTextureManager().bindTexture(location2); if (XpLock1 == 0) { drawModalRectWithCustomSizedTexture(x + 181, y + 36, 0, 0, (int) 38 , 2,(int) 38 , 2); } if (XpLock2 == 0) { drawModalRectWithCustomSizedTexture(x + 181, y + 63, 0, 0, (int) 38 , 2,(int) 38 , 2); } if (XpLock3 == 0) { drawModalRectWithCustomSizedTexture(x + 181, y + 90, 0, 0, (int) 38 , 2,(int) 38 , 2); } if (XpLock4 == 0) { drawModalRectWithCustomSizedTexture(x + 181, y + 117, 0, 0, (int) 38 , 2,(int) 38 , 2); } if (XpLock5 == 0) { drawModalRectWithCustomSizedTexture(x + 181, y + 144, 0, 0, (int) 38 , 2,(int) 38 , 2); } if (XpLock6 == 0) { drawModalRectWithCustomSizedTexture(x + 181, y + 171, 0, 0, (int) 38 , 2,(int) 38 , 2); } if (XpLock7 == 0) { drawModalRectWithCustomSizedTexture(x + 181, y + 198, 0, 0, (int) 38 , 2,(int) 38 , 2); } ResourceLocation location3 = new ResourceLocation("mark13695", "textures/gui/SkillBar.png"); this.mc.getTextureManager().bindTexture(location3); drawModalRectWithCustomSizedTexture(x + 9, y + 36, 0, 0, (int) Degrees[0] , 2,(int) Degrees[0] , 2); drawModalRectWithCustomSizedTexture(x + 9, y + 63, 0, 0, (int) Degrees[1] , 2,(int) Degrees[1] , 2); drawModalRectWithCustomSizedTexture(x + 9, y + 90, 0, 0, (int) Degrees[2] , 2,(int) Degrees[2] , 2); drawModalRectWithCustomSizedTexture(x + 9, y + 117, 0, 0, (int) Degrees[3] , 2,(int) Degrees[3] , 2); drawModalRectWithCustomSizedTexture(x + 9, y + 144, 0, 0, (int) Degrees[4] , 2,(int) Degrees[4] , 2); drawModalRectWithCustomSizedTexture(x + 9, y + 171, 0, 0, (int) Degrees[5] , 2,(int) Degrees[5] , 2); drawModalRectWithCustomSizedTexture(x + 9, y + 198, 0, 0, (int) Degrees[6] , 2,(int) Degrees[6] , 2); drawModalRectWithCustomSizedTexture(x + 52, y + 36, 0, 0, (int) Degrees[7] , 2,(int) Degrees[7] , 2); drawModalRectWithCustomSizedTexture(x + 52, y + 63, 0, 0, (int) Degrees[8] , 2,(int) Degrees[8] , 2); drawModalRectWithCustomSizedTexture(x + 52, y + 90, 0, 0, (int) Degrees[9] , 2,(int) Degrees[9] , 2); drawModalRectWithCustomSizedTexture(x + 52, y + 117, 0, 0, (int) Degrees[10] , 2,(int) Degrees[10] , 2); drawModalRectWithCustomSizedTexture(x + 52, y + 144, 0, 0, (int) Degrees[11] , 2,(int) Degrees[11] , 2); drawModalRectWithCustomSizedTexture(x + 52, y + 171, 0, 0, (int) Degrees[12] , 2,(int) Degrees[12] , 2); drawModalRectWithCustomSizedTexture(x + 52, y + 198, 0, 0, (int) Degrees[13] , 2,(int) Degrees[13] , 2); drawModalRectWithCustomSizedTexture(x + 95, y + 36, 0, 0, (int) Degrees[14] , 2,(int) Degrees[14] , 2); drawModalRectWithCustomSizedTexture(x + 95, y + 63, 0, 0, (int) Degrees[15] , 2,(int) Degrees[15] , 2); drawModalRectWithCustomSizedTexture(x + 95, y + 90, 0, 0, (int) Degrees[16] , 2,(int) Degrees[16] , 2); drawModalRectWithCustomSizedTexture(x + 95, y + 117, 0, 0, (int) Degrees[17] , 2,(int) Degrees[17] , 2); drawModalRectWithCustomSizedTexture(x + 95, y + 144, 0, 0, (int) Degrees[18] , 2,(int) Degrees[18] , 2); drawModalRectWithCustomSizedTexture(x + 95, y + 171, 0, 0, (int) Degrees[19] , 2,(int) Degrees[19] , 2); drawModalRectWithCustomSizedTexture(x + 95, y + 198, 0, 0, (int) Degrees[20] , 2,(int) Degrees[20] , 2); drawModalRectWithCustomSizedTexture(x + 138, y + 36, 0, 0, (int) Degrees[21] , 2,(int) Degrees[21] , 2); drawModalRectWithCustomSizedTexture(x + 138, y + 63, 0, 0, (int) Degrees[22] , 2,(int) Degrees[22] , 2); drawModalRectWithCustomSizedTexture(x + 138, y + 90, 0, 0, (int) Degrees[23] , 2,(int) Degrees[23] , 2); drawModalRectWithCustomSizedTexture(x + 138, y + 117, 0, 0, (int) Degrees[24] , 2,(int) Degrees[24] , 2); drawModalRectWithCustomSizedTexture(x + 138, y + 144, 0, 0, (int) Degrees[25] , 2,(int) Degrees[25] , 2); drawModalRectWithCustomSizedTexture(x + 138, y + 171, 0, 0, (int) Degrees[26] , 2,(int) Degrees[26] , 2); drawModalRectWithCustomSizedTexture(x + 138, y + 198, 0, 0, (int) Degrees[27] , 2,(int) Degrees[27] , 2); drawModalRectWithCustomSizedTexture(x + 181, y + 36, 0, 0, (int) Degrees[28] , 2,(int) Degrees[28] , 2); drawModalRectWithCustomSizedTexture(x + 181, y + 63, 0, 0, (int) Degrees[29] , 2,(int) Degrees[29] , 2); drawModalRectWithCustomSizedTexture(x + 181, y + 90, 0, 0, (int) Degrees[30] , 2,(int) Degrees[30] , 2); drawModalRectWithCustomSizedTexture(x + 181, y + 117, 0, 0, (int) Degrees[31] , 2,(int) Degrees[31] , 2); drawModalRectWithCustomSizedTexture(x + 181, y + 144, 0, 0, (int) Degrees[32] , 2,(int) Degrees[32] , 2); drawModalRectWithCustomSizedTexture(x + 181, y + 171, 0, 0, (int) Degrees[33] , 2,(int) Degrees[33] , 2); drawModalRectWithCustomSizedTexture(x + 181, y + 198, 0, 0, (int) Degrees[34] , 2,(int) Degrees[34] , 2); ResourceLocation location4 = new ResourceLocation("mark13695", "textures/gui/skillLock.png"); this.mc.getTextureManager().bindTexture(location4); if (XpLock1 == 0){ drawModalRectWithCustomSizedTexture(x + 181, y + 17, 0, 0, 16, 16, 16, 16); } else{} if (XpLock2 == 0){ drawModalRectWithCustomSizedTexture(x + 181, y + 44, 0, 0, 16, 16, 16, 16); } else{} if (XpLock3 == 0){ drawModalRectWithCustomSizedTexture(x + 181, y + 71, 0, 0, 16, 16, 16, 16); } else{} if (XpLock4 == 0){ drawModalRectWithCustomSizedTexture(x + 181, y + 98, 0, 0, 16, 16, 16, 16); } else{} if (XpLock5 == 0){ drawModalRectWithCustomSizedTexture(x + 181, y + 125, 0, 0, 16, 16, 16, 16); } else{} if (XpLock6 == 0){ drawModalRectWithCustomSizedTexture(x + 181, y + 152, 0, 0, 16, 16, 16, 16); } else{} if (XpLock7 == 0){ drawModalRectWithCustomSizedTexture(x + 181, y + 179, 0, 0, 16, 16, 16, 16); } else{} /** draws the levels */ drawString (fontRendererObj , "" + Level[0] , x + 28, y + 21, 0x0000ff00); drawString (fontRendererObj , "" + Level[1] , x + 28, y + 48, 0x0000ff00); drawString (fontRendererObj , "" + Level[2] , x + 28, y + 75, 0x0000ff00); drawString (fontRendererObj , "" + Level[3] , x + 28, y + 102, 0x0000ff00); drawString (fontRendererObj , "" + Level[4] , x + 28, y + 129, 0x0000ff00); drawString (fontRendererObj , "" + Level[5] , x + 28, y + 156, 0x0000ff00); drawString (fontRendererObj , "" + Level[6] , x + 28, y + 183, 0x0000ff00); drawString (fontRendererObj , "" + Level[7] , x + 71, y + 21, 0x0000ff00); drawString (fontRendererObj , "" + Level[8] , x + 71, y + 48, 0x0000ff00); drawString (fontRendererObj , "" + Level[9] , x + 71, y + 75, 0x0000ff00); drawString (fontRendererObj , "" + Level[10] , x + 71, y + 102, 0x0000ff00); drawString (fontRendererObj , "" + Level[11] , x + 71, y + 129, 0x0000ff00); drawString (fontRendererObj , "" + Level[12] , x + 71, y + 156, 0x0000ff00); drawString (fontRendererObj , "" + Level[13] , x + 71, y + 183, 0x0000ff00); drawString (fontRendererObj , "" + Level[14] , x + 114, y + 21, 0x0000ff00); drawString (fontRendererObj , "" + Level[15] , x + 114, y + 48, 0x0000ff00); drawString (fontRendererObj , "" + Level[16] , x + 114, y + 75, 0x0000ff00); drawString (fontRendererObj , "" + Level[17] , x + 114, y + 102, 0x0000ff00); drawString (fontRendererObj , "" + Level[18] , x + 114, y + 129, 0x0000ff00); drawString (fontRendererObj , "" + Level[19] , x + 114, y + 156, 0x0000ff00); drawString (fontRendererObj , "" + Level[20] , x + 114, y + 183, 0x0000ff00); drawString (fontRendererObj , "" + Level[21] , x + 157, y + 21, 0x0000ff00); drawString (fontRendererObj , "" + Level[22] , x + 157, y + 48, 0x0000ff00); drawString (fontRendererObj , "" + Level[23] , x + 157, y + 75, 0x0000ff00); drawString (fontRendererObj , "" + Level[24] , x + 157, y + 102, 0x0000ff00); drawString (fontRendererObj , "" + Level[25] , x + 157, y + 129, 0x0000ff00); drawString (fontRendererObj , "" + Level[26] , x + 157, y + 156, 0x0000ff00); drawString (fontRendererObj , "" + Level[27] , x + 157, y + 183, 0x0000ff00); if (XpLock1 == 0){drawString (fontRendererObj , "" + Level[28] , x + 200, y + 21, 0x33333333);} else{ drawString (fontRendererObj , "" + Level[28] , x + 200, y + 21, 0x0000ff00);} if (XpLock2 == 0){drawString (fontRendererObj , "" + Level[29] , x + 200, y + 48, 0x33333333);} else{ drawString (fontRendererObj , "" + Level[29] , x + 200, y + 48, 0x0000ff00);} if (XpLock3 == 0){drawString (fontRendererObj , "" + Level[30] , x + 200, y + 75, 0x33333333);} else{ drawString (fontRendererObj , "" + Level[30] , x + 200, y + 75, 0x0000ff00);} if (XpLock4 == 0){drawString (fontRendererObj , "" + Level[31] , x + 200, y + 102, 0x33333333);} else{ drawString (fontRendererObj , "" + Level[31] , x + 200, y + 102, 0x0000ff00);} if (XpLock5 == 0){drawString (fontRendererObj , "" + Level[32] , x + 200, y + 129, 0x33333333);} else{ drawString (fontRendererObj , "" + Level[32] , x + 200, y + 129, 0x0000ff00);} if (XpLock6 == 0){drawString (fontRendererObj , "" + Level[33] , x + 200, y + 156, 0x33333333);} else{ drawString (fontRendererObj , "" + Level[33] , x + 200, y + 156, 0x0000ff00);} if (XpLock7 == 0){drawString (fontRendererObj , "" + Level[34] , x + 200, y + 183, 0x33333333);} else{ drawString (fontRendererObj , "" + Level[34] , x + 200, y + 183, 0x0000ff00);} if(mouseX >= x + 9 && mouseX <= x + 47 && mouseY >= y + 17 && mouseY <= y + 33){ List listHp = new ArrayList(); listHp.add(Skill[0] +": " + Level[0]); listHp.add("XP: " + XP[0]); if(Level[0] == 99 && MainLock == 1 ) {} else if(Level[0] == 200 && MainLock == 2) {} else if(Level[0] == 255){} else{ listHp.add("Next Level: " + NextLevel[0]); listHp.add("XP Needed: " + XpNeed[0]); } this.drawHoveringText(listHp, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 9 && mouseX <= x + 47 && mouseY >= y + 44 && mouseY <= y + 60) { List listMl = new ArrayList(); listMl.add(Skill[1] +": " + Level[1]); listMl.add("XP: " + XP[1]); if(Level[1] == 99 && MainLock == 1 ) {} else if(Level[1] == 200 && MainLock == 2) {} else if(Level[1] == 255){} else{ listMl.add("Next Level: " + NextLevel[1]); listMl.add("XP Needed: " + XpNeed[1]); } this.drawHoveringText(listMl, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 9 && mouseX <= x + 47 && mouseY >= y + 71 && mouseY <= y + 87) { List listRn = new ArrayList(); listRn.add(Skill[2] +": " + Level[2]); listRn.add("XP: " + XP[2]); if(Level[2] == 99 && MainLock == 1 ) {} else if(Level[2] == 200 && MainLock == 2) {} else if(Level[2] == 255){} else{ listRn.add("Next Level: " + NextLevel[2]); listRn.add("XP Needed: " + XpNeed[2]); } this.drawHoveringText(listRn, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 9 && mouseX <= x + 47 && mouseY >= y + 98 && mouseY <= y + 114) { List listMg = new ArrayList(); listMg.add(Skill[3] +": " + Level[3]); listMg.add("XP: " + XP[3]); if(Level[3] == 99 && MainLock == 1 ) {} else if(Level[3] == 200 && MainLock == 2) {} else if(Level[3] == 255){} else{ listMg.add("Next Level: " + NextLevel[3]); listMg.add("XP Needed: " + XpNeed[3]); } this.drawHoveringText(listMg, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 9 && mouseX <= x + 47 && mouseY >= y + 125 && mouseY <= y + 141) { List listDf = new ArrayList(); listDf.add(Skill[4] +": " + Level[4]); listDf.add("XP: " + XP[4]); if(Level[4] == 99 && MainLock == 1 ) {} else if(Level[4] == 200 && MainLock == 2) {} else if(Level[4] == 255){} else{ listDf.add("Next Level: " + NextLevel[4]); listDf.add("XP Needed: " + XpNeed[4]); } this.drawHoveringText(listDf, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 9 && mouseX <= x + 47 && mouseY >= y + 152 && mouseY <= y + 168) { List listEn = new ArrayList(); listEn.add(Skill[5] +": " + Level[5]); listEn.add("XP: " + XP[5]); if(Level[5] == 99 && MainLock == 1 ) {} else if(Level[5] == 200 && MainLock == 2) {} else if(Level[5] == 255){} else{ listEn.add("Next Level: " + NextLevel[5]); listEn.add("XP Needed: " + XpNeed[5]); } this.drawHoveringText(listEn, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 9 && mouseX <= x + 47 && mouseY >= y + 179 && mouseY <= y + 195) { List listSl = new ArrayList(); listSl.add(Skill[6] +": " + Level[6]); listSl.add("XP: " + XP[6]); if(Level[6] == 99 && MainLock == 1 ) {} else if(Level[6] == 200 && MainLock == 2) {} else if(Level[6] == 255){} else{ listSl.add("Next Level: " + NextLevel[6]); listSl.add("XP Needed: " + XpNeed[6]); } this.drawHoveringText(listSl, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 52 && mouseX <= x + 90 && mouseY >= y + 17 && mouseY <= y + 33) { List listFr = new ArrayList(); listFr.add(Skill[7] +": " + Level[7]); listFr.add("XP: " + XP[7]); if(Level[7] == 99 && MainLock == 1 ) {} else if(Level[7] == 200 && MainLock == 2) {} else if(Level[7] == 255){} else{ listFr.add("Next Level: " + NextLevel[7]); listFr.add("XP Needed: " + XpNeed[7]); } this.drawHoveringText(listFr, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 52 && mouseX <= x + 90 && mouseY >= y + 44 && mouseY <= y + 60) { List listMn = new ArrayList(); listMn.add(Skill[8] +": " + Level[8]); listMn.add("XP: " + XP[8]); if(Level[8] == 99 && MainLock == 1 ) {} else if(Level[8] == 200 && MainLock == 2) {} else if(Level[8] == 255){} else{ listMn.add("Next Level: " + NextLevel[8]); listMn.add("XP Needed: " + XpNeed[8]); } this.drawHoveringText(listMn, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 52 && mouseX <= x + 90 && mouseY >= y + 71 && mouseY <= y + 87) { List listHu = new ArrayList(); listHu.add(Skill[9]+ ": " + Level[9]); listHu.add("XP: " + XP[9]); if(Level[9] == 99 && MainLock == 1 ) {} else if(Level[9] == 200 && MainLock == 2) {} else if(Level[9] == 255){} else{ listHu.add("Next Level: " + NextLevel[9]); listHu.add("XP Needed: " + XpNeed[9]); } this.drawHoveringText(listHu, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 52 && mouseX <= x + 90 && mouseY >= y + 98 && mouseY <= y + 114) { List listEx = new ArrayList(); listEx.add(Skill[10]+ ": " + Level[10]); listEx.add("XP: " + XP[10]); if(Level[10] == 99 && MainLock == 1 ) {} else if(Level[10] == 200 && MainLock == 2) {} else if(Level[10] == 255){} else{ listEx.add("Next Level: " + NextLevel[10]); listEx.add("XP Needed: " + XpNeed[10]); } this.drawHoveringText(listEx, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 52 && mouseX <= x + 90 && mouseY >= y + 125 && mouseY <= y + 141) { List listWc = new ArrayList(); listWc.add(Skill[11]+ ": " + Level[11]); listWc.add("XP: " + XP[11]); if(Level[11] == 99 && MainLock == 1 ) {} else if(Level[11] == 200 && MainLock == 2) {} else if(Level[11] == 255){} else{ listWc.add("Next Level: " + NextLevel[11]); listWc.add("XP Needed: " + XpNeed[11]); } this.drawHoveringText(listWc, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 52 && mouseX <= x + 90 && mouseY >= y + 152 && mouseY <= y + 168) { List listFs = new ArrayList(); listFs.add(Skill[12]+ ": " + Level[12]); listFs.add("XP: " + XP[12]); if(Level[12] == 99 && MainLock == 1 ) {} else if(Level[12] == 200 && MainLock == 2) {} else if(Level[12] == 255){} else{ listFs.add("Next Level: " + NextLevel[12]); listFs.add("XP Needed: " + XpNeed[12]); } this.drawHoveringText(listFs, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 52 && mouseX <= x + 90 && mouseY >= y + 179 && mouseY <= y + 195) { List listAr = new ArrayList(); listAr.add(Skill[13]+ ": " + Level[13]); listAr.add("XP: " + XP[13]); if(Level[13] == 99 && MainLock == 1 ) {} else if(Level[13] == 200 && MainLock == 2) {} else if(Level[13] == 255){} else{ listAr.add("Next Level: " + NextLevel[13]); listAr.add("XP Needed: " + XpNeed[13]); } this.drawHoveringText(listAr, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 95 && mouseX <= x + 133 && mouseY >= y + 17 && mouseY <= y + 33) { List listTa = new ArrayList(); listTa.add(Skill[14] +": " + Level[14]); listTa.add("XP: " + XP[14]); if(Level[14] == 99 && MainLock == 1 ) {} else if(Level[14] == 200 && MainLock == 2) {} else if(Level[14] == 255){} else{ listTa.add("Next Level: " + NextLevel[14]); listTa.add("XP Needed: " + XpNeed[14]); } this.drawHoveringText(listTa, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 95 && mouseX <= x + 133 && mouseY >= y + 44 && mouseY <= y + 60) { List listSm = new ArrayList(); listSm.add(Skill[15] +": " + Level[15]); listSm.add("XP: " + XP[15]); if(Level[15] == 99 && MainLock == 1 ) {} else if(Level[15] == 200 && MainLock == 2) {} else if(Level[15] == 255){} else{ listSm.add("Next Level: " + NextLevel[15]); listSm.add("XP Needed: " + XpNeed[15]); } this.drawHoveringText(listSm, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 95 && mouseX <= x + 133 && mouseY >= y + 71 && mouseY <= y + 87) { List listTn = new ArrayList(); listTn.add(Skill[16]+ ": " + Level[16]); listTn.add("XP: " + XP[16]); if(Level[16] == 99 && MainLock == 1 ) {} else if(Level[16] == 200 && MainLock == 2) {} else if(Level[16] == 255){} else{ listTn.add("Next Level: " + NextLevel[16]); listTn.add("XP Needed: " + XpNeed[16]); } this.drawHoveringText(listTn, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 95 && mouseX <= x + 133 && mouseY >= y + 98 && mouseY <= y + 114) { List listJe = new ArrayList(); listJe.add(Skill[17]+ ": " + Level[17]); listJe.add("XP: " + XP[17]); if(Level[17] == 99 && MainLock == 1 ) {} else if(Level[17] == 200 && MainLock == 2) {} else if(Level[17] == 255){} else{ listJe.add("Next Level: " + NextLevel[17]); listJe.add("XP Needed: " + XpNeed[17]); } this.drawHoveringText(listJe, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 95 && mouseX <= x + 133 && mouseY >= y + 125 && mouseY <= y + 141) { List listWc = new ArrayList(); listWc.add(Skill[18]+ ": " + Level[18]); listWc.add("XP: " + XP[18]); if(Level[18] == 99 && MainLock == 1 ) {} else if(Level[18] == 200 && MainLock == 2) {} else if(Level[18] == 255){} else{ listWc.add("Next Level: " + NextLevel[18]); listWc.add("XP Needed: " + XpNeed[18]); } this.drawHoveringText(listWc, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 95 && mouseX <= x + 133 && mouseY >= y + 152 && mouseY <= y + 168) { List listCo = new ArrayList(); listCo.add(Skill[19]+ ": " + Level[19]); listCo.add("XP: " + XP[19]); if(Level[19] == 99 && MainLock == 1 ) {} else if(Level[19] == 200 && MainLock == 2) {} else if(Level[19] == 255){} else{ listCo.add("Next Level: " + NextLevel[19]); listCo.add("XP Needed: " + XpNeed[19]); } this.drawHoveringText(listCo, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 95 && mouseX <= x + 133 && mouseY >= y + 179 && mouseY <= y + 195) { List listHr = new ArrayList(); listHr.add(Skill[20]+ ": " + Level[20]); listHr.add("XP: " + XP[20]); if(Level[20] == 99 && MainLock == 1 ) {} else if(Level[20] == 200 && MainLock == 2) {} else if(Level[20] == 255){} else{ listHr.add("Next Level: " + NextLevel[20]); listHr.add("XP Needed: " + XpNeed[20]); } this.drawHoveringText(listHr, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 138 && mouseX <= x + 176 && mouseY >= y + 17 && mouseY <= y + 33) { List listHn = new ArrayList(); listHn.add(Skill[21] +": " + Level[21]); listHn.add("XP: " + XP[21]); if(Level[21] == 99 && MainLock == 1 ) {} else if(Level[21] == 200 && MainLock == 2) {} else if(Level[21] == 255){} else{ listHn.add("Next Level: " + NextLevel[21]); listHn.add("XP Needed: " + XpNeed[21]); } this.drawHoveringText(listHn, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 138 && mouseX <= x + 176 && mouseY >= y + 44 && mouseY <= y + 60) { List listSm = new ArrayList(); listSm.add(Skill[22] +": " + Level[22]); listSm.add("XP: " + XP[22]); if(Level[22] == 99 && MainLock == 1 ) {} else if(Level[22] == 200 && MainLock == 2) {} else if(Level[22] == 255){} else{ listSm.add("Next Level: " + NextLevel[22]); listSm.add("XP Needed: " + XpNeed[22]); } this.drawHoveringText(listSm, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 138 && mouseX <= x + 176 && mouseY >= y + 71 && mouseY <= y + 87) { List listAg = new ArrayList(); listAg.add(Skill[23]+ ": " + Level[23]); listAg.add("XP: " + XP[23]); if(Level[23] == 99 && MainLock == 1 ) {} else if(Level[23] == 200 && MainLock == 2) {} else if(Level[23] == 255){} else{ listAg.add("Next Level: " + NextLevel[23]); listAg.add("XP Needed: " + XpNeed[23]); } this.drawHoveringText(listAg, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 138 && mouseX <= x + 176 && mouseY >= y + 98 && mouseY <= y + 114) { List listDu = new ArrayList(); listDu.add(Skill[24]+ ": " + Level[24]); listDu.add("XP: " + XP[24]); if(Level[24] == 99 && MainLock == 1 ) {} else if(Level[24] == 200 && MainLock == 2) {} else if(Level[24] == 255){} else{ listDu.add("Next Level: " + NextLevel[24]); listDu.add("XP Needed: " + XpNeed[24]); } this.drawHoveringText(listDu, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 138 && mouseX <= x + 176 && mouseY >= y + 125 && mouseY <= y + 141) { List listFm = new ArrayList(); listFm.add(Skill[25]+ ": " + Level[25]); listFm.add("XP: " + XP[25]); if(Level[25] == 99 && MainLock == 1 ) {} else if(Level[25] == 200 && MainLock == 2) {} else if(Level[25] == 255){} else{ listFm.add("Next Level: " + NextLevel[25]); listFm.add("XP Needed: " + XpNeed[25]); } this.drawHoveringText(listFm, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 138 && mouseX <= x + 176 && mouseY >= y + 152 && mouseY <= y + 168) { List listLs = new ArrayList(); listLs.add(Skill[26]+ ": " + Level[26]); listLs.add("XP: " + XP[26]); if(Level[26] == 99 && MainLock == 1 ) {} else if(Level[26] == 200 && MainLock == 2) {} else if(Level[26] == 255){} else{ listLs.add("Next Level: " + NextLevel[26]); listLs.add("XP Needed: " + XpNeed[26]); } this.drawHoveringText(listLs, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 138 && mouseX <= x + 176 && mouseY >= y + 179 && mouseY <= y + 195) { List listKn = new ArrayList(); listKn.add(Skill[27]+ ": " + Level[27]); listKn.add("XP: " + XP[27]); if(Level[27] == 99 && MainLock == 1 ) {} else if(Level[27] == 200 && MainLock == 2) {} else if(Level[27] == 255){} else{ listKn.add("Next Level: " + NextLevel[27]); listKn.add("XP Needed: " + XpNeed[27]); } this.drawHoveringText(listKn, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 181 && mouseX <= x + 219 && mouseY >= y + 17 && mouseY <= y + 33) { List listTc = new ArrayList(); if (XpLock1 == 0){ listTc.add("Locked");} else{ listTc.add(Skill[28] +": " + Level[28]); listTc.add("XP: " + XP[28]); if(Level[21] == 99 && MainLock == 1 ) {} else if(Level[28] == 200 && MainLock == 2) {} else if(Level[28] == 255){} else{ listTc.add("Next Level: " + NextLevel[28]); listTc.add("XP Needed: " + XpNeed[28]); }} this.drawHoveringText(listTc, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 181 && mouseX <= x + 219 && mouseY >= y + 44 && mouseY <= y + 60) { List listPe = new ArrayList(); if (XpLock2 == 0){ listPe.add("Locked");} else{ listPe.add(Skill[29] +": " + Level[29]); listPe.add("XP: " + XP[22]); if(Level[29] == 99 && MainLock == 1 ) {} else if(Level[29] == 200 && MainLock == 2) {} else if(Level[29] == 255){} else{ listPe.add("Next Level: " + NextLevel[29]); listPe.add("XP Needed: " + XpNeed[29]); }} this.drawHoveringText(listPe, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 181 && mouseX <= x + 219 && mouseY >= y + 71 && mouseY <= y + 87) { List listCh = new ArrayList(); if (XpLock3 == 0){ listCh.add("Locked");} else{ listCh.add(Skill[30]+ ": " + Level[30]); listCh.add("XP: " + XP[30]); if(Level[30] == 99 && MainLock == 1 ) {} else if(Level[30] == 200 && MainLock == 2) {} else if(Level[30] == 255){} else{ listCh.add("Next Level: " + NextLevel[30]); listCh.add("XP Needed: " + XpNeed[30]); }} this.drawHoveringText(listCh, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 181 && mouseX <= x + 219 && mouseY >= y + 98 && mouseY <= y + 114) { List listSp = new ArrayList(); if (XpLock4 == 0){ listSp.add("Locked");} else{ listSp.add(Skill[31]+ ": " + Level[31]); listSp.add("XP: " + XP[24]); if(Level[31] == 99 && MainLock == 1 ) {} else if(Level[31] == 200 && MainLock == 2) {} else if(Level[31] == 255){} else{ listSp.add("Next Level: " + NextLevel[31]); listSp.add("XP Needed: " + XpNeed[31]); }} this.drawHoveringText(listSp, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 181 && mouseX <= x + 219 && mouseY >= y + 125 && mouseY <= y + 141) { List listMu = new ArrayList(); if (XpLock5 == 0){ listMu.add("Locked");} else{ listMu.add(Skill[32]+ ": " + Level[32]); listMu.add("XP: " + XP[32]); if(Level[32] == 99 && MainLock == 1 ) {} else if(Level[32] == 200 && MainLock == 2) {} else if(Level[32] == 255){} else{ listMu.add("Next Level: " + NextLevel[32]); listMu.add("XP Needed: " + XpNeed[32]); }} this.drawHoveringText(listMu, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 181 && mouseX <= x + 219 && mouseY >= y + 152 && mouseY <= y + 168) { List listFi = new ArrayList(); if (XpLock6 == 0){ listFi.add("Locked");} else{ listFi.add(Skill[33]+ ": " + Level[33]); listFi.add("XP: " + XP[33]); if(Level[33] == 99 && MainLock == 1 ) {} else if(Level[33] == 200 && MainLock == 2) {} else if(Level[33] == 255){} else{ listFi.add("Next Level: " + NextLevel[33]); listFi.add("XP Needed: " + XpNeed[33]); }} this.drawHoveringText(listFi, x + 236, y + 16, fontRendererObj); } if(mouseX >= x + 181 && mouseX <= x + 219 && mouseY >= y + 179 && mouseY <= y + 195) { List listFu = new ArrayList(); if (XpLock7 == 0){ listFu.add("Locked");} else{ listFu.add(Skill[34]+ ": " + Level[34]); listFu.add("XP: " + XP[34]); if(Level[34] == 99 && MainLock == 1 ) {} else if(Level[34] == 200 && MainLock == 2) {} else if(Level[34] == 255){} else{ listFu.add("Next Level: " + NextLevel[34]); listFu.add("XP Needed: " + XpNeed[34]); }} this.drawHoveringText(listFu, x + 236, y + 16, fontRendererObj); } } @Override public boolean doesGuiPauseGame() { return false; } @Override public void initGui() { } @Override public void updateScreen() { super.updateScreen(); } }
Thanks for the help,
Mark136
-
follow this
http://wuppy29.blogspot.nl/2012/12/modding-146-updating-to-146.html
good luck and merry christmas
Mark136
-
please help me
also, i want to add something like a suprise box
i want to let it drop some items randomly, i only can let it drop 1 thing
i want that it will drop items with degrees
like 45% dirt, 25% cobble stone 20% sand 5% iron ingot 2% coal 2% gold and 1% diamond
i think i must put something in this method
public int idDropped(int par1, Random par2Random, int par3)
{
//but what???????
}
please can someone help me
thanks and merry christmas
Mark136
-
i dont want to create a seed item, i want a SAPLING please reed before answer
i want that my SAPLING can ONLY be planted on my block
can someone please help me with this
please give no useless reactions
EDIT: i got it almost, i only need to get public EnumPlantType getPlantType(World world, int x, int y, int z)
return false, but i don't know how
-
changed but it don't work, i can still place my flower on grass/dirt/tilledfield
-
it won't work, and it's not a seed but a flower/sapling
and i DON'T want to just place it everywhere, i only want my flower/sapling on my FarmField block
here is some codes from my modcorefile and my block flower.class , i dont write everything because i don't want to hurt your eyes.
look at it if you want
core mod file
****************
public static Block FarmField;
public static BlockMFlower Mark136Fl;
****************
public void load(FMLInitializationEvent ****)
****************
FarmField = new BlockMark136(191, 1, Material.rock).setStepSound(Block.soundStoneFootstep) .setBlockName("Mark's Farm").setHardness(4.5F).setResistance(5F).setLightValue(0.25F);
Mark136Fl = (BlockMFlower) new BlockMFlower(204, 14).setStepSound(Block.soundGrassFootstep).setBlockName("Mark's flower") .setHardness(0.15F).setResistance(5F).setLightValue(0.375F);
****************
LanguageRegistry.addName(FarmField, "Mark's FarmField");
LanguageRegistry.addName(Mark136Fl, "Mark's Flower");
*************************************************
i think the BlockMark136.class is'nt interesting because it acts like a normal block
but the BlockMFlower.class maybe
package com.Mark136.ModMark136;
import java.util.Random;
import net.minecraft.src.Block;
import net.minecraft.src.BlockFlower;
import net.minecraft.src.CreativeTabs;
import net.minecraft.src.Material;
import net.minecraft.src.World;
public class BlockMFlower extends BlockFlower
{
protected BlockMFlower(int par1, int par2)
{
super(par1, par2, Material.vine);
float var3 = 0.4F;
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var3 * 2.0F, 0.5F + var3);
this.setCreativeTab(CreativeTabs.tabDecorations);
}
@Override
protected boolean canThisPlantGrowOnThisBlockID(int i)
{
return i == Mod_Mark136.FarmField.blockID;
}
public int getBlockTextureFromSideAndMetadata(int par1, int par2)
{
return this.blockIndexInTexture;
}
public String getTextureFile()
{
return "/Mark136/Mark136Blocks.png" ;
}
public int quantityDropped(int par1)
{
return (1);
}
public int idDropped(int par1, Random par2Random, int par3)
{
return Mod_Mark136.Mark1361.shiftedIndex;
}
-
hello, i'm working on a flower that only can placed on (FarmField) a few of weeks but i'm stuck atm
@Override
protected boolean canThisPlantGrowOnThisBlockID(int i)
{
return i == Mod_Mark136.FarmField.blockID;
}
this should override the methode in the block flower class, but it does'nt, it combines
so you can also place my flower on grass/dirt/tilledfield, but i only want that it can be placed on the farmfield Block
can somebody help me?
(if you need more info, say what you need and i'll post it)
Mark136
[1.8.9][SOLVED] Problems with PacketHandler and getXP
in Modder Support
Posted
oh, was editing this class so much i forgotten to remove it
and: