MCrafterzz Posted April 18, 2018 Posted April 18, 2018 (edited) See the last comments as the original part of the problem has been fixed. Edited April 30, 2018 by MCrafterzz Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 18, 2018 Author Posted April 18, 2018 (edited) 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? Edited April 18, 2018 by MCrafterzz Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 18, 2018 Author Posted April 18, 2018 (edited) 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 Edited April 18, 2018 by MCrafterzz Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 18, 2018 Author Posted April 18, 2018 How should I get the keybinds then? Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 18, 2018 Author Posted April 18, 2018 (edited) 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? Edited April 18, 2018 by MCrafterzz Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 18, 2018 Author Posted April 18, 2018 (edited) Thread? You mean client/server? (This is my second mod so I'm not an expert) Edited April 18, 2018 by MCrafterzz Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 18, 2018 Author Posted April 18, 2018 (edited) 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. Edited April 18, 2018 by MCrafterzz Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
Draco18s Posted April 18, 2018 Posted April 18, 2018 On 4/18/2018 at 3:02 PM, MCrafterzz said: Is there any easier way to detect the press of CTRL without using packets? Expand Isn't CTRL the key used to sneak? Check if the player is sneaking. Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
ZombieEnderman5 Posted April 18, 2018 Posted April 18, 2018 On 4/18/2018 at 6:29 PM, Draco18s said: Isn't CTRL the key used to sneak? Check if the player is sneaking. Expand I thought Left Shift (LSHIFT) did that? CTRL+W is usually used to force sprinting, correct? Quote
Draco18s Posted April 18, 2018 Posted April 18, 2018 You might be right. I haven't actually played in a while. Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
MCrafterzz Posted April 19, 2018 Author Posted April 19, 2018 Ctrl is for sprinting. But does someone know why this problem is happening? Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 19, 2018 Author Posted April 19, 2018 It still activates twice even tho I use worldIn.isRemote = false Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 19, 2018 Author Posted April 19, 2018 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? Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 20, 2018 Author Posted April 20, 2018 Bump Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 25, 2018 Author Posted April 25, 2018 (edited) 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()); Edited April 25, 2018 by MCrafterzz Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 25, 2018 Author Posted April 25, 2018 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 Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
Alexiy Posted April 25, 2018 Posted April 25, 2018 Of course it doesn't, because this event is only fired on client, so you can get the client player "Minecraft.getMinecraft().player" as usual. 1 Quote
Draco18s Posted April 25, 2018 Posted April 25, 2018 Which is fired for EVERY key that's pressed EVERY time its pressed. You should not use it. Use the ClientTickEvent Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
Dragonisser Posted April 26, 2018 Posted April 26, 2018 (edited) I did it like this last time to open my backpack item via a keybind. It shouldnt be that much different from 1.7.10 to 1.12.2 https://github.com/Dragonisser/CobaltMod/blob/master/src/main/java/cobaltmod/handler/event/CobaltKeyHandler.java#L53 https://github.com/Dragonisser/CobaltMod/blob/master/src/main/java/cobaltmod/network/packet/server/CobaltOpenGuiMessage.java Edited April 26, 2018 by Dragonisser Quote
MCrafterzz Posted April 26, 2018 Author Posted April 26, 2018 (edited) 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. Edited April 26, 2018 by MCrafterzz Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 29, 2018 Author Posted April 29, 2018 (edited) 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. Edited April 29, 2018 by MCrafterzz Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 29, 2018 Author Posted April 29, 2018 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 Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
MCrafterzz Posted April 30, 2018 Author Posted April 30, 2018 (edited) 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. Edited April 30, 2018 by MCrafterzz Quote http://i.imgur.com/J4rrGt6.png[/img] [Creator of mcrafterzz mod]
NextInima Posted April 30, 2018 Posted April 30, 2018 (edited) better show the KeybindMessage class of yours. in your capability you can create a setter method and set the value on the server. do not forget to save it in Nbt aswell. Make sure that you register your packet for the SERVER side Quote INSTANCE.registerMessage(Packet.Handler.class, packet.class, ID of your packet, Side.SERVER); Expand onMessage you take the Entityplayer and get the CAPABILITY for that player. Quote player.getCapability().getyourmethodtogetthevalueyouwant(); Expand now you use your setter to set the value you want. the server will save that if you fill serializeNBT and deserializeNBT in your CAPABILITY Quote player.getCapability().setyourmethodtosetthevalueyouwant(); Expand Edited April 30, 2018 by NextInima Quote May RPG MOD KoRIN at minecraftforum http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/2570463-kingdom-of-rin-rpg-stuff-classes-dungeons http://rin-online.de/forum/
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.