Posted January 21, 201312 yr Is there a easy way to tell the server to hurt the player? i need to call the hurt method in a client tick... is it possible to tell the server (out of a client side class) to perform one server mehod to hurt the player?
January 21, 201312 yr Author Is there a easy way to tell the server to hurt the player? player.attackEntityFrom() i need to call the hurt method in a client tick... is it possible to tell the server (out of a client side class) to perform one server mehod to hurt the player? No, it is not possible and should never be done. The client is dumb and only tells lies*. Never ever trust the client. Always do everything on the server. Period. *Of course this is not true, but it is the way you should think while developing. Clients can be evil and do stuff you don't expect in your wildest dreams yea i noticed some strange behaviours of the client nevertheless i set some things up there and i have to tell the server to hurt the player... so i thought about someting like this: 1. i'll write a little method "server-side" to hurt the player and call it from "client-side" 2. my PROBLEM: how do i get the player instance on the server without using the evil modloader stuff... maybe i should have been more specific^^
January 21, 201312 yr Author ok then i'll have to rewrite some stuff^^ i have to hurt him in an ingame tick... sort of he is alive and is in that biome hurt him (for example) and have an additional question: how do i get the specific player from the server if i would want to get the player in an biome or under the sun or in water?
January 21, 201312 yr Author ok i think i got something like that already : public class ServerTickHandler implements ITickHandler { @Override public void tickStart(EnumSet<TickType> type, Object... tickData) {} @Override public void tickEnd(EnumSet<TickType> type, Object... tickData) { if(type.equals(EnumSet.of(TickType.PLAYER))) { onTickInGame(); } } public EnumSet ticks() { return EnumSet.of(TickType.PLAYER); } public String getLabel() { return null; } private void onTickInGame() { //put here any code that needs to be done server side, like set WorldGeneration, and let entities spawn on the first server tick. //also put all the code in a if(world != null && !world.isRemote) statement, makes it so that you don't get NPEs from that. } }
January 21, 201312 yr Author how do i trace if it's singleplayer or multiplayer because i still need my client stuff for the singleplayer right? and why can't i hurt the player in singleplayer with the modloader.....player... stuff? btw thanks for your great help!
January 21, 201312 yr Author ah i see sry about so many questins i read a lot about mc modding but wasn't 100% shure about this whole client - server thing i 've already a sided proxy but i just tried a simple write chat massage code in my server tick from above and it worked as server but not in singleplayer, oehm do you know why? and how can i get a server World tick too? i think if i know that i am able to rewrite my code in a few minutes
January 21, 201312 yr Author almost everything works but in singleplayer the serverside stuff won't be executed... i thought it were merged together ssp and smp... right?
January 22, 201312 yr Author currently i'm doin it just with a server-sided proxy: package TempCraft.common; import cpw.mods.fml.common.registry.TickRegistry; import cpw.mods.fml.relauncher.Side; import net.minecraft.block.Block; public class CommonProxyTempCraft { public void registerRenderThings() { TickRegistry.registerTickHandler(new ServerTickHandler(), Side.SERVER); TickRegistry.registerTickHandler(new ServerTickWorldHandler(), Side.SERVER); } }
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.