Jump to content

ItsAMysteriousYT

Members
  • Posts

    785
  • Joined

  • Last visited

Posts posted by ItsAMysteriousYT

  1. This is my packet - am i doing it the correct way?

    package itsamysterious.mods.reallifemod.core.packets;
    
    import java.nio.ByteBuffer;
    
    import io.netty.buffer.ByteBuf;
    import net.minecraftforge.fml.common.network.ByteBufUtils;
    import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
    
    public class ElectricDataPackage implements IMessage{
    float voltage;
    
    public ElectricDataPackage() {
    }
    
    public ElectricDataPackage(float voltage){
    	this.voltage=voltage;
    }
    
    @Override
    public void fromBytes(ByteBuf buf) {
    	voltage = buf.readFloat();
    }
    
    @Override
    public void toBytes(ByteBuf buf) {
    	buf.writeFloat(voltage);
    }
    
    
    }
    
    

     

    Now i don't know what excactly to do in the packethandler. I tried passing the value through a static variable in my custom overlayclass, but it didn't work.

     

    Thats what i tried:

    package itsamysterious.mods.reallifemod.core.packets;
    
    import java.awt.Color;
    
    import itsamysterious.mods.reallifemod.core.gui.lifesystem.RLMOverlay;
    import net.minecraft.client.Minecraft;
    import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
    import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
    
    public class VoltagePackethandler implements IMessageHandler<ElectricDataPackage, ElectricDataPackage>{
    
    @Override
    public ElectricDataPackage onMessage(ElectricDataPackage message, MessageContext ctx) {
    	RLMOverlay.voltage=message.voltage;
    	return message;
    }
    
    }
    
    

  2. I need to attach one entity to some other mobs, (by attaching i mean when i press button it will spawn on that entity and it will change its location and rotation based on entity it is attached to ) I done everything but i can't make entity to stay attached to another one. I know it can be done with updating entity but i don't know how to deliver coordinates of entity it is attached to. I hope i was clear with what i said, it sounds little complicated.

     

    Uhm...use use player.mountEntity(this)

  3. I call it in the superclass like this:

     

    public void passOverVoltage(){
    	if(getTo()!=null){
    		getTo().onPowered(this.getVoltageValueAfterPowering());
    		System.out.println("Tried passing voltage to"+getTo().getClass().getSimpleName()+" Voltage is:"+getVoltage());
    	}
    }
    

     

    and this method is called within the update() method:

    if(getTo()!=null){
        		this.passOverVoltage();
        		this.voltage=0;
    	    	if(storedPos!=null&&worldObj.getTileEntity(storedPos)==null||!(worldObj.getTileEntity(storedPos)instanceof TileEntity_Electric)){
    	    		to=null;
    	    		storedPos=null;
    	    	}
        	}
    

  4.     @Override
        public void update(){
        	super.update();
        	if(worldObj.isRemote)return;
        	if(this.getVoltage()>0){
        		isActive=true;
        	}else
        		isActive=false;
        	
        	if(isActive){
        		worldObj.getBlockState(getPos()).getBlock().setLightLevel(10.0f);
        	}else
        	{
        		worldObj.getBlockState(getPos()).getBlock().setLightLevel(0);
        	}
        	
        }
        
    @Override
    public void onPowered(float f) {
    	super.onPowered(f);
    	this.isActive=true;
    	worldObj.markBlockForUpdate(getPos());
    }
    

     

    I tried marking for update in the update method and the game crashed :/

  5. You can just use the variables in your TileEntity, it exists on the client, too.

     

    okayyyy...But what excactly am i sending in that packet then? Do i send the whole tileentity? If yes, how?

    Also this method still does not work

        public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) {
        	super.onBlockPlacedBy(worldIn, pos, state, placer, stack);
        	 TileEntity tileentity = worldIn.getTileEntity(pos);
             if (tileentity instanceof TileEntity_Electric){
            	 TileEntity_Electrictile = (TileEntity_Electric)tileentity;
            	 tile.rotation = MathHelper.floor_double((double)(placer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
    
             }
        }
    

  6. Also - for example my lantern does not turn on immediatly when getting powered, but often i have to reopen the world so it is lit up. Thats how i set the lightlevel of the block:

     

      @Override
        public void update(){
        	super.update();
        	if(worldObj.isRemote)return;
        	if(this.getVoltage()>0){
        		isActive=true;
        	}else
        		isActive=false;
        	
        	if(isActive){
        		worldObj.getBlockState(getPos()).getBlock().setLightLevel(100.0f);
        	}else
        	{
        		worldObj.getBlockState(getPos()).getBlock().setLightLevel(0);
        	}
        	
        }
        
    @Override
    public void onPowered(float f) {
    	super.onPowered(f);
    	this.isActive=true;
    	worldObj.getBlockState(getPos()).getBlock().setLightLevel(10.0f);
    	worldObj.markBlockForUpdate(getPos());
    }
    

  7. Okay - now there is some other strange stuff. I can connect the blocks bugfree now, but for example i connect my Pinwheel to the transformer. In the pinwheel i set the energy to 440 every tick. My TileENtity_Electric automaticly passes over the enrgy to the connected block like this:

     

    public void passOverVoltage(){
    	if(getTo()!=null){
    		getTo().onPowered(this.getVoltageValueAfterPowering());
    		System.out.println("Tried passing voltage to"+getTo().getClass().getSimpleName()+" Voltage is:"+getVoltage());
    	}
    }
    

     

    BUT - when i hover over the transformer in minecraft, on the guioverlay the voltage still is 0.0, while in code with System.out.println it is 440. How can i fix that?

×
×
  • Create New...

Important Information

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