Requesting packet stuff

This commit is contained in:
Raoul Van den Berge
2016-04-10 21:02:18 +02:00
parent e1e5683637
commit cc8569913c
11 changed files with 162 additions and 6 deletions

View File

@@ -1,20 +1,29 @@
package refinedstorage.gui;
import com.google.common.primitives.Ints;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiTextField;
import net.minecraftforge.fml.client.FMLClientHandler;
import refinedstorage.container.ContainerDummy;
import java.io.IOException;
public class GuiCraftingSettings extends GuiBase {
private GuiTextField amountField;
private GuiGrid gridGui;
private int id;
private GuiButton startButton;
public GuiCraftingSettings() {
public GuiCraftingSettings(GuiGrid gridGui, int id) {
super(new ContainerDummy(), 143, 61);
this.gridGui = gridGui;
this.id = id;
}
@Override
public void init(int x, int y) {
addButton(x + 48, y + 35, 50, 20, t("misc.refinedstorage:start"));
startButton = addButton(x + 48, y + 35, 50, 20, t("misc.refinedstorage:start"));
amountField = new GuiTextField(0, fontRendererObj, x + 39 + 1, y + 21 + 1, 69 - 6, fontRendererObj.FONT_HEIGHT);
amountField.setEnableBackgroundDrawing(false);
@@ -51,4 +60,19 @@ public class GuiCraftingSettings extends GuiBase {
super.keyTyped(character, keyCode);
}
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
super.actionPerformed(button);
if (button.id == startButton.id) {
Integer quantity = Ints.tryParse(amountField.getText());
if (quantity != null && quantity > 0) {
gridGui.getGrid().onCraftingRequested(id, quantity);
FMLClientHandler.instance().showGuiScreen(gridGui);
}
}
}
}

View File

@@ -69,6 +69,10 @@ public class GuiGrid extends GuiBase {
searchField.setFocused(true);
}
public IGrid getGrid() {
return grid;
}
@Override
public void update(int x, int y) {
items.clear();
@@ -268,7 +272,7 @@ public class GuiGrid extends GuiBase {
grid.onItemPush(-1, clickedButton == 1);
} else if (isHoveringOverItemInSlot() && container.getPlayer().inventory.getItemStack() == null) {
if (items.get(hoveringSlot).getQuantity() == 0) {
FMLCommonHandler.instance().showGuiScreen(new GuiCraftingSettings());
FMLCommonHandler.instance().showGuiScreen(new GuiCraftingSettings(this, hoveringItemId));
} else {
int flags = 0;

View File

@@ -0,0 +1,54 @@
package refinedstorage.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import refinedstorage.tile.grid.TileGrid;
public class MessageGridCraftingStart extends MessageHandlerPlayerToServer<MessageGridCraftingStart> implements IMessage {
private int gridX;
private int gridY;
private int gridZ;
private int id;
private int quantity;
public MessageGridCraftingStart() {
}
public MessageGridCraftingStart(int gridX, int gridY, int gridZ, int id, int quantity) {
this.gridX = gridX;
this.gridY = gridY;
this.gridZ = gridZ;
this.id = id;
this.quantity = quantity;
}
@Override
public void fromBytes(ByteBuf buf) {
gridX = buf.readInt();
gridY = buf.readInt();
gridZ = buf.readInt();
id = buf.readInt();
quantity = buf.readInt();
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(gridX);
buf.writeInt(gridY);
buf.writeInt(gridZ);
buf.writeInt(id);
buf.writeInt(quantity);
}
@Override
public void handle(MessageGridCraftingStart message, EntityPlayerMP player) {
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.gridX, message.gridY, message.gridZ));
if (tile instanceof TileGrid && ((TileGrid) tile).isConnected() && message.quantity > 0 && message.id >= 0) {
((TileGrid) tile).getController().onCraftingRequested(message.id, message.quantity);
}
}
}

View File

@@ -51,7 +51,7 @@ public class MessageGridStoragePull extends MessageHandlerPlayerToServer<Message
if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) {
TileController controller = ((TileGrid) tile).getController();
if (message.id < controller.getItemGroups().size()) {
if (message.id >= 0 && message.id < controller.getItemGroups().size()) {
controller.handleStoragePull(message.id, message.flags, player);
}
}

View File

@@ -0,0 +1,54 @@
package refinedstorage.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import refinedstorage.tile.TileController;
public class MessageWirelessGridCraftingStart extends MessageHandlerPlayerToServer<MessageWirelessGridCraftingStart> implements IMessage {
private int controllerX;
private int controllerY;
private int controllerZ;
private int id;
private int quantity;
public MessageWirelessGridCraftingStart() {
}
public MessageWirelessGridCraftingStart(int controllerX, int controllerY, int controllerZ, int id, int quantity) {
this.controllerX = controllerX;
this.controllerY = controllerY;
this.controllerZ = controllerZ;
this.id = id;
this.quantity = quantity;
}
@Override
public void fromBytes(ByteBuf buf) {
controllerX = buf.readInt();
controllerY = buf.readInt();
controllerZ = buf.readInt();
id = buf.readInt();
quantity = buf.readInt();
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(controllerX);
buf.writeInt(controllerY);
buf.writeInt(controllerZ);
buf.writeInt(id);
buf.writeInt(quantity);
}
@Override
public void handle(MessageWirelessGridCraftingStart message, EntityPlayerMP player) {
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ));
if (tile instanceof TileController && ((TileController) tile).isActive() && message.quantity > 0 && message.id >= 0) {
((TileController) tile).onCraftingRequested(message.id, message.quantity);
}
}
}

View File

@@ -50,7 +50,7 @@ public class MessageWirelessGridStoragePull extends MessageHandlerPlayerToServer
if (tile instanceof TileController && ((TileController) tile).isActive()) {
TileController controller = (TileController) tile;
if (message.id < controller.getItemGroups().size()) {
if (message.id >= 0 && message.id < controller.getItemGroups().size()) {
controller.handleStoragePull(message.id, message.flags, player);
}
}

View File

@@ -50,6 +50,8 @@ public class CommonProxy {
RefinedStorage.NETWORK.registerMessage(MessageWirelessGridStoragePush.class, MessageWirelessGridStoragePush.class, 17, Side.SERVER);
RefinedStorage.NETWORK.registerMessage(MessageWirelessGridStoragePull.class, MessageWirelessGridStoragePull.class, 18, Side.SERVER);
RefinedStorage.NETWORK.registerMessage(MessageGridCraftingShift.class, MessageGridCraftingShift.class, 19, Side.SERVER);
RefinedStorage.NETWORK.registerMessage(MessageGridCraftingStart.class, MessageGridCraftingStart.class, 20, Side.SERVER);
RefinedStorage.NETWORK.registerMessage(MessageWirelessGridCraftingStart.class, MessageWirelessGridCraftingStart.class, 21, Side.SERVER);
NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler());
@@ -86,13 +88,13 @@ public class CommonProxy {
registerBlock(RefinedStorageBlocks.CRAFTING_MONITOR);
registerItem(RefinedStorageItems.STORAGE_DISK);
registerItem(RefinedStorageItems.PATTERN);
registerItem(RefinedStorageItems.WIRELESS_GRID);
registerItem(RefinedStorageItems.QUARTZ_ENRICHED_IRON);
registerItem(RefinedStorageItems.CORE);
registerItem(RefinedStorageItems.SILICON);
registerItem(RefinedStorageItems.PROCESSOR);
registerItem(RefinedStorageItems.STORAGE_PART);
registerItem(RefinedStorageItems.PATTERN);
// Processors
SoldererRegistry.addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_BASIC));

View File

@@ -606,4 +606,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
group.toBytes(buf, getItemGroups().indexOf(group));
}
}
public void onCraftingRequested(int id, int quantity) {
System.out.println("Requested crafting for item " + id + " with quantity of " + quantity);
}
}

View File

@@ -27,6 +27,8 @@ public interface IGrid {
void onSearchBoxModeChanged(int searchBoxMode);
void onCraftingRequested(int id, int quantity);
IRedstoneModeConfig getRedstoneModeSetting();
boolean isConnected();

View File

@@ -16,6 +16,7 @@ import refinedstorage.block.EnumGridType;
import refinedstorage.container.ContainerGrid;
import refinedstorage.inventory.InventorySimple;
import refinedstorage.item.ItemPattern;
import refinedstorage.network.MessageGridCraftingStart;
import refinedstorage.network.MessageGridSettingsUpdate;
import refinedstorage.network.MessageGridStoragePull;
import refinedstorage.network.MessageGridStoragePush;
@@ -251,6 +252,11 @@ public class TileGrid extends TileMachine implements IGrid {
RefinedStorage.NETWORK.sendToServer(new MessageGridSettingsUpdate(this, sortingDirection, sortingType, searchBoxMode));
}
@Override
public void onCraftingRequested(int id, int quantity) {
RefinedStorage.NETWORK.sendToServer(new MessageGridCraftingStart(getPos().getX(), getPos().getY(), getPos().getZ(), id, quantity));
}
@Override
public IRedstoneModeConfig getRedstoneModeSetting() {
return this;

View File

@@ -8,6 +8,7 @@ import net.minecraft.util.math.BlockPos;
import refinedstorage.RefinedStorage;
import refinedstorage.block.EnumGridType;
import refinedstorage.item.ItemWirelessGrid;
import refinedstorage.network.MessageWirelessGridCraftingStart;
import refinedstorage.network.MessageWirelessGridSettingsUpdate;
import refinedstorage.network.MessageWirelessGridStoragePull;
import refinedstorage.network.MessageWirelessGridStoragePush;
@@ -101,6 +102,11 @@ public class WirelessGrid implements IGrid {
this.searchBoxMode = searchBoxMode;
}
@Override
public void onCraftingRequested(int id, int quantity) {
RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridCraftingStart(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack), id, quantity));
}
@Override
public IRedstoneModeConfig getRedstoneModeSetting() {
return null;