-
Posts
785 -
Joined
-
Last visited
Posts posted by ItsAMysteriousYT
-
-
There is an easier way made by forge. Its called ObfuscationReflectionHelper. In there use the methods getPrivateValue/setPrivatevalue etc
-
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; } }
-
Also befor doing model.render((Entity)null...) do GL11.glDisable(GL11.GL_CULL_FACE).
-
Okay... but how do i send the value to the gui? I think having a static variable in my GuiOverlay isn't the right way is it?
Im feeling so stupid cuz i ask so much about packets, sorry
-
The super secret setting will be gone again soon. They only exist in 1.7.10/1.8
-
well youll never be able to render something independant of the world, cuz you have to set its world coordinates, but independant of blockpos - why? What you wanna do?
-
Then how? How can i send the calue to the gui? Plz reply quick, only got five minutes left
Guis working on internet and i wanna get the enrgy system work.
-
Can i just make my Gui implement IMessageHandler?
-
But my tileentity has no container and adding one just for this would be absolutly unnecessary. Tell me how i can use packets for that please
-
Well i looked at the blockFurnace class and in the tileentityFurnace class. I searched for crafter and looked through all methods, but nothing...
-
I can't find that anywhere - im in 1.8 btw.
-
Ooookay.... Ill have a look at that
-
Okay this might sound weird, but how can i get the voltage from the packet? I would send it to ClientEvery tick, but i only know how to execute something with a packet, but i tried setting a value with it and it stayed zero but on the server it wasn't.
-
Okay, for the disconnection of tiles, i need to send an update AFTER the 'to' variable is set to null. How should i do this?
-
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)
-
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; } }
-
@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
-
I think you need to mark the block for an update. search for the correct method in ur IDE, might solve the problem.
Yea i do this already. Its MarkBlockForUpdate(Blockpos). But still it doesn't do it.
-
Okay. But how can i solve that lighting problem?
-
The block just doesn't rotate. Doesn't matter from witch side i place it.
Also that getLightValue method does not update immediatly when the block is getting powered.
-
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; } }
-
Okay - so with the packet should i set a variable or how can i get the data into the Gui?
-
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()); }
-
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?
[UNSOLVED]Strange things happen with my energysystem[1.8]
in Modder Support
Posted
Okay - i might sound really stupid now but how? Do i have to send the tileentity in the packet? As coordinates or something?