fix network packet so that they're threaded

This commit is contained in:
Raoul Van den Berge
2015-12-26 02:18:55 +01:00
parent f4ccd1e2ec
commit 9146a566b2
11 changed files with 59 additions and 73 deletions

View File

@@ -200,7 +200,7 @@ public class GuiGrid extends GuiBase
if (isHoveringOverValidSlot()) if (isHoveringOverValidSlot())
{ {
drawTooltip(mouseX, mouseY, items.get(hoveringSlotId).toItemStack()); drawTooltip(mouseX, mouseY, getItems().get(hoveringSlotId).toItemStack());
} }
if (grid.getType() == EnumGridType.CRAFTING && isHoveringOverClear(mouseX, mouseY)) if (grid.getType() == EnumGridType.CRAFTING && isHoveringOverClear(mouseX, mouseY))

View File

@@ -5,11 +5,9 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import storagecraft.tile.ICompareSetting; import storagecraft.tile.ICompareSetting;
public class MessageCompareUpdate implements IMessage, IMessageHandler<MessageCompareUpdate, IMessage> public class MessageCompareUpdate extends MessageHandlerPlayerToServer<MessageCompareUpdate> implements IMessage
{ {
private int x; private int x;
private int y; private int y;
@@ -47,17 +45,13 @@ public class MessageCompareUpdate implements IMessage, IMessageHandler<MessageCo
} }
@Override @Override
public IMessage onMessage(MessageCompareUpdate message, MessageContext context) public void handle(MessageCompareUpdate message, EntityPlayerMP player)
{ {
EntityPlayerMP player = context.getServerHandler().playerEntity;
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
if (tile instanceof ICompareSetting) if (tile instanceof ICompareSetting)
{ {
((ICompareSetting) tile).setCompare(message.compare); ((ICompareSetting) tile).setCompare(message.compare);
} }
return null;
} }
} }

View File

@@ -5,11 +5,9 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import storagecraft.tile.TileDetector; import storagecraft.tile.TileDetector;
public class MessageDetectorAmountUpdate implements IMessage, IMessageHandler<MessageDetectorAmountUpdate, IMessage> public class MessageDetectorAmountUpdate extends MessageHandlerPlayerToServer<MessageDetectorAmountUpdate> implements IMessage
{ {
private int x; private int x;
private int y; private int y;
@@ -47,17 +45,13 @@ public class MessageDetectorAmountUpdate implements IMessage, IMessageHandler<Me
} }
@Override @Override
public IMessage onMessage(MessageDetectorAmountUpdate message, MessageContext context) public void handle(MessageDetectorAmountUpdate message, EntityPlayerMP player)
{ {
EntityPlayerMP player = context.getServerHandler().playerEntity;
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
if (tile instanceof TileDetector && message.amount >= 0) if (tile instanceof TileDetector && message.amount >= 0)
{ {
((TileDetector) tile).setAmount(message.amount); ((TileDetector) tile).setAmount(message.amount);
} }
return null;
} }
} }

View File

@@ -5,11 +5,9 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import storagecraft.tile.TileDetector; import storagecraft.tile.TileDetector;
public class MessageDetectorModeUpdate implements IMessage, IMessageHandler<MessageDetectorModeUpdate, IMessage> public class MessageDetectorModeUpdate extends MessageHandlerPlayerToServer<MessageDetectorModeUpdate> implements IMessage
{ {
private int x; private int x;
private int y; private int y;
@@ -43,10 +41,8 @@ public class MessageDetectorModeUpdate implements IMessage, IMessageHandler<Mess
} }
@Override @Override
public IMessage onMessage(MessageDetectorModeUpdate message, MessageContext context) public void handle(MessageDetectorModeUpdate message, EntityPlayerMP player)
{ {
EntityPlayerMP player = context.getServerHandler().playerEntity;
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
if (tile instanceof TileDetector) if (tile instanceof TileDetector)
@@ -66,7 +62,5 @@ public class MessageDetectorModeUpdate implements IMessage, IMessageHandler<Mess
break; break;
} }
} }
return null;
} }
} }

View File

@@ -6,11 +6,9 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import storagecraft.tile.TileGrid; import storagecraft.tile.TileGrid;
public class MessageGridCraftingClear implements IMessage, IMessageHandler<MessageGridCraftingClear, IMessage> public class MessageGridCraftingClear extends MessageHandlerPlayerToServer<MessageGridCraftingClear> implements IMessage
{ {
private int x; private int x;
private int y; private int y;
@@ -44,10 +42,8 @@ public class MessageGridCraftingClear implements IMessage, IMessageHandler<Messa
} }
@Override @Override
public IMessage onMessage(MessageGridCraftingClear message, MessageContext context) public void handle(MessageGridCraftingClear message, EntityPlayerMP player)
{ {
EntityPlayerMP player = context.getServerHandler().playerEntity;
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
if (tile instanceof TileGrid) if (tile instanceof TileGrid)
@@ -70,7 +66,5 @@ public class MessageGridCraftingClear implements IMessage, IMessageHandler<Messa
} }
} }
} }
return null;
} }
} }

View File

@@ -61,7 +61,12 @@ public class MessageGridCraftingUpdate implements IMessage, IMessageHandler<Mess
} }
@Override @Override
public IMessage onMessage(MessageGridCraftingUpdate message, MessageContext context) public IMessage onMessage(final MessageGridCraftingUpdate message, MessageContext context)
{
Minecraft.getMinecraft().addScheduledTask(new Runnable()
{
@Override
public void run()
{ {
TileEntity tile = Minecraft.getMinecraft().theWorld.getTileEntity(new BlockPos(message.x, message.y, message.z)); TileEntity tile = Minecraft.getMinecraft().theWorld.getTileEntity(new BlockPos(message.x, message.y, message.z));
@@ -72,6 +77,8 @@ public class MessageGridCraftingUpdate implements IMessage, IMessageHandler<Mess
((TileGrid) tile).getCraftingMatrix().setInventorySlotContents(i, message.craftingMatrix[i]); ((TileGrid) tile).getCraftingMatrix().setInventorySlotContents(i, message.craftingMatrix[i]);
} }
} }
}
});
return null; return null;
} }

View File

@@ -0,0 +1,28 @@
package storagecraft.network;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
public abstract class MessageHandlerPlayerToServer<T extends IMessage> implements IMessageHandler<T, IMessage>
{
@Override
public IMessage onMessage(final T message, MessageContext context)
{
final EntityPlayerMP player = context.getServerHandler().playerEntity;
player.getServerForPlayer().addScheduledTask(new Runnable()
{
@Override
public void run()
{
handle(message, player);
}
});
return null;
}
public abstract void handle(T message, EntityPlayerMP player);
}

View File

@@ -5,11 +5,9 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import storagecraft.tile.TileImporter; import storagecraft.tile.TileImporter;
public class MessageImporterModeUpdate implements IMessage, IMessageHandler<MessageImporterModeUpdate, IMessage> public class MessageImporterModeUpdate extends MessageHandlerPlayerToServer<MessageImporterModeUpdate> implements IMessage
{ {
private int x; private int x;
private int y; private int y;
@@ -43,10 +41,8 @@ public class MessageImporterModeUpdate implements IMessage, IMessageHandler<Mess
} }
@Override @Override
public IMessage onMessage(MessageImporterModeUpdate message, MessageContext context) public void handle(MessageImporterModeUpdate message, EntityPlayerMP player)
{ {
EntityPlayerMP player = context.getServerHandler().playerEntity;
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
if (tile instanceof TileImporter) if (tile instanceof TileImporter)
@@ -55,7 +51,5 @@ public class MessageImporterModeUpdate implements IMessage, IMessageHandler<Mess
importer.setMode(importer.getMode() == TileImporter.MODE_WHITELIST ? TileImporter.MODE_BLACKLIST : TileImporter.MODE_WHITELIST); importer.setMode(importer.getMode() == TileImporter.MODE_WHITELIST ? TileImporter.MODE_BLACKLIST : TileImporter.MODE_WHITELIST);
} }
return null;
} }
} }

View File

@@ -5,11 +5,9 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import storagecraft.tile.IRedstoneModeSetting; import storagecraft.tile.IRedstoneModeSetting;
public class MessageRedstoneModeUpdate implements IMessage, IMessageHandler<MessageRedstoneModeUpdate, IMessage> public class MessageRedstoneModeUpdate extends MessageHandlerPlayerToServer<MessageRedstoneModeUpdate> implements IMessage
{ {
private int x; private int x;
private int y; private int y;
@@ -43,10 +41,8 @@ public class MessageRedstoneModeUpdate implements IMessage, IMessageHandler<Mess
} }
@Override @Override
public IMessage onMessage(MessageRedstoneModeUpdate message, MessageContext context) public void handle(MessageRedstoneModeUpdate message, EntityPlayerMP player)
{ {
EntityPlayerMP player = context.getServerHandler().playerEntity;
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
if (tile instanceof IRedstoneModeSetting) if (tile instanceof IRedstoneModeSetting)
@@ -55,7 +51,5 @@ public class MessageRedstoneModeUpdate implements IMessage, IMessageHandler<Mess
setting.setRedstoneMode(setting.getRedstoneMode().next()); setting.setRedstoneMode(setting.getRedstoneMode().next());
} }
return null;
} }
} }

View File

@@ -6,12 +6,10 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import storagecraft.storage.StorageItem; import storagecraft.storage.StorageItem;
import storagecraft.tile.TileController; import storagecraft.tile.TileController;
public class MessageStoragePull implements IMessage, IMessageHandler<MessageStoragePull, IMessage> public class MessageStoragePull extends MessageHandlerPlayerToServer<MessageStoragePull> implements IMessage
{ {
private int x; private int x;
private int y; private int y;
@@ -57,10 +55,8 @@ public class MessageStoragePull implements IMessage, IMessageHandler<MessageStor
} }
@Override @Override
public IMessage onMessage(MessageStoragePull message, MessageContext context) public void handle(MessageStoragePull message, EntityPlayerMP player)
{ {
EntityPlayerMP player = context.getServerHandler().playerEntity;
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
if (tile instanceof TileController) if (tile instanceof TileController)
@@ -102,7 +98,5 @@ public class MessageStoragePull implements IMessage, IMessageHandler<MessageStor
} }
} }
} }
return null;
} }
} }

View File

@@ -6,11 +6,9 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import storagecraft.tile.TileController; import storagecraft.tile.TileController;
public class MessageStoragePush implements IMessage, IMessageHandler<MessageStoragePush, IMessage> public class MessageStoragePush extends MessageHandlerPlayerToServer<MessageStoragePush> implements IMessage
{ {
private int x; private int x;
private int y; private int y;
@@ -52,10 +50,8 @@ public class MessageStoragePush implements IMessage, IMessageHandler<MessageStor
} }
@Override @Override
public IMessage onMessage(MessageStoragePush message, MessageContext context) public void handle(MessageStoragePush message, EntityPlayerMP player)
{ {
EntityPlayerMP player = context.getServerHandler().playerEntity;
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
if (tile instanceof TileController) if (tile instanceof TileController)
@@ -105,12 +101,9 @@ public class MessageStoragePush implements IMessage, IMessageHandler<MessageStor
else else
{ {
player.inventory.setInventorySlotContents(message.slot, null); player.inventory.setInventorySlotContents(message.slot, null);
player.openContainer.detectAndSendChanges();
} }
} }
} }
} }
return null;
} }
} }