Get Lasers kind of working vs. dediservers
This commit is contained in:
parent
dd421f7308
commit
327389a88c
5 changed files with 91 additions and 12 deletions
|
@ -1,18 +1,13 @@
|
||||||
package mekanism.api.lasers;
|
package mekanism.api.lasers;
|
||||||
|
|
||||||
import mekanism.api.Coord4D;
|
import mekanism.api.Coord4D;
|
||||||
import mekanism.client.entity.EntityLaser;
|
|
||||||
import mekanism.common.Mekanism;
|
import mekanism.common.Mekanism;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.particle.EntityNoteFX;
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.MovingObjectPosition;
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
import net.minecraft.util.Vec3;
|
import net.minecraft.util.Vec3;
|
||||||
import net.minecraft.world.IBlockAccess;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
import cpw.mods.fml.client.FMLClientHandler;
|
|
||||||
|
|
||||||
public class LaserManager
|
public class LaserManager
|
||||||
{
|
{
|
||||||
|
@ -47,9 +42,4 @@ public class LaserManager
|
||||||
Mekanism.proxy.renderLaser(world, from, to, direction);
|
Mekanism.proxy.renderLaser(world, from, to, direction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void renderLaser(World world, Coord4D from, Coord4D to, ForgeDirection direction)
|
|
||||||
{
|
|
||||||
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityLaser(world, from, to, direction));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -591,4 +591,10 @@ public class ClientProxy extends CommonProxy
|
||||||
{
|
{
|
||||||
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityLaser(world, from, to, direction));
|
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityLaser(world, from, to, direction));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isClientSide()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ import mekanism.common.inventory.container.ContainerSalinationController;
|
||||||
import mekanism.common.inventory.container.ContainerSeismicVibrator;
|
import mekanism.common.inventory.container.ContainerSeismicVibrator;
|
||||||
import mekanism.common.inventory.container.ContainerTeleporter;
|
import mekanism.common.inventory.container.ContainerTeleporter;
|
||||||
import mekanism.common.inventory.container.ContainerUpgradeManagement;
|
import mekanism.common.inventory.container.ContainerUpgradeManagement;
|
||||||
|
import mekanism.common.network.PacketLaserFire.LaserFireMessage;
|
||||||
import mekanism.common.tile.TileEntityAdvancedElectricMachine;
|
import mekanism.common.tile.TileEntityAdvancedElectricMachine;
|
||||||
import mekanism.common.tile.TileEntityAdvancedFactory;
|
import mekanism.common.tile.TileEntityAdvancedFactory;
|
||||||
import mekanism.common.tile.TileEntityBin;
|
import mekanism.common.tile.TileEntityBin;
|
||||||
|
@ -145,7 +146,7 @@ public class CommonProxy
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a client-side sound, assigned to a TileEntity.
|
* Registers a client-side sound, assigned to a TileEntity.
|
||||||
* @param tile - TileEntity who is registering the sound
|
* @param tileEntity - TileEntity who is registering the sound
|
||||||
*/
|
*/
|
||||||
public void registerSound(TileEntity tileEntity) {}
|
public void registerSound(TileEntity tileEntity) {}
|
||||||
|
|
||||||
|
@ -474,5 +475,13 @@ public class CommonProxy
|
||||||
return context.getServerHandler().playerEntity;
|
return context.getServerHandler().playerEntity;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renderLaser(World world, Coord4D from, Coord4D to, ForgeDirection direction) {}
|
public void renderLaser(World world, Coord4D from, Coord4D to, ForgeDirection direction)
|
||||||
|
{
|
||||||
|
Mekanism.packetHandler.sendToAllAround(new LaserFireMessage(from, to, direction), from.getTargetPoint(50D));
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isClientSide()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,8 @@ import mekanism.common.network.PacketJetpackData;
|
||||||
import mekanism.common.network.PacketJetpackData.JetpackDataMessage;
|
import mekanism.common.network.PacketJetpackData.JetpackDataMessage;
|
||||||
import mekanism.common.network.PacketKey;
|
import mekanism.common.network.PacketKey;
|
||||||
import mekanism.common.network.PacketKey.KeyMessage;
|
import mekanism.common.network.PacketKey.KeyMessage;
|
||||||
|
import mekanism.common.network.PacketLaserFire;
|
||||||
|
import mekanism.common.network.PacketLaserFire.LaserFireMessage;
|
||||||
import mekanism.common.network.PacketLogisticalSorterGui;
|
import mekanism.common.network.PacketLogisticalSorterGui;
|
||||||
import mekanism.common.network.PacketLogisticalSorterGui.LogisticalSorterGuiMessage;
|
import mekanism.common.network.PacketLogisticalSorterGui.LogisticalSorterGuiMessage;
|
||||||
import mekanism.common.network.PacketNewFilter;
|
import mekanism.common.network.PacketNewFilter;
|
||||||
|
@ -118,6 +120,7 @@ public class PacketHandler
|
||||||
netHandler.registerMessage(PacketPortableTankState.class, PortableTankStateMessage.class, 25, Side.SERVER);
|
netHandler.registerMessage(PacketPortableTankState.class, PortableTankStateMessage.class, 25, Side.SERVER);
|
||||||
netHandler.registerMessage(PacketContainerEditMode.class, ContainerEditModeMessage.class, 26, Side.SERVER);
|
netHandler.registerMessage(PacketContainerEditMode.class, ContainerEditModeMessage.class, 26, Side.SERVER);
|
||||||
netHandler.registerMessage(PacketFlamethrowerActive.class, FlamethrowerActiveMessage.class, 27, Side.SERVER);
|
netHandler.registerMessage(PacketFlamethrowerActive.class, FlamethrowerActiveMessage.class, 27, Side.SERVER);
|
||||||
|
netHandler.registerMessage(PacketLaserFire.class, LaserFireMessage.class, 28, Side.CLIENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
71
src/main/java/mekanism/common/network/PacketLaserFire.java
Normal file
71
src/main/java/mekanism/common/network/PacketLaserFire.java
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
package mekanism.common.network;
|
||||||
|
|
||||||
|
import mekanism.api.Coord4D;
|
||||||
|
import mekanism.common.IRedstoneControl.RedstoneControl;
|
||||||
|
import mekanism.common.Mekanism;
|
||||||
|
import mekanism.common.PacketHandler;
|
||||||
|
import mekanism.common.network.PacketLaserFire.LaserFireMessage;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
||||||
|
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
|
||||||
|
public class PacketLaserFire implements IMessageHandler<LaserFireMessage, IMessage>
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public IMessage onMessage(LaserFireMessage message, MessageContext context)
|
||||||
|
{
|
||||||
|
EntityPlayer player = PacketHandler.getPlayer(context);
|
||||||
|
|
||||||
|
if(Mekanism.proxy.isClientSide())
|
||||||
|
{
|
||||||
|
Mekanism.proxy.renderLaser(player.worldObj, message.from, message.to, message.direction);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class LaserFireMessage implements IMessage
|
||||||
|
{
|
||||||
|
public Coord4D from;
|
||||||
|
public Coord4D to;
|
||||||
|
public ForgeDirection direction;
|
||||||
|
|
||||||
|
public LaserFireMessage() {}
|
||||||
|
|
||||||
|
public LaserFireMessage(Coord4D from, Coord4D to, ForgeDirection direction)
|
||||||
|
{
|
||||||
|
this.from = from;
|
||||||
|
this.to = to;
|
||||||
|
this.direction = direction;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toBytes(ByteBuf dataStream)
|
||||||
|
{
|
||||||
|
dataStream.writeInt(from.xCoord);
|
||||||
|
dataStream.writeInt(from.yCoord);
|
||||||
|
dataStream.writeInt(from.zCoord);
|
||||||
|
dataStream.writeInt(from.dimensionId);
|
||||||
|
|
||||||
|
dataStream.writeInt(to.xCoord);
|
||||||
|
dataStream.writeInt(to.yCoord);
|
||||||
|
dataStream.writeInt(to.zCoord);
|
||||||
|
dataStream.writeInt(to.dimensionId);
|
||||||
|
|
||||||
|
dataStream.writeInt(direction.ordinal());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fromBytes(ByteBuf dataStream)
|
||||||
|
{
|
||||||
|
from = Coord4D.read(dataStream);
|
||||||
|
to = Coord4D.read(dataStream);
|
||||||
|
direction = ForgeDirection.getOrientation(dataStream.readInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue