Fix server crash

This commit is contained in:
raoulvdberge
2019-10-28 17:29:58 +01:00
parent 31e2561cb8
commit 4ffab370c6
4 changed files with 50 additions and 26 deletions

View File

@@ -0,0 +1,29 @@
package com.raoulvdberge.refinedstorage.network;
import com.raoulvdberge.refinedstorage.network.grid.GridCraftingPreviewResponseMessage;
import com.raoulvdberge.refinedstorage.network.grid.GridCraftingStartResponseMessage;
import com.raoulvdberge.refinedstorage.screen.grid.CraftingPreviewScreen;
import com.raoulvdberge.refinedstorage.screen.grid.CraftingSettingsScreen;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.text.TranslationTextComponent;
public class ClientProxy {
public static void onReceivedCraftingPreviewResponseMessage(GridCraftingPreviewResponseMessage message) {
Screen screen = Minecraft.getInstance().currentScreen;
if (screen instanceof CraftingSettingsScreen) {
screen = ((CraftingSettingsScreen) screen).getParent();
}
Minecraft.getInstance().displayGuiScreen(new CraftingPreviewScreen(screen, message.getStacks(), message.getId(), message.getQuantity(), message.isFluids(), new TranslationTextComponent("gui.refinedstorage.crafting_preview")));
}
public static void onReceivedCraftingStartResponseMessage(GridCraftingStartResponseMessage message) {
Screen screen = Minecraft.getInstance().currentScreen;
if (screen instanceof CraftingSettingsScreen) {
((CraftingSettingsScreen) screen).close();
}
}
}

View File

@@ -2,13 +2,9 @@ package com.raoulvdberge.refinedstorage.network.grid;
import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreviewElement;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.screen.grid.CraftingPreviewScreen;
import com.raoulvdberge.refinedstorage.screen.grid.CraftingSettingsScreen;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import com.raoulvdberge.refinedstorage.network.ClientProxy;
import net.minecraft.network.PacketBuffer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraftforge.fml.network.NetworkEvent;
import java.util.LinkedList;
@@ -29,6 +25,22 @@ public class GridCraftingPreviewResponseMessage {
this.fluids = fluids;
}
public List<ICraftingPreviewElement> getStacks() {
return stacks;
}
public UUID getId() {
return id;
}
public int getQuantity() {
return quantity;
}
public boolean isFluids() {
return fluids;
}
public static GridCraftingPreviewResponseMessage decode(PacketBuffer buf) {
UUID id = buf.readUniqueId();
int quantity = buf.readInt();
@@ -59,15 +71,7 @@ public class GridCraftingPreviewResponseMessage {
}
public static void handle(GridCraftingPreviewResponseMessage message, Supplier<NetworkEvent.Context> ctx) {
ctx.get().enqueueWork(() -> {
Screen screen = Minecraft.getInstance().currentScreen;
if (screen instanceof CraftingSettingsScreen) {
screen = ((CraftingSettingsScreen) screen).getParent();
}
Minecraft.getInstance().displayGuiScreen(new CraftingPreviewScreen(screen, message.stacks, message.id, message.quantity, message.fluids, new TranslationTextComponent("gui.refinedstorage.crafting_preview")));
});
ctx.get().enqueueWork(() -> ClientProxy.onReceivedCraftingPreviewResponseMessage(message));
ctx.get().setPacketHandled(true);
}

View File

@@ -1,8 +1,6 @@
package com.raoulvdberge.refinedstorage.network.grid;
import com.raoulvdberge.refinedstorage.screen.grid.CraftingSettingsScreen;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import com.raoulvdberge.refinedstorage.network.ClientProxy;
import net.minecraft.network.PacketBuffer;
import net.minecraftforge.fml.network.NetworkEvent;
@@ -17,14 +15,7 @@ public class GridCraftingStartResponseMessage {
}
public static void handle(GridCraftingStartResponseMessage message, Supplier<NetworkEvent.Context> ctx) {
ctx.get().enqueueWork(() -> {
Screen screen = Minecraft.getInstance().currentScreen;
if (screen instanceof CraftingSettingsScreen) {
((CraftingSettingsScreen) screen).close();
}
});
ctx.get().enqueueWork(() -> ClientProxy.onReceivedCraftingStartResponseMessage(message));
ctx.get().setPacketHandled(true);
}
}

View File

@@ -316,7 +316,7 @@ public final class StackUtils {
if (tag.contains(NBT_ITEM_TYPE)) {
item = Item.getItemById(tag.getInt(NBT_ITEM_TYPE));
if (item == null) {
if (item == Items.AIR) {
LOGGER.warn("Could not deserialize item from numerical ID, it no longer exists: " + tag.getInt(NBT_ITEM_TYPE));
}
} else if (tag.contains(NBT_ITEM_ID)) {