Fixed key handler, added complete keybind support, added proper error messages, more work on walkie talkies.
This commit is contained in:
parent
cafe2a7dfb
commit
0feba0d9b3
6 changed files with 91 additions and 31 deletions
|
@ -25,9 +25,7 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public class ClientPlayerTickHandler implements ITickHandler
|
public class ClientPlayerTickHandler implements ITickHandler
|
||||||
{
|
{
|
||||||
public boolean lastTickConfiguratorChange = false;
|
public boolean lastTickUpdate = false;
|
||||||
public boolean lastTickElectricBowChange = false;
|
|
||||||
public boolean lastTickWalkieTalkieChange = false;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tickStart(EnumSet<TickType> type, Object... tickData) {}
|
public void tickStart(EnumSet<TickType> type, Object... tickData) {}
|
||||||
|
@ -47,56 +45,59 @@ public class ClientPlayerTickHandler implements ITickHandler
|
||||||
{
|
{
|
||||||
ItemConfigurator item = (ItemConfigurator)entityPlayer.getCurrentEquippedItem().getItem();
|
ItemConfigurator item = (ItemConfigurator)entityPlayer.getCurrentEquippedItem().getItem();
|
||||||
|
|
||||||
if(entityPlayer.isSneaking() && Keyboard.isKeyDown(Keyboard.KEY_M))
|
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitchDown)
|
||||||
{
|
{
|
||||||
if(!lastTickConfiguratorChange)
|
if(!lastTickUpdate)
|
||||||
{
|
{
|
||||||
item.setState(stack, (byte)(item.getState(stack) < 2 ? item.getState(stack)+1 : 0));
|
item.setState(stack, (byte)(item.getState(stack) < 2 ? item.getState(stack)+1 : 0));
|
||||||
PacketHandler.sendPacket(Transmission.SERVER, new PacketConfiguratorState().setParams(item.getState(stack)));
|
PacketHandler.sendPacket(Transmission.SERVER, new PacketConfiguratorState().setParams(item.getState(stack)));
|
||||||
entityPlayer.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + "Configure State: " + item.getColor(item.getState(stack)) + item.getState(item.getState(stack))));
|
entityPlayer.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + "Configure State: " + item.getColor(item.getState(stack)) + item.getState(item.getState(stack))));
|
||||||
lastTickConfiguratorChange = true;
|
lastTickUpdate = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lastTickConfiguratorChange = false;
|
lastTickUpdate = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(entityPlayer.getCurrentEquippedItem().getItem() instanceof ItemElectricBow)
|
else if(entityPlayer.getCurrentEquippedItem().getItem() instanceof ItemElectricBow)
|
||||||
{
|
{
|
||||||
ItemElectricBow item = (ItemElectricBow)entityPlayer.getCurrentEquippedItem().getItem();
|
ItemElectricBow item = (ItemElectricBow)entityPlayer.getCurrentEquippedItem().getItem();
|
||||||
|
|
||||||
if(entityPlayer.isSneaking() && Keyboard.isKeyDown(Keyboard.KEY_M))
|
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitchDown)
|
||||||
{
|
{
|
||||||
if(!lastTickElectricBowChange)
|
if(!lastTickUpdate)
|
||||||
{
|
{
|
||||||
item.setFireState(stack, !item.getFireState(stack));
|
item.setFireState(stack, !item.getFireState(stack));
|
||||||
PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricBowState().setParams(item.getFireState(stack)));
|
PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricBowState().setParams(item.getFireState(stack)));
|
||||||
entityPlayer.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + "Fire Mode: " + (item.getFireState(stack) ? (EnumColor.DARK_GREEN + "ON") : (EnumColor.DARK_RED + "OFF"))));
|
entityPlayer.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + "Fire Mode: " + (item.getFireState(stack) ? (EnumColor.DARK_GREEN + "ON") : (EnumColor.DARK_RED + "OFF"))));
|
||||||
lastTickElectricBowChange = true;
|
lastTickUpdate = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lastTickElectricBowChange = false;
|
lastTickUpdate = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(entityPlayer.getCurrentEquippedItem().getItem() instanceof ItemWalkieTalkie)
|
else if(entityPlayer.getCurrentEquippedItem().getItem() instanceof ItemWalkieTalkie)
|
||||||
{
|
{
|
||||||
ItemWalkieTalkie item = (ItemWalkieTalkie)entityPlayer.getCurrentEquippedItem().getItem();
|
ItemWalkieTalkie item = (ItemWalkieTalkie)entityPlayer.getCurrentEquippedItem().getItem();
|
||||||
|
|
||||||
if(entityPlayer.isSneaking() && Keyboard.isKeyDown(Keyboard.KEY_M) && item.getOn(stack))
|
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitchDown && item.getOn(stack))
|
||||||
{
|
{
|
||||||
if(!lastTickWalkieTalkieChange)
|
if(!lastTickUpdate)
|
||||||
{
|
{
|
||||||
int newChan = item.getChannel(stack) < 9 ? item.getChannel(stack)+1 : 1;
|
int newChan = item.getChannel(stack) < 9 ? item.getChannel(stack)+1 : 1;
|
||||||
item.setChannel(stack, newChan);
|
item.setChannel(stack, newChan);
|
||||||
PacketHandler.sendPacket(Transmission.SERVER, new PacketWalkieTalkieState().setParams(newChan));
|
PacketHandler.sendPacket(Transmission.SERVER, new PacketWalkieTalkieState().setParams(newChan));
|
||||||
lastTickWalkieTalkieChange = true;
|
lastTickUpdate = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lastTickWalkieTalkieChange = false;
|
lastTickUpdate = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
lastTickUpdate = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,11 +14,12 @@ public class MekanismKeyHandler extends KeyHandler
|
||||||
public static KeyBinding modeSwitch = new KeyBinding("Mekanism Mode Switch", Keyboard.KEY_M);
|
public static KeyBinding modeSwitch = new KeyBinding("Mekanism Mode Switch", Keyboard.KEY_M);
|
||||||
public static KeyBinding voice = new KeyBinding("Mekanism Voice", Keyboard.KEY_U);
|
public static KeyBinding voice = new KeyBinding("Mekanism Voice", Keyboard.KEY_U);
|
||||||
|
|
||||||
|
public static boolean modeSwitchDown = false;
|
||||||
public static boolean voiceDown = false;
|
public static boolean voiceDown = false;
|
||||||
|
|
||||||
public MekanismKeyHandler()
|
public MekanismKeyHandler()
|
||||||
{
|
{
|
||||||
super(new KeyBinding[] {modeSwitch, voice});
|
super(new KeyBinding[] {modeSwitch, voice}, new boolean[] {false, false});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,7 +31,11 @@ public class MekanismKeyHandler extends KeyHandler
|
||||||
@Override
|
@Override
|
||||||
public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat)
|
public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat)
|
||||||
{
|
{
|
||||||
if(kb == voice)
|
if(kb.keyCode == modeSwitch.keyCode)
|
||||||
|
{
|
||||||
|
modeSwitchDown = true;
|
||||||
|
}
|
||||||
|
else if(kb.keyCode == voice.keyCode)
|
||||||
{
|
{
|
||||||
voiceDown = true;
|
voiceDown = true;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +44,11 @@ public class MekanismKeyHandler extends KeyHandler
|
||||||
@Override
|
@Override
|
||||||
public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd)
|
public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd)
|
||||||
{
|
{
|
||||||
if(kb == voice)
|
if(kb.keyCode == modeSwitch.keyCode)
|
||||||
|
{
|
||||||
|
modeSwitchDown = false;
|
||||||
|
}
|
||||||
|
else if(kb.keyCode == voice.keyCode)
|
||||||
{
|
{
|
||||||
voiceDown = false;
|
voiceDown = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,9 @@ public class VoiceClientManager implements IConnectionHandler
|
||||||
public TargetDataLine targetLine;
|
public TargetDataLine targetLine;
|
||||||
public SourceDataLine sourceLine;
|
public SourceDataLine sourceLine;
|
||||||
|
|
||||||
|
public Thread microphoneThread;
|
||||||
|
public Thread speakerThread;
|
||||||
|
|
||||||
public DataInputStream input;
|
public DataInputStream input;
|
||||||
public DataOutputStream output;
|
public DataOutputStream output;
|
||||||
|
|
||||||
|
@ -89,12 +92,14 @@ public class VoiceClientManager implements IConnectionHandler
|
||||||
|
|
||||||
public void start()
|
public void start()
|
||||||
{
|
{
|
||||||
|
System.out.println("Started client connection.");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
input = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
|
input = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
|
||||||
output = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
|
output = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
|
||||||
|
|
||||||
//Speaker (Out)
|
//Speaker (Out)
|
||||||
new Thread(new Runnable()
|
speakerThread = new Thread(new Runnable()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
|
@ -106,7 +111,6 @@ public class VoiceClientManager implements IConnectionHandler
|
||||||
|
|
||||||
while(running)
|
while(running)
|
||||||
{
|
{
|
||||||
System.out.println("Looped");
|
|
||||||
short byteCount = VoiceClientManager.this.input.readShort();
|
short byteCount = VoiceClientManager.this.input.readShort();
|
||||||
byte[] audioData = new byte[byteCount];
|
byte[] audioData = new byte[byteCount];
|
||||||
VoiceClientManager.this.input.readFully(audioData);
|
VoiceClientManager.this.input.readFully(audioData);
|
||||||
|
@ -115,12 +119,15 @@ public class VoiceClientManager implements IConnectionHandler
|
||||||
}
|
}
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
System.err.println("Error while running speaker loop.");
|
System.err.println("Error while running speaker loop.");
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).start();
|
});
|
||||||
|
|
||||||
|
speakerThread.start();
|
||||||
|
|
||||||
//Microphone (In)
|
//Microphone (In)
|
||||||
new Thread(new Runnable()
|
microphoneThread = new Thread(new Runnable()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
|
@ -147,7 +154,6 @@ public class VoiceClientManager implements IConnectionHandler
|
||||||
|
|
||||||
if(bytesRead > 0)
|
if(bytesRead > 0)
|
||||||
{
|
{
|
||||||
System.out.println("Writing");
|
|
||||||
output.writeShort(audioData.length);
|
output.writeShort(audioData.length);
|
||||||
output.write(audioData);
|
output.write(audioData);
|
||||||
}
|
}
|
||||||
|
@ -180,13 +186,23 @@ public class VoiceClientManager implements IConnectionHandler
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).start();
|
});
|
||||||
} catch(Exception e) {}
|
|
||||||
|
microphoneThread.start();
|
||||||
|
} catch(Exception e) {
|
||||||
|
System.err.println("Error in core client initiation.");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stop()
|
public void stop()
|
||||||
{
|
{
|
||||||
|
System.out.println("Stopped client connection.");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
microphoneThread.interrupt();
|
||||||
|
speakerThread.interrupt();
|
||||||
|
|
||||||
sourceLine.flush();
|
sourceLine.flush();
|
||||||
sourceLine.close();
|
sourceLine.close();
|
||||||
|
|
||||||
|
|
|
@ -354,7 +354,7 @@ public class Mekanism
|
||||||
"COC", "TAT", "COC", Character.valueOf('C'), AtomicCore, Character.valueOf('O'), "ingotRefinedObsidian", Character.valueOf('T'), EnergyTablet.getUnchargedItem(), Character.valueOf('A'), MekanismUtils.getEnergyCube(EnergyCubeTier.ELITE)
|
"COC", "TAT", "COC", Character.valueOf('C'), AtomicCore, Character.valueOf('O'), "ingotRefinedObsidian", Character.valueOf('T'), EnergyTablet.getUnchargedItem(), Character.valueOf('A'), MekanismUtils.getEnergyCube(EnergyCubeTier.ELITE)
|
||||||
}));
|
}));
|
||||||
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ControlCircuit), new Object[] {
|
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ControlCircuit), new Object[] {
|
||||||
" P ", "PEP", " P ", Character.valueOf('P'), "ingotOsmium", Character.valueOf('E'), EnrichedAlloy
|
"RER", Character.valueOf('R'), Item.redstone, Character.valueOf('E'), EnrichedAlloy
|
||||||
}));
|
}));
|
||||||
CraftingManager.getInstance().getRecipeList().add(new ShapelessOreRecipe(new ItemStack(EnrichedIron, 2), new Object[] {
|
CraftingManager.getInstance().getRecipeList().add(new ShapelessOreRecipe(new ItemStack(EnrichedIron, 2), new Object[] {
|
||||||
MaganeseAlloy, Item.ingotIron
|
MaganeseAlloy, Item.ingotIron
|
||||||
|
@ -419,6 +419,9 @@ public class Mekanism
|
||||||
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(NetworkReader), new Object[] {
|
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(NetworkReader), new Object[] {
|
||||||
" G ", "AEA", " I ", Character.valueOf('G'), Block.glass, Character.valueOf('A'), EnrichedAlloy, Character.valueOf('E'), EnergyTablet.getUnchargedItem(), Character.valueOf('I'), "ingotSteel"
|
" G ", "AEA", " I ", Character.valueOf('G'), Block.glass, Character.valueOf('A'), EnrichedAlloy, Character.valueOf('E'), EnergyTablet.getUnchargedItem(), Character.valueOf('I'), "ingotSteel"
|
||||||
}));
|
}));
|
||||||
|
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(WalkieTalkie), new Object[] {
|
||||||
|
" O", "SCS", " S ", Character.valueOf('O'), "ingotOsmium", Character.valueOf('S'), "ingotSteel", Character.valueOf('C'), "circuitBasic"
|
||||||
|
}));
|
||||||
|
|
||||||
//Factory Recipes
|
//Factory Recipes
|
||||||
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getFactory(FactoryTier.BASIC, RecipeType.SMELTING), new Object[] {
|
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getFactory(FactoryTier.BASIC, RecipeType.SMELTING), new Object[] {
|
||||||
|
|
|
@ -55,6 +55,8 @@ public class VoiceConnection
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
|
System.err.println("Error while starting server-based connection.");
|
||||||
|
e.printStackTrace();
|
||||||
open = false;
|
open = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,6 +75,7 @@ public class VoiceConnection
|
||||||
|
|
||||||
if(byteCount > 0)
|
if(byteCount > 0)
|
||||||
{
|
{
|
||||||
|
System.out.println("Got data");
|
||||||
Mekanism.voiceManager.sendToPlayers(byteCount, audioData, VoiceConnection.this);
|
Mekanism.voiceManager.sendToPlayers(byteCount, audioData, VoiceConnection.this);
|
||||||
}
|
}
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
|
@ -96,7 +99,10 @@ public class VoiceConnection
|
||||||
socket.close();
|
socket.close();
|
||||||
|
|
||||||
Mekanism.voiceManager.connections.remove(this);
|
Mekanism.voiceManager.connections.remove(this);
|
||||||
} catch(Exception e) {}
|
} catch(Exception e) {
|
||||||
|
System.err.println("Error while stopping server-based connection.");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendToPlayer(short byteCount, byte[] audioData, VoiceConnection connection)
|
public void sendToPlayer(short byteCount, byte[] audioData, VoiceConnection connection)
|
||||||
|
@ -111,7 +117,10 @@ public class VoiceConnection
|
||||||
output.write(audioData);
|
output.write(audioData);
|
||||||
|
|
||||||
output.flush();
|
output.flush();
|
||||||
} catch(Exception e) {}
|
} catch(Exception e) {
|
||||||
|
System.err.println("Error while sending data to player.");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canListen(int channel)
|
public boolean canListen(int channel)
|
||||||
|
@ -122,9 +131,12 @@ public class VoiceConnection
|
||||||
{
|
{
|
||||||
if(itemStack.getItem() instanceof ItemWalkieTalkie)
|
if(itemStack.getItem() instanceof ItemWalkieTalkie)
|
||||||
{
|
{
|
||||||
if(((ItemWalkieTalkie)itemStack.getItem()).getChannel(itemStack) == channel)
|
if(((ItemWalkieTalkie)itemStack.getItem()).getOn(itemStack))
|
||||||
{
|
{
|
||||||
return true;
|
if(((ItemWalkieTalkie)itemStack.getItem()).getChannel(itemStack) == channel)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -143,7 +155,10 @@ public class VoiceConnection
|
||||||
|
|
||||||
if(walkieTalkie != null)
|
if(walkieTalkie != null)
|
||||||
{
|
{
|
||||||
return walkieTalkie.getChannel(itemStack);
|
if(walkieTalkie.getOn(itemStack))
|
||||||
|
{
|
||||||
|
return walkieTalkie.getChannel(itemStack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package mekanism.common;
|
||||||
|
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
import java.net.SocketException;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
@ -25,6 +26,8 @@ public class VoiceServerManager implements IConnectionHandler
|
||||||
|
|
||||||
public void start()
|
public void start()
|
||||||
{
|
{
|
||||||
|
System.out.println("Starting up voice server.");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
serverSocket = new ServerSocket(36123);
|
serverSocket = new ServerSocket(36123);
|
||||||
|
|
||||||
|
@ -39,6 +42,12 @@ public class VoiceServerManager implements IConnectionHandler
|
||||||
Socket s = serverSocket.accept();
|
Socket s = serverSocket.accept();
|
||||||
VoiceConnection connection = new VoiceConnection(s);
|
VoiceConnection connection = new VoiceConnection(s);
|
||||||
connections.add(connection);
|
connections.add(connection);
|
||||||
|
System.out.println("Accepted new connection.");
|
||||||
|
} catch(SocketException e) {
|
||||||
|
if(!e.getLocalizedMessage().toLowerCase().equals("socket closed"))
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
System.err.println("Error while accepting connection.");
|
System.err.println("Error while accepting connection.");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -60,6 +69,13 @@ public class VoiceServerManager implements IConnectionHandler
|
||||||
|
|
||||||
serverSocket.close();
|
serverSocket.close();
|
||||||
serverSocket = null;
|
serverSocket = null;
|
||||||
|
|
||||||
|
System.out.println("Shutting down voice server.");
|
||||||
|
} catch(SocketException e) {
|
||||||
|
if(!e.getLocalizedMessage().toLowerCase().equals("socket closed"))
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
System.err.println("Error while stopping voice server.");
|
System.err.println("Error while stopping voice server.");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
Loading…
Reference in a new issue