Fix server crash
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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)) {
|
||||
|
Reference in New Issue
Block a user