Major Flamethrower work - finished networking and implemented active state management. Active sound effects work, too.
This commit is contained in:
parent
c9f569fd4a
commit
2f4d545fb5
10 changed files with 131 additions and 33 deletions
|
@ -13,5 +13,7 @@ public class ClientPlayerTracker
|
||||||
public void onPlayerChangedDimension(PlayerChangedDimensionEvent event)
|
public void onPlayerChangedDimension(PlayerChangedDimensionEvent event)
|
||||||
{
|
{
|
||||||
Mekanism.jetpackOn.remove(event.player);
|
Mekanism.jetpackOn.remove(event.player);
|
||||||
|
Mekanism.gasmaskOn.remove(event.player);
|
||||||
|
Mekanism.flamethrowerActive.remove(event.player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import mekanism.common.item.ItemScubaTank;
|
||||||
import mekanism.common.item.ItemWalkieTalkie;
|
import mekanism.common.item.ItemWalkieTalkie;
|
||||||
import mekanism.common.network.PacketConfiguratorState.ConfiguratorStateMessage;
|
import mekanism.common.network.PacketConfiguratorState.ConfiguratorStateMessage;
|
||||||
import mekanism.common.network.PacketElectricBowState.ElectricBowStateMessage;
|
import mekanism.common.network.PacketElectricBowState.ElectricBowStateMessage;
|
||||||
|
import mekanism.common.network.PacketFlamethrowerActive.FlamethrowerActiveMessage;
|
||||||
import mekanism.common.network.PacketJetpackData.JetpackDataMessage;
|
import mekanism.common.network.PacketJetpackData.JetpackDataMessage;
|
||||||
import mekanism.common.network.PacketJetpackData.JetpackPacket;
|
import mekanism.common.network.PacketJetpackData.JetpackPacket;
|
||||||
import mekanism.common.network.PacketPortableTankState.PortableTankStateMessage;
|
import mekanism.common.network.PacketPortableTankState.PortableTankStateMessage;
|
||||||
|
@ -358,6 +359,21 @@ public class ClientTickHandler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isFlamethrowerOn(mc.thePlayer) != Mekanism.flamethrowerActive.contains(mc.thePlayer.getCommandSenderName()))
|
||||||
|
{
|
||||||
|
ItemFlamethrower flamethrower = (ItemFlamethrower)mc.thePlayer.getCurrentEquippedItem().getItem();
|
||||||
|
|
||||||
|
if(isFlamethrowerOn(mc.thePlayer))
|
||||||
|
{
|
||||||
|
Mekanism.flamethrowerActive.add(mc.thePlayer.getCommandSenderName());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Mekanism.flamethrowerActive.remove(mc.thePlayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
Mekanism.packetHandler.sendToServer(new FlamethrowerActiveMessage(isFlamethrowerOn(mc.thePlayer)));
|
||||||
|
}
|
||||||
|
|
||||||
if(Mekanism.jetpackOn.contains(mc.thePlayer.getCommandSenderName()) != isJetpackOn(mc.thePlayer))
|
if(Mekanism.jetpackOn.contains(mc.thePlayer.getCommandSenderName()) != isJetpackOn(mc.thePlayer))
|
||||||
{
|
{
|
||||||
if(isJetpackOn(mc.thePlayer))
|
if(isJetpackOn(mc.thePlayer))
|
||||||
|
@ -563,6 +579,19 @@ public class ClientTickHandler
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isFlamethrowerOn(EntityPlayer player)
|
||||||
|
{
|
||||||
|
if(hasFlamethrower(player))
|
||||||
|
{
|
||||||
|
if(mc.gameSettings.keyBindUseItem.getIsKeyPressed())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean hasFlamethrower(EntityPlayer player)
|
public static boolean hasFlamethrower(EntityPlayer player)
|
||||||
{
|
{
|
||||||
if(player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemFlamethrower)
|
if(player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemFlamethrower)
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package mekanism.client.sound;
|
package mekanism.client.sound;
|
||||||
|
|
||||||
import mekanism.client.ClientTickHandler;
|
import mekanism.client.ClientTickHandler;
|
||||||
import mekanism.common.item.ItemFlamethrower;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
@ -11,9 +10,9 @@ public class FlamethrowerSound extends PlayerSound
|
||||||
|
|
||||||
public FlamethrowerSound(String id, EntityPlayer entity)
|
public FlamethrowerSound(String id, EntityPlayer entity)
|
||||||
{
|
{
|
||||||
super(id, getSound(getInUse(entity)), SoundHandler.CHANNEL_FLAMETHROWER, entity);
|
super(id, getSound(ClientTickHandler.isFlamethrowerOn(entity)), SoundHandler.CHANNEL_FLAMETHROWER, entity);
|
||||||
|
|
||||||
inUse = getInUse(entity);
|
inUse = ClientTickHandler.isFlamethrowerOn(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -27,7 +26,7 @@ public class FlamethrowerSound extends PlayerSound
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if(inUse != getInUse(player))
|
else if(inUse != ClientTickHandler.isFlamethrowerOn(player))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -42,11 +41,16 @@ public class FlamethrowerSound extends PlayerSound
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean getInUse(EntityPlayer player)
|
@Override
|
||||||
|
public float getMultiplier()
|
||||||
{
|
{
|
||||||
ItemFlamethrower flamethrower = (ItemFlamethrower)player.getCurrentEquippedItem().getItem();
|
return super.getMultiplier() * (inUse ? 2 : 1);
|
||||||
|
}
|
||||||
|
|
||||||
return flamethrower.getInUse(player.getCurrentEquippedItem());
|
@Override
|
||||||
|
public boolean doGradualEffect()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getSound(boolean inUse)
|
private static String getSound(boolean inUse)
|
||||||
|
|
|
@ -152,7 +152,12 @@ public abstract class Sound
|
||||||
|
|
||||||
public float getMultiplier()
|
public float getMultiplier()
|
||||||
{
|
{
|
||||||
return Math.min(1, ((float)ticksSincePlay/30F));
|
return doGradualEffect() ? Math.min(1, ((float)ticksSincePlay/30F)) : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean doGradualEffect()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package mekanism.common;
|
package mekanism.common;
|
||||||
|
|
||||||
import mekanism.api.gas.GasStack;
|
import mekanism.api.gas.GasStack;
|
||||||
|
import mekanism.common.item.ItemFlamethrower;
|
||||||
import mekanism.common.item.ItemFreeRunners;
|
import mekanism.common.item.ItemFreeRunners;
|
||||||
import mekanism.common.item.ItemGasMask;
|
import mekanism.common.item.ItemGasMask;
|
||||||
import mekanism.common.item.ItemJetpack;
|
import mekanism.common.item.ItemJetpack;
|
||||||
|
@ -96,6 +97,11 @@ public class CommonPlayerTickHandler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isFlamethrowerOn(player))
|
||||||
|
{
|
||||||
|
//TODO spawn flame entities
|
||||||
|
}
|
||||||
|
|
||||||
if(isJetpackOn(player))
|
if(isJetpackOn(player))
|
||||||
{
|
{
|
||||||
ItemJetpack jetpack = (ItemJetpack)player.getEquipmentInSlot(3).getItem();
|
ItemJetpack jetpack = (ItemJetpack)player.getEquipmentInSlot(3).getItem();
|
||||||
|
@ -210,4 +216,17 @@ public class CommonPlayerTickHandler
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isFlamethrowerOn(EntityPlayer player)
|
||||||
|
{
|
||||||
|
if(Mekanism.flamethrowerActive.contains(player.getCommandSenderName()))
|
||||||
|
{
|
||||||
|
if(player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemFlamethrower)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ public class CommonPlayerTracker
|
||||||
{
|
{
|
||||||
Mekanism.jetpackOn.remove(event.player);
|
Mekanism.jetpackOn.remove(event.player);
|
||||||
Mekanism.gasmaskOn.remove(event.player);
|
Mekanism.gasmaskOn.remove(event.player);
|
||||||
|
Mekanism.flamethrowerActive.remove(event.player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
|
|
|
@ -105,7 +105,6 @@ import mekanism.common.tile.TileEntityBoundingBlock;
|
||||||
import mekanism.common.tile.TileEntityCardboardBox;
|
import mekanism.common.tile.TileEntityCardboardBox;
|
||||||
import mekanism.common.tile.TileEntityElectricBlock;
|
import mekanism.common.tile.TileEntityElectricBlock;
|
||||||
import mekanism.common.tile.TileEntityEnergizedSmelter;
|
import mekanism.common.tile.TileEntityEnergizedSmelter;
|
||||||
import mekanism.common.tile.TileEntityLaser;
|
|
||||||
import mekanism.common.tile.TileEntitySalinationTank;
|
import mekanism.common.tile.TileEntitySalinationTank;
|
||||||
import mekanism.common.tile.TileEntitySalinationValve;
|
import mekanism.common.tile.TileEntitySalinationValve;
|
||||||
import mekanism.common.transporter.TransporterManager;
|
import mekanism.common.transporter.TransporterManager;
|
||||||
|
@ -233,6 +232,7 @@ public class Mekanism
|
||||||
|
|
||||||
public static Set<String> jetpackOn = new HashSet<String>();
|
public static Set<String> jetpackOn = new HashSet<String>();
|
||||||
public static Set<String> gasmaskOn = new HashSet<String>();
|
public static Set<String> gasmaskOn = new HashSet<String>();
|
||||||
|
public static Set<String> flamethrowerActive = new HashSet<String>();
|
||||||
|
|
||||||
public static Set<Coord4D> ic2Registered = new HashSet<Coord4D>();
|
public static Set<Coord4D> ic2Registered = new HashSet<Coord4D>();
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,8 @@ import mekanism.common.network.PacketElectricBowState;
|
||||||
import mekanism.common.network.PacketElectricBowState.ElectricBowStateMessage;
|
import mekanism.common.network.PacketElectricBowState.ElectricBowStateMessage;
|
||||||
import mekanism.common.network.PacketElectricChest;
|
import mekanism.common.network.PacketElectricChest;
|
||||||
import mekanism.common.network.PacketElectricChest.ElectricChestMessage;
|
import mekanism.common.network.PacketElectricChest.ElectricChestMessage;
|
||||||
|
import mekanism.common.network.PacketFlamethrowerActive;
|
||||||
|
import mekanism.common.network.PacketFlamethrowerActive.FlamethrowerActiveMessage;
|
||||||
import mekanism.common.network.PacketJetpackData;
|
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;
|
||||||
|
@ -115,6 +117,7 @@ public class PacketHandler
|
||||||
netHandler.registerMessage(PacketBoxBlacklist.class, BoxBlacklistMessage.class, 24, Side.CLIENT);
|
netHandler.registerMessage(PacketBoxBlacklist.class, BoxBlacklistMessage.class, 24, Side.CLIENT);
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,18 +2,17 @@ package mekanism.common.item;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
|
||||||
import mekanism.api.gas.Gas;
|
import mekanism.api.gas.Gas;
|
||||||
import mekanism.api.gas.GasRegistry;
|
import mekanism.api.gas.GasRegistry;
|
||||||
import mekanism.api.gas.GasStack;
|
import mekanism.api.gas.GasStack;
|
||||||
import mekanism.api.gas.IGasItem;
|
import mekanism.api.gas.IGasItem;
|
||||||
import mekanism.common.item.ItemJetpack.JetpackMode;
|
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
public class ItemFlamethrower extends ItemMekanism implements IGasItem
|
public class ItemFlamethrower extends ItemMekanism implements IGasItem
|
||||||
{
|
{
|
||||||
|
@ -149,26 +148,6 @@ public class ItemFlamethrower extends ItemMekanism implements IGasItem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getInUse(ItemStack itemstack)
|
|
||||||
{
|
|
||||||
if(itemstack.stackTagCompound == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return itemstack.stackTagCompound.getBoolean("inUse");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setInUse(ItemStack itemstack, boolean state)
|
|
||||||
{
|
|
||||||
if(itemstack.stackTagCompound == null)
|
|
||||||
{
|
|
||||||
itemstack.setTagCompound(new NBTTagCompound());
|
|
||||||
}
|
|
||||||
|
|
||||||
itemstack.stackTagCompound.setBoolean("inUse", state);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack getEmptyItem()
|
public ItemStack getEmptyItem()
|
||||||
{
|
{
|
||||||
ItemStack empty = new ItemStack(this);
|
ItemStack empty = new ItemStack(this);
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
package mekanism.common.network;
|
||||||
|
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import mekanism.common.Mekanism;
|
||||||
|
import mekanism.common.PacketHandler;
|
||||||
|
import mekanism.common.item.ItemJetpack;
|
||||||
|
import mekanism.common.network.PacketFlamethrowerActive.FlamethrowerActiveMessage;
|
||||||
|
import mekanism.common.network.PacketJetpackData.JetpackPacket;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
||||||
|
|
||||||
|
public class PacketFlamethrowerActive implements IMessageHandler<FlamethrowerActiveMessage, IMessage>
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public IMessage onMessage(FlamethrowerActiveMessage message, MessageContext context)
|
||||||
|
{
|
||||||
|
EntityPlayer player = PacketHandler.getPlayer(context);
|
||||||
|
|
||||||
|
if(message.value)
|
||||||
|
{
|
||||||
|
Mekanism.flamethrowerActive.add(player.getCommandSenderName());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Mekanism.flamethrowerActive.remove(player.getCommandSenderName());
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class FlamethrowerActiveMessage implements IMessage
|
||||||
|
{
|
||||||
|
public boolean value;
|
||||||
|
|
||||||
|
public FlamethrowerActiveMessage() {}
|
||||||
|
|
||||||
|
public FlamethrowerActiveMessage(boolean state)
|
||||||
|
{
|
||||||
|
value = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toBytes(ByteBuf dataStream)
|
||||||
|
{
|
||||||
|
dataStream.writeBoolean(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fromBytes(ByteBuf dataStream)
|
||||||
|
{
|
||||||
|
value = dataStream.readBoolean();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue