Jump to content

MCrafterzz

Members
  • Posts

    285
  • Joined

  • Last visited

Everything posted by MCrafterzz

  1. Opening the project in eclipse after gradlew eclipse works but I get this error: Project 'More Layers' is missing required library: 'C:\Users\marcu\.gradle\daemon\4.9\unresolved dependency - net.minecraftforge forge 1.13.2-25.0.13_mapped_snapshot_20180921-1.13' Looking at it, it points to C:\Users\marcus\.gradle\daemon\4.9 which is a empty folder. What should I do? Running gradlew eclipse again doesn't change anything
  2. I think I finally got it working I changed the fromBytes to: keyboardDown = buf.readBoolean()
  3. I've updated my Eventhandler: https://pastebin.com/0mYMp5Gz And my KeybindMessageHandler: https://pastebin.com/SNGBFhqs But it still doesn't work EDIT: KeybindMessage: https://pastebin.com/pD2CdBMN EDIT 2: Printing out Main.logger.warn(keybindDown) in the onMessage methoud always prints out false even tho the value sent is true.
  4. Currently I'm detecting a key press on the client side and then storing that value as a player capability. But on the capability page on the docs it sais that the data has to be sent over to the server side with packets so that it somehow can be accessed on the SERVER side in the itemblock methoud. This is where I'm stuck. If you need any more code I can post it. Here is the eventhandler class: https://pastebin.com/MAhwwzgM
  5. What I want is to move the client capability value to the server side of the itemblock methoud. How can this be achived? I can't do the action in message handler as it should be done when placing my block.
  6. I have fixed that. Now I only need to send the data over to the server which isn't currently working. KeybindMessage: https://pastebin.com/neQQZggT KeybindMessage: https://pastebin.com/aTCipDuP (Here I'm lost) What should I add to get it working. Currently it only works on the client side.
  7. The problem with that is that it doesn't provide the player or any other information that can be used to get that. I need the players as I otherwise can't add the capability to it
  8. I think I got it working but where should I call the capability to update it? Is there a key press event?: KeybindInterface keybindInterface = event.getEntityPlayer().getCapability(KeybindProvider.capability, event.getFace()); keybindInterface.setKeybindDown(Minecraft.getMinecraft().gameSettings.keyBindSprint.isKeyDown());
  9. So when the mod has been build and is run it crashes. Crash log: https://pastebin.com/vCXW8MR2 This is the only mod installed (I do not use oftifine which seems to be a common reason to this crash) Here is my ColourManager class: @EventBusSubscriber(modid = "ml") public class ColourManager { @SubscribeEvent public static void registerBlockColourHandlers(final ColorHandlerEvent.Block event) { final BlockColors blockColors = event.getBlockColors(); final IBlockColor grassColourHandler = (state, blockAccess, pos, tintIndex) -> { if (blockAccess != null && pos != null) { return BiomeColorHelper.getGrassColorAtPos(blockAccess, pos); } return ColorizerGrass.getGrassColor(0.5D, 1.0D); }; blockColors.registerBlockColorHandler(grassColourHandler, BlockInit.blocks.get(2)); } @SubscribeEvent public static void registerItemColourHandlers(final ColorHandlerEvent.Item event) { final BlockColors blockColors = event.getBlockColors(); final ItemColors itemColors = event.getItemColors(); final IItemColor itemBlockColourHandler = (stack, tintIndex) -> { @SuppressWarnings("deprecation") final IBlockState state = ((ItemBlock) stack.getItem()).getBlock().getStateFromMeta(stack.getMetadata()); return blockColors.colorMultiplier(state, null, null, tintIndex); }; itemColors.registerItemColorHandler(itemBlockColourHandler, BlockInit.blocks.get(2)); } } I really don't understand why it crashes when it doesn't when run in eclipse.
  10. Changing stuff eventually got it to work so now I just have to get the packages setup. Here is what I have so far: public class KeybindMessage implements IMessage { private boolean keybindDown; public KeybindMessage(boolean keybindDown) { this.keybindDown = keybindDown; } @Override public void fromBytes(ByteBuf buf) { buf.readBoolean(); } @Override public void toBytes(ByteBuf buf) { buf.writeBoolean(keybindDown); } } public class KeybindMessageHandler implements IMessageHandler<KeybindMessage, IMessage> { @Override public IMessage onMessage(KeybindMessage message, MessageContext ctx) { return null; } } What should be in the onMessage methoud? Main class (some stuff has been removed) @Mod(modid = "ml", name = "More Layers", version = "1.1.0", acceptedMinecraftVersions = "1.12,1.12.1,1.12.2") @EventBusSubscriber public class Main { public static final SimpleNetworkWrapper networkInstance = NetworkRegistry.INSTANCE.newSimpleChannel("ml"); @EventHandler public static void preInit(FMLPreInitializationEvent event) { networkInstance.registerMessage(KeybindMessageHandler.class, KeybindMessage.class, 0, Side.SERVER); } } I know that I should call Main.networkInstance.sendToServer but where should I call this and how should I get the result?
  11. It still activates twice even tho I use worldIn.isRemote = false
  12. Ctrl is for sprinting. But does someone know why this problem is happening?
  13. Yes it's activated once for the client and once for the server. In the begining I checked for isRemote so that it only happened for the server but the problem still excisted.
  14. Thread? You mean client/server? (This is my second mod so I'm not an expert)
  15. I guess I'll have to look into that. The block setting methoud is the same as the vanilla itemblock tho so what do you mean with only place it on the server? Also I still don't understand the reasoning for it triggering twice as the canplayeredit methoud should prevent it. Is there any easier way to detect the press of CTRL without using packets?
  16. It works like snow layers so you can build apon the block. Also I added the ability to place a four layers at the same time when clicking + CTRL. It's just so wierd as it is based on ItemBlockSnow but randomly workes differently (triggers two times instead of one). Here's the full code: https://pastebin.com/fys1Mb4G
  17. I do admit the isRemote thing was very dumb. I do return success tho. This is the end of the code (It's not the whole code): if (axisalignedbb != Block.NULL_AABB && worldIn.checkNoEntityCollision(axisalignedbb.offset(blockpos)) && worldIn.setBlockState(blockpos, iblockstate1, 10)) { SoundType soundtype = this.block.getSoundType(iblockstate1, worldIn, blockpos, player); worldIn.playSound(player, blockpos, soundtype.getPlaceSound(), SoundCategory.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F); if (player instanceof EntityPlayerMP) { CriteriaTriggers.PLACED_BLOCK.trigger((EntityPlayerMP) player, blockpos, itemstack); } itemstack.shrink(amount); return EnumActionResult.SUCCESS; } EDIT: printing out "PLACED" with my debugger prints this: [16:27:31] [main/WARN] [ml]: PLACED [16:27:31] [Server thread/WARN] [ml]: PLACED Why aren't those two messages the same?
  18. See the last comments as the original part of the problem has been fixed.
  19. Open the model in some sort of model viewer like blockbench to see if it's way off. The translation or scale could be wrong which makes it display behind the player or so small that it isn't visible. Also have you posted it to github now?
  20. Post the log. I need to see if there is a error.
  21. Thanks everyone for you're help. It's now all working. One last quick question, is there any forge hook/event for grass spreading or is that still hardcoded like it is in the default BlockGrass class?
×
×
  • Create New...

Important Information

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