Jump to content

DrOlive

Members
  • Posts

    44
  • Joined

  • Last visited

Posts posted by DrOlive

  1. 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();
            }

  2. 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.

  3. 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?

  4. 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);
            }

  5. 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;
            }	
       }
    }

  6. *main class*
    boolean[] repeat = {true};
    

    Set to false to stop the repeating keybind. ;)

     

    @Override
    public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat) {
    	if(tickEnd)//so it doesn't fire twice
    	cancelPre = (!cancelPre);
    
    }
    

    I tried all this and it still repeats if I dont use makeItStop. And it still wont work in game. :(

  7. Yeah I registered the event and everything, but when I load a world it says "You are not hiding!" and it never says anything else no matter how many times I press h.

    I feel like my NoNameTagsKeyBindHide class isn't checking if cancelPre changes, but how would I do that?

     

    My 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 = {true};
                KeyBindingRegistry.registerKeyBinding(new NoNameTagsKeyBind(key, repeat));
                MinecraftForge.EVENT_BUS.register(new NoNameTagsKeyBindHide());
        }
        
        @EventHandler
        public void postInit(FMLPostInitializationEvent event) {
        }
    }

     

    My keybind 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 = false;
    
    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) {
    
    	cancelPre = (!cancelPre);
    
    }
    
    @Override
    public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd) {
    
    }
    
    @Override
    public EnumSet<TickType> ticks() {
    	return null;
    }
    
    }

    My keybind hide class:

    package drolive.nonametags;
    
    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);
    		System.out.println("You are now hiding!");
    		makeItStop = makeItStop - 1;
            }
        else if (NoNameTagsKeyBind.cancelPre == false && makeItStop == 0) {
        	event.setCanceled(false);
            System.out.println("You are not hiding!");
            makeItStop = makeItStop + 1;
            }	
       }
    }

    Note: I added the int makeItStop because before when I would load a world, it would spam the console with never ending "You are not hiding!"

  8. Oh and also here is my main class:

    package drolive.nonametags;
    
    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 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.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.network.NetworkMod;
    
    @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));
        }
        
        @EventHandler
        public void postInit(FMLPostInitializationEvent event) {
        }
    }

×
×
  • Create New...

Important Information

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