More work on the set-value command
This commit is contained in:
parent
8dc8d63d61
commit
67c704870e
|
@ -9,7 +9,7 @@ import java.util.List;
|
|||
|
||||
public class CommandEE extends CommandBase
|
||||
{
|
||||
private static final CommandEE[] COMMANDS = {new CommandSetEnergyValue(), new CommandSyncEnergyValues()};
|
||||
private static final CommandEE[] COMMANDS = {new CommandSetValue(), new CommandSyncValues()};
|
||||
|
||||
@Override
|
||||
public String getCommandName()
|
||||
|
|
|
@ -3,6 +3,8 @@ package com.pahimar.ee3.command;
|
|||
import com.pahimar.ee3.api.EnergyValue;
|
||||
import com.pahimar.ee3.exchange.EnergyValueRegistry;
|
||||
import com.pahimar.ee3.exchange.WrappedStack;
|
||||
import com.pahimar.ee3.network.PacketHandler;
|
||||
import com.pahimar.ee3.network.message.MessageSyncEnergyValues;
|
||||
import com.pahimar.ee3.util.LogHelper;
|
||||
import net.minecraft.command.ICommandSender;
|
||||
import net.minecraft.command.WrongUsageException;
|
||||
|
@ -14,22 +16,20 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
public class CommandSetEnergyValue extends CommandEE
|
||||
public class CommandSetValue extends CommandEE
|
||||
{
|
||||
@Override
|
||||
public String getCommandName()
|
||||
{
|
||||
return "set-energy-value";
|
||||
return "set-value";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processCommand(ICommandSender commandSender, String[] args)
|
||||
{
|
||||
LogHelper.info(args.length);
|
||||
|
||||
if (args.length < 3)
|
||||
{
|
||||
throw new WrongUsageException("command.ee3.set-energy-value.usage");
|
||||
throw new WrongUsageException("command.ee3.set-value.usage");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -58,7 +58,7 @@ public class CommandSetEnergyValue extends CommandEE
|
|||
|
||||
if (!(nbtBase instanceof NBTTagCompound))
|
||||
{
|
||||
func_152373_a(commandSender, this, "command.ee3.set-energy-value.tagError", new Object[]{"Not a valid tag"});
|
||||
func_152373_a(commandSender, this, "command.ee3.set-value.tagError", new Object[]{"Not a valid tag"});
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -66,12 +66,25 @@ public class CommandSetEnergyValue extends CommandEE
|
|||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
func_152373_a(commandSender, this, "command.ee3.set-energy-value.tagError", new Object[]{exception.getMessage()});
|
||||
func_152373_a(commandSender, this, "command.ee3.set-value.tagError", new Object[]{exception.getMessage()});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
EnergyValueRegistry.getInstance().setEnergyValue(new WrappedStack(itemStack), new EnergyValue(energyValue));
|
||||
WrappedStack wrappedStack = new WrappedStack(itemStack);
|
||||
EnergyValue newEnergyValue = new EnergyValue(energyValue);
|
||||
|
||||
if (wrappedStack != null && newEnergyValue != null && Float.compare(newEnergyValue.getEnergyValue(), 0) > 0)
|
||||
{
|
||||
LogHelper.info(String.format("%s set the EnergyValue of %s to %s", commandSender.getCommandSenderName(), wrappedStack, newEnergyValue));
|
||||
EnergyValueRegistry.getInstance().setEnergyValue(wrappedStack, newEnergyValue);
|
||||
PacketHandler.INSTANCE.sendToAll(new MessageSyncEnergyValues(EnergyValueRegistry.getInstance())); //TODO Get MessageSetEnergyValue working so we are only setting new values and not unchanged ones
|
||||
func_152373_a(commandSender, this, "command.ee3.set-value.success", new Object[]{commandSender.getCommandSenderName(), wrappedStack.toString(), newEnergyValue.toString()});
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new WrongUsageException("command.ee3.set-value.usage");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@ package com.pahimar.ee3.command;
|
|||
|
||||
import com.pahimar.ee3.exchange.EnergyValueRegistry;
|
||||
import com.pahimar.ee3.network.PacketHandler;
|
||||
import com.pahimar.ee3.network.message.MessageEnergyValueSync;
|
||||
import com.pahimar.ee3.network.message.MessageSyncEnergyValues;
|
||||
import com.pahimar.ee3.util.LogHelper;
|
||||
import com.pahimar.ee3.util.PlayerHelper;
|
||||
import net.minecraft.command.ICommandSender;
|
||||
|
@ -13,12 +13,12 @@ import net.minecraft.util.ChatComponentTranslation;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
public class CommandSyncEnergyValues extends CommandEE
|
||||
public class CommandSyncValues extends CommandEE
|
||||
{
|
||||
@Override
|
||||
public String getCommandName()
|
||||
{
|
||||
return "sync-energy-values";
|
||||
return "sync-values";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -29,23 +29,23 @@ public class CommandSyncEnergyValues extends CommandEE
|
|||
if (args[1].equalsIgnoreCase("self"))
|
||||
{
|
||||
LogHelper.info(String.format("Syncing EnergyValues with player '%s' at their request", commandSender.getCommandSenderName()));
|
||||
PacketHandler.INSTANCE.sendTo(new MessageEnergyValueSync(EnergyValueRegistry.getInstance()), (EntityPlayerMP) commandSender);
|
||||
commandSender.addChatMessage(new ChatComponentTranslation("command.ee3.sync-energy-values.self.success"));
|
||||
PacketHandler.INSTANCE.sendTo(new MessageSyncEnergyValues(EnergyValueRegistry.getInstance()), (EntityPlayerMP) commandSender);
|
||||
commandSender.addChatMessage(new ChatComponentTranslation("command.ee3.sync-values.self.success"));
|
||||
}
|
||||
else if (args[1].equalsIgnoreCase("all") && PlayerHelper.isPlayerOp((EntityPlayer) commandSender))
|
||||
{
|
||||
LogHelper.info(String.format("Syncing EnergyValues with all players at %s's request", commandSender.getCommandSenderName()));
|
||||
PacketHandler.INSTANCE.sendToAll(new MessageEnergyValueSync(EnergyValueRegistry.getInstance()));
|
||||
func_152373_a(commandSender, this, "command.ee3.sync-energy-values.all.success", new Object[]{commandSender.getCommandSenderName()});
|
||||
PacketHandler.INSTANCE.sendToAll(new MessageSyncEnergyValues(EnergyValueRegistry.getInstance()));
|
||||
func_152373_a(commandSender, this, "command.ee3.sync-values.all.success", new Object[]{commandSender.getCommandSenderName()});
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new WrongUsageException("command.ee3.sync-energy-values.usage");
|
||||
throw new WrongUsageException("command.ee3.sync-values.usage");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new WrongUsageException("command.ee3.sync-energy-values.usage");
|
||||
throw new WrongUsageException("command.ee3.sync-values.usage");
|
||||
}
|
||||
}
|
||||
|
|
@ -666,46 +666,49 @@ public class EnergyValueRegistry implements INBTTaggable
|
|||
|
||||
public void setEnergyValue(WrappedStack wrappedStack, EnergyValue energyValue)
|
||||
{
|
||||
HashMap<WrappedStack, EnergyValue> stackValueMap = new HashMap<WrappedStack, EnergyValue>();
|
||||
|
||||
/**
|
||||
* Read stack value mappings from NBTTagCompound
|
||||
*/
|
||||
stackValueMap.putAll(stackMappings);
|
||||
stackValueMap.put(wrappedStack, energyValue);
|
||||
|
||||
ImmutableSortedMap.Builder<WrappedStack, EnergyValue> stackMappingsBuilder = ImmutableSortedMap.naturalOrder();
|
||||
stackMappingsBuilder.putAll(stackValueMap);
|
||||
stackMappings = stackMappingsBuilder.build();
|
||||
|
||||
/**
|
||||
* Resolve value stack mappings from the newly loaded stack mappings
|
||||
*/
|
||||
SortedMap<EnergyValue, List<WrappedStack>> tempValueMappings = new TreeMap<EnergyValue, List<WrappedStack>>();
|
||||
|
||||
for (WrappedStack stack : stackMappings.keySet())
|
||||
if (wrappedStack != null && energyValue != null && Float.compare(energyValue.getEnergyValue(), 0f) > 0)
|
||||
{
|
||||
if (stack != null)
|
||||
{
|
||||
EnergyValue value = stackMappings.get(stack);
|
||||
HashMap<WrappedStack, EnergyValue> stackValueMap = new HashMap<WrappedStack, EnergyValue>();
|
||||
|
||||
if (value != null)
|
||||
/**
|
||||
* Read stack value mappings from NBTTagCompound
|
||||
*/
|
||||
stackValueMap.putAll(stackMappings);
|
||||
stackValueMap.put(wrappedStack, energyValue);
|
||||
|
||||
ImmutableSortedMap.Builder<WrappedStack, EnergyValue> stackMappingsBuilder = ImmutableSortedMap.naturalOrder();
|
||||
stackMappingsBuilder.putAll(stackValueMap);
|
||||
stackMappings = stackMappingsBuilder.build();
|
||||
|
||||
/**
|
||||
* Resolve value stack mappings from the newly loaded stack mappings
|
||||
*/
|
||||
SortedMap<EnergyValue, List<WrappedStack>> tempValueMappings = new TreeMap<EnergyValue, List<WrappedStack>>();
|
||||
|
||||
for (WrappedStack stack : stackMappings.keySet())
|
||||
{
|
||||
if (stack != null)
|
||||
{
|
||||
if (tempValueMappings.containsKey(value))
|
||||
EnergyValue value = stackMappings.get(stack);
|
||||
|
||||
if (value != null)
|
||||
{
|
||||
if (!(tempValueMappings.get(value).contains(stack)))
|
||||
if (tempValueMappings.containsKey(value))
|
||||
{
|
||||
tempValueMappings.get(value).add(stack);
|
||||
if (!(tempValueMappings.get(value).contains(stack)))
|
||||
{
|
||||
tempValueMappings.get(value).add(stack);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
tempValueMappings.put(value, new ArrayList<WrappedStack>(Arrays.asList(stack)));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
tempValueMappings.put(value, new ArrayList<WrappedStack>(Arrays.asList(stack)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
valueMappings = ImmutableSortedMap.copyOf(tempValueMappings);
|
||||
valueMappings = ImmutableSortedMap.copyOf(tempValueMappings);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ package com.pahimar.ee3.handler;
|
|||
|
||||
import com.pahimar.ee3.exchange.EnergyValueRegistry;
|
||||
import com.pahimar.ee3.network.PacketHandler;
|
||||
import com.pahimar.ee3.network.message.MessageEnergyValueSync;
|
||||
import com.pahimar.ee3.network.message.MessageSyncEnergyValues;
|
||||
import com.pahimar.ee3.reference.Reference;
|
||||
import com.pahimar.ee3.util.LogHelper;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
|
@ -55,6 +55,6 @@ public class PlayerEventHandler
|
|||
@SubscribeEvent
|
||||
public void onPlayerLoggedInEvent(cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent event)
|
||||
{
|
||||
PacketHandler.INSTANCE.sendTo(new MessageEnergyValueSync(EnergyValueRegistry.getInstance()), (EntityPlayerMP) event.player);
|
||||
PacketHandler.INSTANCE.sendTo(new MessageSyncEnergyValues(EnergyValueRegistry.getInstance()), (EntityPlayerMP) event.player);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,6 @@ public class PacketHandler
|
|||
INSTANCE.registerMessage(MessageTileEntityGlassBell.class, MessageTileEntityGlassBell.class, 3, Side.CLIENT);
|
||||
INSTANCE.registerMessage(MessageKeyPressed.class, MessageKeyPressed.class, 4, Side.SERVER);
|
||||
INSTANCE.registerMessage(MessageSoundEvent.class, MessageSoundEvent.class, 5, Side.CLIENT);
|
||||
INSTANCE.registerMessage(MessageEnergyValueSync.class, MessageEnergyValueSync.class, 6, Side.CLIENT);
|
||||
INSTANCE.registerMessage(MessageSyncEnergyValues.class, MessageSyncEnergyValues.class, 6, Side.CLIENT);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
package com.pahimar.ee3.network.message;
|
||||
|
||||
import com.pahimar.ee3.api.EnergyValue;
|
||||
import com.pahimar.ee3.exchange.EnergyValueRegistry;
|
||||
import com.pahimar.ee3.exchange.WrappedStack;
|
||||
import com.pahimar.ee3.util.LogHelper;
|
||||
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;
|
||||
import net.minecraft.nbt.CompressedStreamTools;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
public class MessageSetEnergyValue implements IMessage, IMessageHandler<MessageSetEnergyValue, IMessage>
|
||||
{
|
||||
public NBTTagCompound energyValueMappingNBT;
|
||||
public WrappedStack wrappedStack;
|
||||
public EnergyValue energyValue;
|
||||
|
||||
public MessageSetEnergyValue()
|
||||
{
|
||||
|
@ -21,33 +24,66 @@ public class MessageSetEnergyValue implements IMessage, IMessageHandler<MessageS
|
|||
|
||||
public MessageSetEnergyValue(WrappedStack wrappedStack, EnergyValue energyValue)
|
||||
{
|
||||
|
||||
this.wrappedStack = wrappedStack;
|
||||
this.energyValue = energyValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf)
|
||||
{
|
||||
byte[] compressedWrappedStack = null;
|
||||
int wrappedStackByteCount = buf.readInt();
|
||||
|
||||
if (wrappedStackByteCount > 0)
|
||||
{
|
||||
compressedWrappedStack = buf.readBytes(wrappedStackByteCount).array();
|
||||
}
|
||||
|
||||
byte[] compressedEnergyValue = null;
|
||||
int energyValueByteCount = buf.readInt();
|
||||
|
||||
if (energyValueByteCount > 0)
|
||||
{
|
||||
compressedEnergyValue = buf.readBytes(energyValueByteCount).array();
|
||||
}
|
||||
|
||||
if (compressedWrappedStack != null && compressedEnergyValue != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
this.wrappedStack = WrappedStack.fromNBTTagCompound(CompressedStreamTools.readCompressed(new ByteArrayInputStream(compressedWrappedStack)));
|
||||
this.energyValue = EnergyValue.loadEnergyValueFromNBT(CompressedStreamTools.readCompressed(new ByteArrayInputStream(compressedWrappedStack)));
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf)
|
||||
{
|
||||
byte[] compressedNBT = null;
|
||||
byte[] compressedWrappedStack = null;
|
||||
byte[] compressedEnergyValue = null;
|
||||
|
||||
try
|
||||
{
|
||||
compressedNBT = CompressedStreamTools.compress(energyValueMappingNBT);
|
||||
compressedWrappedStack = CompressedStreamTools.compress(WrappedStack.toNBTTagCompound(wrappedStack));
|
||||
compressedEnergyValue = CompressedStreamTools.compress(EnergyValue.writeEnergyValueToNBT(energyValue));
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (compressedNBT != null)
|
||||
if (compressedWrappedStack != null && compressedEnergyValue != null)
|
||||
{
|
||||
buf.writeInt(compressedNBT.length);
|
||||
buf.writeBytes(compressedNBT);
|
||||
buf.writeInt(compressedWrappedStack.length);
|
||||
buf.writeBytes(compressedWrappedStack);
|
||||
|
||||
buf.writeInt(compressedEnergyValue.length);
|
||||
buf.writeBytes(compressedEnergyValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -58,6 +94,16 @@ public class MessageSetEnergyValue implements IMessage, IMessageHandler<MessageS
|
|||
@Override
|
||||
public IMessage onMessage(MessageSetEnergyValue message, MessageContext ctx)
|
||||
{
|
||||
if (message.wrappedStack != null && message.energyValue != null)
|
||||
{
|
||||
EnergyValueRegistry.getInstance().setEnergyValue(message.wrappedStack, message.energyValue);
|
||||
LogHelper.info(String.format("Client successfully received new EnergyValue '%s' for object '%s'", message.energyValue, message.wrappedStack));
|
||||
}
|
||||
else
|
||||
{
|
||||
LogHelper.info("Client failed to receive new EnergyValue from server");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,15 +12,15 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
public class MessageEnergyValueSync implements IMessage, IMessageHandler<MessageEnergyValueSync, IMessage>
|
||||
public class MessageSyncEnergyValues implements IMessage, IMessageHandler<MessageSyncEnergyValues, IMessage>
|
||||
{
|
||||
public NBTTagCompound energyValueRegistryNBT;
|
||||
|
||||
public MessageEnergyValueSync()
|
||||
public MessageSyncEnergyValues()
|
||||
{
|
||||
}
|
||||
|
||||
public MessageEnergyValueSync(EnergyValueRegistry energyValueRegistry)
|
||||
public MessageSyncEnergyValues(EnergyValueRegistry energyValueRegistry)
|
||||
{
|
||||
energyValueRegistryNBT = new NBTTagCompound();
|
||||
energyValueRegistry.writeToNBT(energyValueRegistryNBT);
|
||||
|
@ -94,7 +94,7 @@ public class MessageEnergyValueSync implements IMessage, IMessageHandler<Message
|
|||
* @return an optional return message
|
||||
*/
|
||||
@Override
|
||||
public IMessage onMessage(MessageEnergyValueSync message, MessageContext ctx)
|
||||
public IMessage onMessage(MessageSyncEnergyValues message, MessageContext ctx)
|
||||
{
|
||||
if (message.energyValueRegistryNBT != null)
|
||||
{
|
|
@ -101,12 +101,13 @@ container.ee3:alchemicalTome=Tome of Alchemical Knowledge [WIP]
|
|||
container.ee3:transmutationSquare=Transmutation Square [WIP]
|
||||
|
||||
# Commands
|
||||
command.ee3.usage=/ee3 <set-energy-value|sync-energy-values>
|
||||
command.ee3.set-energy-value.usage=/ee3 set-energy-value <item> <value> [data] [dataTag]
|
||||
command.ee3.set-energy-value.tagError=Data tag parsing failed: %s
|
||||
command.ee3.sync-energy-values.usage=/ee3 sync-energy-values <self|all>
|
||||
command.ee3.sync-energy-values.self.success=Successfully synchronized EnergyValues with the server
|
||||
command.ee3.sync-energy-values.all.success=%s synchronized all EnergyValues with all players on the server
|
||||
command.ee3.usage=/ee3 <set-value|sync-values>
|
||||
command.ee3.set-value.usage=/ee3 set-value <item> <value> [data] [dataTag]
|
||||
command.ee3.set-value.success=%s set the EnergyValue of %s to %s
|
||||
command.ee3.set-value.tagError=Data tag parsing failed: %s
|
||||
command.ee3.sync-values.usage=/ee3 sync-values <self|all>
|
||||
command.ee3.sync-values.self.success=Successfully synchronized EnergyValues with the server
|
||||
command.ee3.sync-values.all.success=%s synchronized all EnergyValues with all players on the server
|
||||
|
||||
# Tooltips
|
||||
tooltip.ee3:upgradesPrefix=Upgrades (Alchemical) Chests
|
||||
|
|
Loading…
Reference in a new issue