
CrushedPixel
Members-
Posts
31 -
Joined
-
Last visited
Converted
-
Gender
Undisclosed
-
Personal Text
I am new!
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
CrushedPixel's Achievements

Tree Puncher (2/8)
0
Reputation
-
I'm not sure if this is the right place to ask, but I need to do an urgent hotfix for Minecraftforge and therefore I want to clone the Github repo and build my own version. I've tried this before, however with no success. Can someone give me a brief introduction? I have good knowledge of git and I use Eclipse. @diesieben: If you read this, would be cool for you to come online in Skype if you wanna help me. Thanks in advance, CrushedPixel
-
Lol I guess I'll run a simple command then that doesn't affect the world (e.g. /testfor @a[r=1]) and check if it denies permission.
-
You should have a look whether you are cancelling any Regeneration Effects somewhere. Also, you might be applying the Health Boost effect for a very short time and / or over and over again. The key is to apply the effect only once when it's necessary and remove it later.
-
Is there a simple way to test whether mc.thePlayer is OP on a multiplayer server? Client side, I don't want to mod the Server.
-
[SOLVED] Client Side Mod: Teleport Player on Server
CrushedPixel replied to CrushedPixel's topic in Modder Support
I guess this can be locked as "Solved" then - many thanks! -
[SOLVED] Client Side Mod: Teleport Player on Server
CrushedPixel replied to CrushedPixel's topic in Modder Support
Hmm, I think I'll just require OP for the mod then. Would be overdone, especially because when flying over a larger distance chunks might not get rendered etc. -
[SOLVED] Client Side Mod: Teleport Player on Server
CrushedPixel replied to CrushedPixel's topic in Modder Support
I've already done that in the Replay Mod. How can I add this custom entity to the world the client receives? -
[SOLVED] Client Side Mod: Teleport Player on Server
CrushedPixel replied to CrushedPixel's topic in Modder Support
I'm pretty sure it doesn't, as F5 showed the player. How to actually move the camera? Any tutorial links? -
[SOLVED] Client Side Mod: Teleport Player on Server
CrushedPixel replied to CrushedPixel's topic in Modder Support
I've recreated the Camera Studio Mod for 1.8 using Forge, and the only part that's missing is the initial Teleport and/or Goto. How might this work in Camera Studio for MC 1.7, since it does NOT require OP there? -
Is there a way to teleport a player over a rather large distance (> 100 blocks) while he is on a server? calling mc.thePlayer.moveToBlockPosAndAngles and similar methods just result in the server teleporting the player back. I need it for a waypoints system I'm creating - Server side mods are not an option. If necessary, OP can be a requirement.
-
Trust me, I would've done that if I could have, however the Minecraft class calls the NetHandlerLoginClient, which then instantiates the NetHandlerPlayClient. In order to do the desired manipulation, I would have had to extend the NetHandlerPlayClient, but there was no point where I could replace the default PlayClient with my custom one. So I had to use the dirty Bytecode Manipulation way.
-
I've switched my code to use ASM now - it works perfectly fine! For everyone reading this thread, who is interested in how I solved my problem: private byte[] patchClass(String name, byte[] bytes, boolean obfuscated) throws NotFoundException, CannotCompileException, IOException, ClassNotFoundException, IllegalArgumentException, IllegalAccessException { String methodName = obfuscated ? "func_147274_a" : "handleTabComplete"; String nhpc = "net/minecraft/client/network/NetHandlerPlayClient"; String gc = obfuscated ? "field_147299_f" : "gameController"; String mc = "net/minecraft/client/Minecraft"; String cs = obfuscated ? "field_71462_r" : "currentScreen"; String gs = "net/minecraft/client/gui/GuiScreen"; String desc = "(Lnet/minecraft/network/play/server/S3APacketTabComplete;)V"; ClassNode classNode = new ClassNode(); ClassReader classReader = new ClassReader(bytes); classReader.accept(classNode, 0); int i = 0; Iterator<MethodNode> methods = classNode.methods.iterator(); while(methods.hasNext()) { MethodNode m = methods.next(); int fdiv_index = -1; if(m.name.equals(methodName) && m.desc.equals(desc)) { int ix = 0; for(ix = 0; ix<m.instructions.size(); ix++) { AbstractInsnNode node = m.instructions.get(ix); if(node instanceof InsnNode) { if(((InsnNode)node).getOpcode() == Opcodes.RETURN) { break; } } } LabelNode ln = new LabelNode(new Label()); InsnList toInject = new InsnList(); //mv.visitVarInsn(ALOAD, 0); toInject.add(new VarInsnNode(Opcodes.ALOAD, 0)); //mv.visitFieldInsn(GETFIELD, "net/minecraft/client/network/NetHandlerPlayClient", "gameController", "Lnet/minecraft/client/Minecraft;"); toInject.add(new FieldInsnNode(Opcodes.GETFIELD, nhpc, gc, "L"+mc+";")); //mv.visitFieldInsn(GETFIELD, "net/minecraft/client/Minecraft", "currentScreen", "Lnet/minecraft/client/gui/GuiScreen;"); toInject.add(new FieldInsnNode(Opcodes.GETFIELD, mc, cs, "L"+gs+";")); //mv.visitTypeInsn(INSTANCEOF, "net/minecraft/client/gui/GuiChat"); toInject.add(new TypeInsnNode(Opcodes.INSTANCEOF, "eu/crushedpixel/commandsyntax/gui/GuiSyntaxCommandBlock")); Label skipLabel = new Label(); //mv.visitJumpInsn(IFEQ, l3); toInject.add(new JumpInsnNode(Opcodes.IFEQ, ln)); //mv.visitVarInsn(ALOAD, 0); toInject.add(new VarInsnNode(Opcodes.ALOAD, 0)); //mv.visitFieldInsn(GETFIELD, "net/minecraft/client/network/NetHandlerPlayClient", "gameController", "Lnet/minecraft/client/Minecraft;"); toInject.add(new FieldInsnNode(Opcodes.GETFIELD, nhpc, gc, "L"+mc+";")); //mv.visitFieldInsn(GETFIELD, "net/minecraft/client/Minecraft", "currentScreen", "Lnet/minecraft/client/gui/GuiScreen;"); toInject.add(new FieldInsnNode(Opcodes.GETFIELD, mc, cs, "L"+gs+";")); //mv.visitTypeInsn(CHECKCAST, "net/minecraft/client/gui/GuiChat"); toInject.add(new TypeInsnNode(Opcodes.CHECKCAST, "eu/crushedpixel/commandsyntax/gui/GuiSyntaxCommandBlock")); //mv.visitVarInsn(ASTORE, 3); toInject.add(new VarInsnNode(Opcodes.ASTORE, 3)); //mv.visitVarInsn(ALOAD, 3); toInject.add(new VarInsnNode(Opcodes.ALOAD, 3)); //mv.visitVarInsn(ALOAD, 2); toInject.add(new VarInsnNode(Opcodes.ALOAD, 2)); //mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/client/gui/GuiChat", "onAutocompleteResponse", "([Ljava/lang/String;)V", false); toInject.add(new MethodInsnNode(Opcodes.INVOKEVIRTUAL, "eu/crushedpixel/commandsyntax/gui/GuiSyntaxCommandBlock", "onAutocompleteResponse", "([Ljava/lang/String;)V", false)); toInject.add(ln); m.instructions.insert(m.instructions.get(ix-1), toInject); } i++; } ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS); classNode.accept(writer); return writer.toByteArray(); } I am very fond of the great support I received here in the Forums - excellent work <3 This thread is Solved.