Jump to content

DrOlive

Members
  • Posts

    44
  • Joined

  • Last visited

Converted

  • Gender
    Male
  • Location
    Canada
  • Personal Text
    I don't like olives, I just like the name

DrOlive's Achievements

Tree Puncher

Tree Puncher (2/8)

1

Reputation

  1. I still don't understand how to make it so when a player receives the packet, it changes their mode to hidden
  2. The list of which players are hiding/ not hiding that the server keeps
  3. So where would I make the list, and where should I make the packet that gets sent to all the players? In one of my proxies?
  4. Well I decided I'm making a block that when you right click it, it changes the mode to hidden Block class: package drolive.nonametags; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.relauncher.Side; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.world.World; public class NoNameTagsHideBlock extends Block { public static int cancelPre = 0; public NoNameTagsHideBlock(int id){ super(id, Material.iron); setUnlocalizedName("hideBlock"); func_111022_d("nonametags.hideBlock"); setCreativeTab(CreativeTabs.tabBlock); } @Override public boolean onBlockActivated(World world, int bx, int by, int bz, EntityPlayer playerEntity, int unknown, float px, float py, float pz){ if(cancelPre == 0){ cancelPre = cancelPre + 1; } else if(cancelPre == 1){ cancelPre = cancelPre + 1; } else if(cancelPre == 2){ cancelPre = cancelPre - 2; } ByteArrayOutputStream bos = new ByteArrayOutputStream(4); DataOutputStream outputStream = new DataOutputStream(bos); try { outputStream.writeInt(cancelPre); } catch (Exception ex) { ex.printStackTrace(); } Packet250CustomPayload packet = new Packet250CustomPayload(); packet.channel = "NoNameTagsCancel"; packet.data = bos.toByteArray(); packet.length = bos.size(); Side side = FMLCommonHandler.instance().getEffectiveSide(); if(side == Side.SERVER){ EntityPlayerMP player = (EntityPlayerMP) playerEntity; PacketDispatcher.sendPacketToAllPlayers(packet); } else if(side == Side.CLIENT){ EntityClientPlayerMP player = (EntityClientPlayerMP) playerEntity; } else{ } return false; } } Main class(I didn't bother to take the key binding registries out): package drolive.nonametags; import java.util.EnumSet; import org.lwjgl.input.Keyboard; import net.minecraft.block.Block; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RendererLivingEntity; import net.minecraft.client.settings.KeyBinding; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.client.registry.KeyBindingRegistry; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.TickType; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.common.registry.TickRegistry; import cpw.mods.fml.relauncher.Side; @Mod(modid="NoNameTags", name="NoNameTags", version="0.0.1") @NetworkMod(clientSideRequired=true, serverSideRequired=false, channels = {"NoNameTagsCancel"}, packetHandler = PacketHandler.class) public class NoNameTags { public static final Block hideBlock = new NoNameTagsHideBlock(3500); @Instance("NoNameTags") public static NoNameTags instance; @SidedProxy(clientSide="drolive.nonametags.client.ClientProxy", serverSide="drolive.nonametags.CommonProxy") public static CommonProxy proxy; @EventHandler public void preInit(FMLPreInitializationEvent event) { GameRegistry.registerBlock(hideBlock, "hideBlock"); LanguageRegistry.addName(hideBlock, "Hide Block"); } @EventHandler public void load(FMLInitializationEvent event) { proxy.registerRenderers(); KeyBinding[] key = {new KeyBinding("Hide", Keyboard.KEY_H)}; boolean[] repeat = {false}; KeyBindingRegistry.registerKeyBinding(new NoNameTagsKeyBind(key, repeat)); MinecraftForge.EVENT_BUS.register(new NoNameTagsKeyBindHide()); } @EventHandler public void postInit(FMLPostInitializationEvent event) { } } Packet Handler class: package drolive.nonametags; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet250CustomPayload; import cpw.mods.fml.common.network.IPacketHandler; import cpw.mods.fml.common.network.Player; public class PacketHandler implements IPacketHandler { @Override public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player){ if(packet.channel.equals("NoNameTagsCancel")){ handleCancelPre(packet); } } private void handleCancelPre(Packet250CustomPayload packet){ DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(packet.data)); int cancelPre; try{ cancelPre = inputStream.readInt(); } catch(IOException e){ e.printStackTrace(); return; } System.out.println("Cancel Pre = " + cancelPre); } } And here's the code for cancelling the event: @ForgeSubscribe(receiveCanceled=true) public void Pre(Specials.Pre event){ if(cancelPre == 1 || cancelPre == 2){ event.setCanceled(true); event.isCanceled(); }
  5. Ok so I'm new to packets (Never really needed them before) and I made it so it reads the int when I send it, but how do I make it cancel the event? I tried putting my cancel event in my packet handler, but it gave me the error, "void is an invalid type for the variable Pre". I'm making it so if the int cancelPre == 0, then it uncancels, and if it equals 1, it cancels.
  6. So do you think I could do it like the packet would send an int to everyone and depending on the int(0 or 1) it would change their "mode"?
  7. Ok thanks I'll do this later today
  8. Is there a way I could make it so if one player uses it, it cancels the event for all the players, including himself?
  9. I'll just have to work with it I guess
  10. I got the Pre event to cancel, but it just removes everyone else's name from the person who used it's view
  11. Does somebody know the event that renders your own nametag?
  12. Well I got it to cancel the event by using isCanceled(), but it turns out that cancelling Specials.Pre only makes everyone else's names disappear, not the player's who used the command... How would I make it so only the player's disappears from everyone else's view?
  13. I did just what you said but when I press the key in game, nothing happens, it wont even print a text. I also tried using it like this, but still no luck: if(NoNameTagsKeyBind.cancelPre == true && event.entity instanceof EntityPlayer) Is this where I'm supposed to put the code? package drolive.nonametags; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.src.ModLoader; import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.client.event.RenderLivingEvent.Specials; import net.minecraftforge.event.Event; import net.minecraftforge.event.ForgeSubscribe; public class NoNameTagsKeyBindHide { @ForgeSubscribe(receiveCanceled=true) public void Pre(Specials.Pre event){ if(event.entity instanceof EntityPlayer){ event.setCanceled(true); }
  14. Nevermind it doesn't stop repeating without makeItStop... Also I tried it in a LAN world and it said "You are now hiding!" but it didn't remove the name tag, know why? Main Class: package drolive.nonametags; import java.util.EnumSet; import org.lwjgl.input.Keyboard; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RendererLivingEntity; import net.minecraft.client.settings.KeyBinding; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.client.registry.KeyBindingRegistry; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.TickType; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.TickRegistry; import cpw.mods.fml.relauncher.Side; @Mod(modid="NoNameTags", name="NoNameTags", version="0.0.1") @NetworkMod(clientSideRequired=false, serverSideRequired=false) public class NoNameTags { @Instance("NoNameTags") public static NoNameTags instance; @SidedProxy(clientSide="drolive.nonametags.client.ClientProxy", serverSide="drolive.nonametags.CommonProxy") public static CommonProxy proxy; @EventHandler public void preInit(FMLPreInitializationEvent event) { } @EventHandler public void load(FMLInitializationEvent event) { proxy.registerRenderers(); KeyBinding[] key = {new KeyBinding("Hide", Keyboard.KEY_H)}; boolean[] repeat = {false}; KeyBindingRegistry.registerKeyBinding(new NoNameTagsKeyBind(key, repeat)); MinecraftForge.EVENT_BUS.register(new NoNameTagsKeyBindHide()); } @EventHandler public void postInit(FMLPostInitializationEvent event) { } } Key Bind class: package drolive.nonametags; import java.util.EnumSet; import net.minecraft.client.settings.KeyBinding; import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.client.event.RenderLivingEvent.Specials; import cpw.mods.fml.client.registry.KeyBindingRegistry.KeyHandler; import cpw.mods.fml.common.TickType; class NoNameTagsKeyBind extends KeyHandler { private EnumSet tickTypes = EnumSet.of(TickType.CLIENT); public static boolean cancelPre; public NoNameTagsKeyBind(KeyBinding[] keyBindings, boolean[] repeatings) { super(keyBindings, repeatings); } @Override public String getLabel() { return "Hide"; } @Override public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat) { if(tickEnd){ cancelPre = !cancelPre; } } @Override public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd) { } @Override public EnumSet<TickType> ticks() { return tickTypes; } } KeyBindHide class: package drolive.nonametags; import net.minecraft.src.ModLoader; import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.client.event.RenderLivingEvent.Specials; import net.minecraftforge.event.Event; import net.minecraftforge.event.ForgeSubscribe; public class NoNameTagsKeyBindHide { public int makeItStop = 0; @ForgeSubscribe(receiveCanceled=true) public void Pre(Specials.Pre event){ if (NoNameTagsKeyBind.cancelPre == true && makeItStop == 1){ event.setCanceled(true); ModLoader.getMinecraftInstance().thePlayer.addChatMessage("You are now hiding!"); makeItStop = makeItStop - 1; } else if (NoNameTagsKeyBind.cancelPre == false && makeItStop == 0) { event.setCanceled(false); ModLoader.getMinecraftInstance().thePlayer.addChatMessage("You are not hiding!"); makeItStop = makeItStop + 1; } } }
×
×
  • Create New...

Important Information

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