Jump to content

xandayn

Members
  • Posts

    19
  • Joined

  • Last visited

Converted

  • Gender
    Male
  • Location
    United States
  • Personal Text
    I am new!

xandayn's Achievements

Tree Puncher

Tree Puncher (2/8)

1

Reputation

  1. Looks like right here https://github.com/SgtPunishment/Soul-Shards-Reborn/blob/master/src/main/java/moze_intel/ssr/utils/Utils.java#L74 is where the shards tier levels up, it also looks like it can return the same tier as it was before, so you'd need to do a check to see if the previous tier is higher than the current route.
  2. Thank you very much, I didn't realize it was something so simple, like I said I don't have a lot of experience with netty but I have done a bit in the past and i used get and set int with no problems so i assumed that was the correct way to do things.
  3. Hey everyone, I have a question about an issue I'm having with netty, I've used it before and this is the first time I've ever encountered a bug quite like this. io.netty.handler.codec.DecoderException: java.lang.NullPointerException: Undefined message for discriminator 21 in channel xan_prChannel at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:?] at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?] at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?] at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?] at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?] at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?] at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) [NetworkSystem.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:349) [DedicatedServer.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?] Caused by: java.lang.NullPointerException: Undefined message for discriminator 21 in channel xan_prChannel at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:73) ~[FMLIndexedMessageToMessageCodec.class:?] at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?] at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?] ... 13 more [00:27:35] [server thread/ERROR] [FML]: SimpleChannelHandlerWrapper exception io.netty.handler.codec.DecoderException: java.lang.NullPointerException: Undefined message for discriminator 21 in channel xan_prChannel at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:?] at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?] at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?] at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?] at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?] at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?] at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) [NetworkSystem.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:349) [DedicatedServer.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?] Caused by: java.lang.NullPointerException: Undefined message for discriminator 21 in channel xan_prChannel at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:73) ~[FMLIndexedMessageToMessageCodec.class:?] at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?] at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?] ... 13 more [00:27:35] [server thread/ERROR] [FML]: SimpleChannelHandlerWrapper exception io.netty.handler.codec.DecoderException: java.lang.NullPointerException: Undefined message for discriminator 21 in channel xan_prChannel at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:?] at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?] at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?] at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?] at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?] at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?] at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) [NetworkSystem.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:349) [DedicatedServer.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?] Caused by: java.lang.NullPointerException: Undefined message for discriminator 21 in channel xan_prChannel at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:73) ~[FMLIndexedMessageToMessageCodec.class:?] at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?] at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?] ... 13 more [00:27:35] [server thread/ERROR] [FML]: There was a critical exception handling a packet on channel xan_prChannel io.netty.handler.codec.DecoderException: java.lang.NullPointerException: Undefined message for discriminator 21 in channel xan_prChannel at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:?] at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?] at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:?] at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?] at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?] at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?] at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) [NetworkSystem.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:349) [DedicatedServer.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?] Caused by: java.lang.NullPointerException: Undefined message for discriminator 21 in channel xan_prChannel at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:73) ~[FMLIndexedMessageToMessageCodec.class:?] at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?] at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?] ... 13 more Clearly it has an issue with discriminator 21, which makes sense, because I have no discriminator 21 registered, here's my packet registration (and yes it is being called) public static void initialize() { NETWORK = NetworkRegistry.INSTANCE.newSimpleChannel(References.MOD_CHANNEL_ID); NETWORK.registerMessage(ServerReceiveNewRecipe.Handler.class, ServerReceiveNewRecipe.class, 0, Side.SERVER); NETWORK.registerMessage(ServerRemoveOldRecipe.Handler.class, ServerRemoveOldRecipe.class, 1, Side.SERVER); NETWORK.registerMessage(ClientReceiveAllRecipesFromServer.Handler.class, ClientReceiveAllRecipesFromServer.class, 2, Side.CLIENT); NETWORK.registerMessage(ClientReceiveNewRecipeFromServer.Handler.class, ClientReceiveNewRecipeFromServer.class, 3, Side.CLIENT); NETWORK.registerMessage(ClientReceiveRecipeRemovalFromServer.Handler.class, ClientReceiveRecipeRemovalFromServer.class, 4, Side.CLIENT); } All of the packets seem to work fine minus the ServerRemoveOldRecipe packet //Imports removed to save space public class ServerRemoveOldRecipe implements IMessage { private int handlerID = 0; private int recipeID = 0; public ServerRemoveOldRecipe() {} public ServerRemoveOldRecipe(int handlerID, int recipeID){ this.handlerID = handlerID; this.recipeID = recipeID; } @Override public void fromBytes(ByteBuf byteBuf) { handlerID = byteBuf.getInt(0); recipeID = byteBuf.getInt(1); } @Override public void toBytes(ByteBuf byteBuf) { byteBuf.setInt(0, handlerID); byteBuf.setInt(1, recipeID); } public static class Handler implements IMessageHandler<ServerRemoveOldRecipe, IMessage> { @Override public IMessage onMessage(ServerRemoveOldRecipe message, MessageContext ctx) { if(ctx.side.isServer()) { RecipeRegistry.INSTANCE.removeRecipe(message.handlerID, message.recipeID); NetworkHandler.NETWORK.sendToAll(new ClientReceiveRecipeRemovalFromServer(message.handlerID, message.recipeID)); } return null; } } } Here is the ClientReceiveRecipeRemovalFromServer class, although we never get this far as the crash happens before it, but for the sake of completeness. //imports and package info removed to save space public class ClientReceiveRecipeRemovalFromServer implements IMessage { private int handlerID = 0, position = 0; public ClientReceiveRecipeRemovalFromServer() {} public ClientReceiveRecipeRemovalFromServer(int handlerID, int position) { this.handlerID = handlerID; this.position = position; } @Override public void fromBytes(ByteBuf byteBuf) { handlerID = byteBuf.getInt(0); position = byteBuf.getInt(1); } @Override public void toBytes(ByteBuf byteBuf) { byteBuf.setInt(0, handlerID); byteBuf.setInt(1, position); } public static class Handler implements IMessageHandler<ClientReceiveRecipeRemovalFromServer, IMessage> { @Override public IMessage onMessage(ClientReceiveRecipeRemovalFromServer message, MessageContext ctx) { if(ctx.side.isClient()) { RecipeRegistry.INSTANCE.removeRecipe(message.handlerID, message.position); } return null; } } } And finally here's the code that actually sends the packet to the server //Some context for this code: It's within a GUI screen under actionPerformed(GuiButton) so this code is called from a client telling the server to remove a recipe, the server then tells all the clients to remove the same recipe. if(FMLCommonHandler.instance().getMinecraftServerInstance() == null) { //getMinecraftServerInstance() is null only if you're a client connected to a remote server I've found, which is when I want to send the packet, if theres a better way to detect that please let me know. NetworkHandler.NETWORK.sendToServer(new ServerRemoveOldRecipe(RecipeRegistry.INSTANCE.getAliasIntID(handler.getID()), selected)); } else { handler.deleteRecipe(selected); } I really have absolutely no idea why this is happening and I've spent probably 5 hours trying to figure it out now. Some help would be greatly appreciated, and if I've made a dumb mistake that I'm just blind to then I apologize but I really can't see one.
  4. This is an issue with the newest version of java (1.8.0_20) I've confirmed that it's the update as Forge works with Java 8 update 11.
  5. This seems to be an issue with Java 1.8.0_20, I suggest uninstalling it and downgrading to 1.8.0_11, you can find older versions of java here: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
  6. One idea I had was to hash the players names (I dont remember if 1.7.2 and/or 1.7.10 use hash values for players or if thats 1.8+, if it's in 1.7.2 then use minecrafts hash value) and somehow translate that into a set of coordinates or like a grid location and rather than having separate instances entirely give each player a portion of a dimension. I don't know if this is exactly what OP needed but in my case this would work as I'd only need a small area for my dimensions anyways, but it has to be a separate dimension as it fits my mod thematically. EDIT: When I say hash I don't really mean like the String.hash function (that isn't the exact name but close enough, I can't remember off the top of my head) but rather like an MD5 sum or something along those lines because it makes life a lot easier if all the "hashes" are the same length which isn't always the case with the hash function. The downside with using something like an MD5 is that is returns I believe a 128 bit number. Which is two longs worth of integer data, AKA very large. So it'd need to be truncated a lot and it becomes a mess. So that wouldn't really work either, hence me not getting any further with the idea EDIT 2: I just reread the post and realized the OP already had this idea, I didn't see the post before though haha, oh well.
  7. I'm pretty sure Vswe (author of Steve's Carts) has a tutorial explaining what you're looking for, he did a sort of modding course a while back and I remember watching it. https://www.youtube.com/user/VsweGoesMinecraft/videos they're really useful tutorials as well.
  8. I've gone ahead and written the recipe class you need, you're free to use it if you want. It will only allow the exact recipe to work and not the mirrored version. To add the recipe using this class you just need to call CraftingManager.getInstance().getRecipeList().add(mirrorlessShapedRecipeInstance); import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.world.World; public class MirrorlessShapedRecipe implements IRecipe { private final ItemStack[] recipe; private final ItemStack output; public MirrorlessShapedRecipe(ItemStack output, ItemStack[] recipe){ this.recipe = recipe; this.output = output; } @Override public boolean matches(InventoryCrafting p_77569_1_, World p_77569_2_) { for(int y = 0; y < 3; ++y){ for(int x = 0; x < 3; ++x){ ItemStack itemInSlot = p_77569_1_.getStackInRowAndColumn(x, y); ItemStack recipeSlot = recipe[y * 3 + x]; if(itemInSlot != null || recipeSlot != null) { if ((itemInSlot == null && recipeSlot != null) || (itemInSlot != null && recipeSlot == null)) { return false; } if (itemInSlot.getItem() != recipeSlot.getItem()) { return false; } if(recipeSlot.getItemDamage() != Short.MAX_VALUE && recipeSlot.getItemDamage() != itemInSlot.getItemDamage()){ return false; } } } } return true; } @Override public ItemStack getCraftingResult(InventoryCrafting p_77572_1_) { return output; } @Override public int getRecipeSize() { return 9; } @Override public ItemStack getRecipeOutput() { return output; } }
  9. You'll need to make a class similar to vanilla's ShapedRecipes, I can't post the code here as it's not legal to post vanilla minecraft code but I believe function at line 61 is where the mirror checking happens, all you need to do is loop through the itemstacks in the inventoryCrafting provided by the matches function and make sure that all the slots are equal to the itemstacks in the recipe and if they are the recipe matches, if not then the recipe is different.
  10. It looks like you need to offset your models render positions by +1 in y and either +1 or -1 in x or z (I can't tell from the image) You can do this in your GL11.glTranslated or GL11.glTranslatef call.
  11. It isn't necessary to make your own IRecipe class, just instantiate a ShapedRecipes with the parameters (3, 3, new ItemStack[]{new ItemStack(Blocks.cobblestone), new ItemStack(Blocks.planks), new ItemStack(Blocks.planks), null, , new ItemStack(Items.stick), null, , new ItemStack(Items.stick), null}, new ItemStack(ModTools.SWWPickaxe, 1)) The array to crafting table looks like this: 012 345 678 Where the index represents the slot in a crafting table. Then to register your recipes do CraftingManager.getInstance().getRecipeList().add(theShapedRecipesInstance); I wrote my own mod to add custom recipes to minecraft and this is how i register the recipes. https://github.com/xandayn/Personalized-Recipes/blob/master/java/common/xandayn/personalrecipes/recipe/handlers/ShapedRecipeHandler.java#L38 ShapedRecipes is in the net.minecraft.item.crafting package. Sorry I actually was incorrect, you do need to make a custom IRecipe, I misunderstood the question when I reread it I realized what you were asking.
  12. I'd like to mention in advance that I don't have a solution to your issue, I'm actually looking for this solution as well and have been unable to find it, I thought it'd be wasteful to create a new thread. Did you ever find a solution or are you still searching?
  13. I spent several hours trying to figure it out to no avail so I've kinda given up on it. As for Novas comment, I dont really know what you mean by that, on windows you just run the batch file and if youre on linux/mac you open terminal and you run the command ./gradlew and it will install everything for you. That's a reply I received about the same issue, so if you're wanting to develop you just need to use 964. I don't really like the new setup as I cant access vanilla source or forge source, but oh well. It was really nice to see how things worked.
  14. I also have the same exact issue. The way I had to get around it is by using the new ForgeGradle thing following this http://www.minecraftforge.net/forum/index.php/topic,14048.0.html guide. The download for Gradle is the latest build.
  15. This isn't the right area to be posting this, but the issue is that you have conflicting item IDs, id 500 is being used by two mods, LotsOMobsMobHeads and The furniture mod, to fix this go into your configs, %AppData%/Roaming/.minecraft/config and there should be a file for those mods, change one of the mod's block ids from 500 to something else.
×
×
  • Create New...

Important Information

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