2016-05-25 05:28:04 +02:00
|
|
|
package com.pahimar.ee3.network.message;
|
|
|
|
|
2016-05-25 16:17:40 +02:00
|
|
|
import com.google.gson.JsonParseException;
|
|
|
|
import com.pahimar.ee3.api.blacklist.BlacklistRegistryProxy;
|
|
|
|
import com.pahimar.ee3.blacklist.BlacklistRegistry;
|
|
|
|
import com.pahimar.ee3.exchange.WrappedStack;
|
|
|
|
import com.pahimar.ee3.util.CompressionHelper;
|
|
|
|
import com.pahimar.ee3.util.LogHelper;
|
|
|
|
import com.pahimar.ee3.util.SerializationHelper;
|
2016-05-25 05:28:04 +02:00
|
|
|
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;
|
|
|
|
|
2016-05-25 16:17:40 +02:00
|
|
|
import static com.pahimar.ee3.api.blacklist.BlacklistRegistryProxy.Blacklist;
|
|
|
|
|
2016-05-25 05:28:04 +02:00
|
|
|
public class MessageSetBlacklistEntry implements IMessage, IMessageHandler<MessageSetBlacklistEntry, IMessage> {
|
|
|
|
|
2016-05-25 16:17:40 +02:00
|
|
|
public Blacklist blacklist;
|
|
|
|
public boolean isBlacklistAction;
|
|
|
|
public WrappedStack wrappedStack;
|
|
|
|
|
2016-05-25 05:28:04 +02:00
|
|
|
public MessageSetBlacklistEntry() {
|
|
|
|
}
|
|
|
|
|
2016-05-25 16:20:04 +02:00
|
|
|
public MessageSetBlacklistEntry(Object object, Blacklist blacklist) {
|
|
|
|
this(object, blacklist, true);
|
|
|
|
}
|
|
|
|
|
2016-05-25 16:17:40 +02:00
|
|
|
public MessageSetBlacklistEntry(Object object, Blacklist blacklist, boolean isBlacklistAction) {
|
|
|
|
|
|
|
|
if (WrappedStack.canBeWrapped(object)) {
|
|
|
|
this.wrappedStack = WrappedStack.wrap(object, 1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
wrappedStack = null;
|
|
|
|
}
|
|
|
|
this.blacklist = blacklist;
|
|
|
|
this.isBlacklistAction = isBlacklistAction;
|
|
|
|
}
|
|
|
|
|
2016-05-25 05:28:04 +02:00
|
|
|
@Override
|
|
|
|
public void fromBytes(ByteBuf buf) {
|
2016-05-25 16:17:40 +02:00
|
|
|
|
|
|
|
int blacklistOrdinal = buf.readInt();
|
|
|
|
|
|
|
|
if (blacklistOrdinal >= 0) {
|
|
|
|
|
|
|
|
if (blacklistOrdinal == 0) {
|
|
|
|
blacklist = Blacklist.KNOWLEDGE;
|
|
|
|
}
|
|
|
|
else if (blacklistOrdinal == 1) {
|
|
|
|
blacklist = Blacklist.EXCHANGE;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
blacklist = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (blacklist != null) {
|
|
|
|
|
|
|
|
isBlacklistAction = buf.readBoolean();
|
|
|
|
int compressedJsonLength = buf.readInt();
|
|
|
|
|
|
|
|
if (compressedJsonLength != 0) {
|
|
|
|
|
|
|
|
byte[] compressedWrappedStack = buf.readBytes(compressedJsonLength).array();
|
|
|
|
|
|
|
|
if (compressedWrappedStack != null) {
|
|
|
|
|
|
|
|
String jsonWrappedStack = CompressionHelper.decompress(compressedWrappedStack);
|
|
|
|
|
|
|
|
try {
|
|
|
|
wrappedStack = SerializationHelper.GSON.fromJson(jsonWrappedStack, WrappedStack.class);
|
|
|
|
}
|
|
|
|
catch (JsonParseException e) {
|
|
|
|
LogHelper.warn("Failed to receive {} blacklist data from server", blacklist);
|
|
|
|
wrappedStack = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
wrappedStack = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
wrappedStack = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
blacklist = null;
|
|
|
|
isBlacklistAction = false;
|
|
|
|
wrappedStack = null;
|
|
|
|
}
|
2016-05-25 05:28:04 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void toBytes(ByteBuf buf) {
|
2016-05-25 16:17:40 +02:00
|
|
|
|
|
|
|
if (blacklist != null) {
|
|
|
|
|
|
|
|
buf.writeBoolean(isBlacklistAction);
|
|
|
|
|
|
|
|
if (wrappedStack != null && wrappedStack.getWrappedObject() != null) {
|
|
|
|
|
|
|
|
byte[] compressedWrappedStack = CompressionHelper.compress(SerializationHelper.GSON.toJson(wrappedStack));
|
|
|
|
buf.writeInt(compressedWrappedStack.length);
|
|
|
|
buf.writeBytes(compressedWrappedStack);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
buf.writeInt(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
buf.writeInt(-1);
|
|
|
|
}
|
2016-05-25 05:28:04 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public IMessage onMessage(MessageSetBlacklistEntry message, MessageContext ctx) {
|
|
|
|
|
2016-05-25 16:17:40 +02:00
|
|
|
if (message.blacklist != null && message.wrappedStack != null) {
|
|
|
|
|
|
|
|
if (message.isBlacklistAction) {
|
|
|
|
BlacklistRegistryProxy.addToBlacklist(message.wrappedStack, message.blacklist);
|
|
|
|
BlacklistRegistry.INSTANCE.setShouldSave(false);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
BlacklistRegistryProxy.removeFromBlacklist(message.wrappedStack, message.blacklist);
|
|
|
|
BlacklistRegistry.INSTANCE.setShouldSave(false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-05-25 05:28:04 +02:00
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|