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())
{
drawTooltip(mouseX, mouseY, items.get(hoveringSlotId).toItemStack());
drawTooltip(mouseX, mouseY, getItems().get(hoveringSlotId).toItemStack());
}
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.util.BlockPos;
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;
public class MessageCompareUpdate implements IMessage, IMessageHandler<MessageCompareUpdate, IMessage>
public class MessageCompareUpdate extends MessageHandlerPlayerToServer<MessageCompareUpdate> implements IMessage
{
private int x;
private int y;
@@ -47,17 +45,13 @@ public class MessageCompareUpdate implements IMessage, IMessageHandler<MessageCo
}
@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));
if (tile instanceof ICompareSetting)
{
((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.util.BlockPos;
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;
public class MessageDetectorAmountUpdate implements IMessage, IMessageHandler<MessageDetectorAmountUpdate, IMessage>
public class MessageDetectorAmountUpdate extends MessageHandlerPlayerToServer<MessageDetectorAmountUpdate> implements IMessage
{
private int x;
private int y;
@@ -47,17 +45,13 @@ public class MessageDetectorAmountUpdate implements IMessage, IMessageHandler<Me
}
@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));
if (tile instanceof TileDetector && message.amount >= 0)
{
((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.util.BlockPos;
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;
public class MessageDetectorModeUpdate implements IMessage, IMessageHandler<MessageDetectorModeUpdate, IMessage>
public class MessageDetectorModeUpdate extends MessageHandlerPlayerToServer<MessageDetectorModeUpdate> implements IMessage
{
private int x;
private int y;
@@ -43,10 +41,8 @@ public class MessageDetectorModeUpdate implements IMessage, IMessageHandler<Mess
}
@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));
if (tile instanceof TileDetector)
@@ -66,7 +62,5 @@ public class MessageDetectorModeUpdate implements IMessage, IMessageHandler<Mess
break;
}
}
return null;
}
}

View File

@@ -6,11 +6,9 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
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;
public class MessageGridCraftingClear implements IMessage, IMessageHandler<MessageGridCraftingClear, IMessage>
public class MessageGridCraftingClear extends MessageHandlerPlayerToServer<MessageGridCraftingClear> implements IMessage
{
private int x;
private int y;
@@ -44,10 +42,8 @@ public class MessageGridCraftingClear implements IMessage, IMessageHandler<Messa
}
@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));
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
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));
@@ -72,6 +77,8 @@ public class MessageGridCraftingUpdate implements IMessage, IMessageHandler<Mess
((TileGrid) tile).getCraftingMatrix().setInventorySlotContents(i, message.craftingMatrix[i]);
}
}
}
});
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.util.BlockPos;
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;
public class MessageImporterModeUpdate implements IMessage, IMessageHandler<MessageImporterModeUpdate, IMessage>
public class MessageImporterModeUpdate extends MessageHandlerPlayerToServer<MessageImporterModeUpdate> implements IMessage
{
private int x;
private int y;
@@ -43,10 +41,8 @@ public class MessageImporterModeUpdate implements IMessage, IMessageHandler<Mess
}
@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));
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);
}
return null;
}
}

View File

@@ -5,11 +5,9 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
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;
public class MessageRedstoneModeUpdate implements IMessage, IMessageHandler<MessageRedstoneModeUpdate, IMessage>
public class MessageRedstoneModeUpdate extends MessageHandlerPlayerToServer<MessageRedstoneModeUpdate> implements IMessage
{
private int x;
private int y;
@@ -43,10 +41,8 @@ public class MessageRedstoneModeUpdate implements IMessage, IMessageHandler<Mess
}
@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));
if (tile instanceof IRedstoneModeSetting)
@@ -55,7 +51,5 @@ public class MessageRedstoneModeUpdate implements IMessage, IMessageHandler<Mess
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.util.BlockPos;
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.tile.TileController;
public class MessageStoragePull implements IMessage, IMessageHandler<MessageStoragePull, IMessage>
public class MessageStoragePull extends MessageHandlerPlayerToServer<MessageStoragePull> implements IMessage
{
private int x;
private int y;
@@ -57,10 +55,8 @@ public class MessageStoragePull implements IMessage, IMessageHandler<MessageStor
}
@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));
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.util.BlockPos;
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;
public class MessageStoragePush implements IMessage, IMessageHandler<MessageStoragePush, IMessage>
public class MessageStoragePush extends MessageHandlerPlayerToServer<MessageStoragePush> implements IMessage
{
private int x;
private int y;
@@ -52,10 +50,8 @@ public class MessageStoragePush implements IMessage, IMessageHandler<MessageStor
}
@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));
if (tile instanceof TileController)
@@ -105,12 +101,9 @@ public class MessageStoragePush implements IMessage, IMessageHandler<MessageStor
else
{
player.inventory.setInventorySlotContents(message.slot, null);
player.openContainer.detectAndSendChanges();
}
}
}
}
return null;
}
}