|
@@ -25,7 +25,6 @@ package me.shedaniel.rei;
|
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
import com.google.common.collect.Lists;
|
|
import io.netty.buffer.Unpooled;
|
|
import io.netty.buffer.Unpooled;
|
|
-import me.shedaniel.math.api.Executor;
|
|
|
|
import me.shedaniel.rei.server.InputSlotCrafter;
|
|
import me.shedaniel.rei.server.InputSlotCrafter;
|
|
import net.fabricmc.api.ModInitializer;
|
|
import net.fabricmc.api.ModInitializer;
|
|
import net.fabricmc.fabric.api.network.ServerSidePacketRegistry;
|
|
import net.fabricmc.fabric.api.network.ServerSidePacketRegistry;
|
|
@@ -57,93 +56,91 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void onInitialize() {
|
|
public void onInitialize() {
|
|
- Executor.run(() -> () -> {
|
|
|
|
- FabricLoader.getInstance().getEntrypoints("rei_containers", Runnable.class).forEach(Runnable::run);
|
|
|
|
- ServerSidePacketRegistry.INSTANCE.register(DELETE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
|
|
|
|
- ServerPlayer player = (ServerPlayer) packetContext.getPlayer();
|
|
|
|
- if (player.getServer().getProfilePermissions(player.getGameProfile()) < player.getServer().getOperatorUserPermissionLevel()) {
|
|
|
|
- player.displayClientMessage(new TranslatableComponent("text.rei.no_permission_cheat").withStyle(ChatFormatting.RED), false);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- if (!player.inventory.getCarried().isEmpty()) {
|
|
|
|
- player.inventory.setCarried(ItemStack.EMPTY);
|
|
|
|
- player.broadcastCarriedItem();
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
|
|
|
|
- ServerPlayer player = (ServerPlayer) packetContext.getPlayer();
|
|
|
|
- if (player.getServer().getProfilePermissions(player.getGameProfile()) < player.getServer().getOperatorUserPermissionLevel()) {
|
|
|
|
- player.displayClientMessage(new TranslatableComponent("text.rei.no_permission_cheat").withStyle(ChatFormatting.RED), false);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- ItemStack stack = packetByteBuf.readItem();
|
|
|
|
- if (player.inventory.add(stack.copy())) {
|
|
|
|
- ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(stack.copy()).writeUtf(player.getScoreboardName(), 32767));
|
|
|
|
- } else
|
|
|
|
- player.displayClientMessage(new TranslatableComponent("text.rei.failed_cheat_items"), false);
|
|
|
|
- });
|
|
|
|
- ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_GRAB_PACKET, (packetContext, packetByteBuf) -> {
|
|
|
|
- ServerPlayer player = (ServerPlayer) packetContext.getPlayer();
|
|
|
|
- if (player.getServer().getProfilePermissions(player.getGameProfile()) < player.getServer().getOperatorUserPermissionLevel()) {
|
|
|
|
- player.displayClientMessage(new TranslatableComponent("text.rei.no_permission_cheat").withStyle(ChatFormatting.RED), false);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- Inventory inventory = player.inventory;
|
|
|
|
- ItemStack itemStack = packetByteBuf.readItem();
|
|
|
|
- ItemStack stack = itemStack.copy();
|
|
|
|
- if (!inventory.getCarried().isEmpty() && ItemStack.isSameIgnoreDurability(inventory.getCarried(), stack) && ItemStack.tagMatches(inventory.getCarried(), stack)) {
|
|
|
|
- stack.setCount(Mth.clamp(stack.getCount() + inventory.getCarried().getCount(), 1, stack.getMaxStackSize()));
|
|
|
|
- } else if (!inventory.getCarried().isEmpty()) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- inventory.setCarried(stack.copy());
|
|
|
|
|
|
+ FabricLoader.getInstance().getEntrypoints("rei_containers", Runnable.class).forEach(Runnable::run);
|
|
|
|
+ ServerSidePacketRegistry.INSTANCE.register(DELETE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
|
|
|
|
+ ServerPlayer player = (ServerPlayer) packetContext.getPlayer();
|
|
|
|
+ if (player.getServer().getProfilePermissions(player.getGameProfile()) < player.getServer().getOperatorUserPermissionLevel()) {
|
|
|
|
+ player.displayClientMessage(new TranslatableComponent("text.rei.no_permission_cheat").withStyle(ChatFormatting.RED), false);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (!player.inventory.getCarried().isEmpty()) {
|
|
|
|
+ player.inventory.setCarried(ItemStack.EMPTY);
|
|
player.broadcastCarriedItem();
|
|
player.broadcastCarriedItem();
|
|
- ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(itemStack.copy()).writeUtf(player.getScoreboardName(), 32767));
|
|
|
|
- });
|
|
|
|
- ServerSidePacketRegistry.INSTANCE.register(MOVE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
|
|
|
|
- ResourceLocation category = packetByteBuf.readResourceLocation();
|
|
|
|
- ServerPlayer player = (ServerPlayer) packetContext.getPlayer();
|
|
|
|
- AbstractContainerMenu container = player.containerMenu;
|
|
|
|
- InventoryMenu playerContainer = player.inventoryMenu;
|
|
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
|
|
|
|
+ ServerPlayer player = (ServerPlayer) packetContext.getPlayer();
|
|
|
|
+ if (player.getServer().getProfilePermissions(player.getGameProfile()) < player.getServer().getOperatorUserPermissionLevel()) {
|
|
|
|
+ player.displayClientMessage(new TranslatableComponent("text.rei.no_permission_cheat").withStyle(ChatFormatting.RED), false);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ ItemStack stack = packetByteBuf.readItem();
|
|
|
|
+ if (player.inventory.add(stack.copy())) {
|
|
|
|
+ ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(stack.copy()).writeUtf(player.getScoreboardName(), 32767));
|
|
|
|
+ } else
|
|
|
|
+ player.displayClientMessage(new TranslatableComponent("text.rei.failed_cheat_items"), false);
|
|
|
|
+ });
|
|
|
|
+ ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_GRAB_PACKET, (packetContext, packetByteBuf) -> {
|
|
|
|
+ ServerPlayer player = (ServerPlayer) packetContext.getPlayer();
|
|
|
|
+ if (player.getServer().getProfilePermissions(player.getGameProfile()) < player.getServer().getOperatorUserPermissionLevel()) {
|
|
|
|
+ player.displayClientMessage(new TranslatableComponent("text.rei.no_permission_cheat").withStyle(ChatFormatting.RED), false);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Inventory inventory = player.inventory;
|
|
|
|
+ ItemStack itemStack = packetByteBuf.readItem();
|
|
|
|
+ ItemStack stack = itemStack.copy();
|
|
|
|
+ if (!inventory.getCarried().isEmpty() && ItemStack.isSameIgnoreDurability(inventory.getCarried(), stack) && ItemStack.tagMatches(inventory.getCarried(), stack)) {
|
|
|
|
+ stack.setCount(Mth.clamp(stack.getCount() + inventory.getCarried().getCount(), 1, stack.getMaxStackSize()));
|
|
|
|
+ } else if (!inventory.getCarried().isEmpty()) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ inventory.setCarried(stack.copy());
|
|
|
|
+ player.broadcastCarriedItem();
|
|
|
|
+ ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(itemStack.copy()).writeUtf(player.getScoreboardName(), 32767));
|
|
|
|
+ });
|
|
|
|
+ ServerSidePacketRegistry.INSTANCE.register(MOVE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
|
|
|
|
+ ResourceLocation category = packetByteBuf.readResourceLocation();
|
|
|
|
+ ServerPlayer player = (ServerPlayer) packetContext.getPlayer();
|
|
|
|
+ AbstractContainerMenu container = player.containerMenu;
|
|
|
|
+ InventoryMenu playerContainer = player.inventoryMenu;
|
|
|
|
+ try {
|
|
|
|
+ boolean shift = packetByteBuf.readBoolean();
|
|
|
|
+ NonNullList<List<ItemStack>> input = NonNullList.create();
|
|
|
|
+ int mapSize = packetByteBuf.readInt();
|
|
|
|
+ for (int i = 0; i < mapSize; i++) {
|
|
|
|
+ List<ItemStack> list = Lists.newArrayList();
|
|
|
|
+ int count = packetByteBuf.readInt();
|
|
|
|
+ for (int j = 0; j < count; j++) {
|
|
|
|
+ list.add(packetByteBuf.readItem());
|
|
|
|
+ }
|
|
|
|
+ input.add(list);
|
|
|
|
+ }
|
|
try {
|
|
try {
|
|
- boolean shift = packetByteBuf.readBoolean();
|
|
|
|
- NonNullList<List<ItemStack>> input = NonNullList.create();
|
|
|
|
- int mapSize = packetByteBuf.readInt();
|
|
|
|
- for (int i = 0; i < mapSize; i++) {
|
|
|
|
- List<ItemStack> list = Lists.newArrayList();
|
|
|
|
- int count = packetByteBuf.readInt();
|
|
|
|
- for (int j = 0; j < count; j++) {
|
|
|
|
- list.add(packetByteBuf.readItem());
|
|
|
|
|
|
+ InputSlotCrafter.start(category, container, player, input, shift);
|
|
|
|
+ } catch (InputSlotCrafter.NotEnoughMaterialsException e) {
|
|
|
|
+ if (!(container instanceof RecipeBookMenu))
|
|
|
|
+ return;
|
|
|
|
+ FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer());
|
|
|
|
+ buf.writeInt(input.size());
|
|
|
|
+ for (List<ItemStack> stacks : input) {
|
|
|
|
+ buf.writeInt(stacks.size());
|
|
|
|
+ for (ItemStack stack : stacks) {
|
|
|
|
+ buf.writeItem(stack);
|
|
}
|
|
}
|
|
- input.add(list);
|
|
|
|
}
|
|
}
|
|
- try {
|
|
|
|
- InputSlotCrafter.start(category, container, player, input, shift);
|
|
|
|
- } catch (InputSlotCrafter.NotEnoughMaterialsException e) {
|
|
|
|
- if (!(container instanceof RecipeBookMenu))
|
|
|
|
- return;
|
|
|
|
- FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer());
|
|
|
|
- buf.writeInt(input.size());
|
|
|
|
- for (List<ItemStack> stacks : input) {
|
|
|
|
- buf.writeInt(stacks.size());
|
|
|
|
- for (ItemStack stack : stacks) {
|
|
|
|
- buf.writeItem(stack);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (ServerSidePacketRegistry.INSTANCE.canPlayerReceive(player, NOT_ENOUGH_ITEMS_PACKET)) {
|
|
|
|
- ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, NOT_ENOUGH_ITEMS_PACKET, buf);
|
|
|
|
- }
|
|
|
|
- } catch (IllegalStateException e) {
|
|
|
|
- player.sendMessage(new TranslatableComponent(e.getMessage()).withStyle(ChatFormatting.RED), Util.NIL_UUID);
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- player.sendMessage(new TranslatableComponent("error.rei.internal.error", e.getMessage()).withStyle(ChatFormatting.RED), Util.NIL_UUID);
|
|
|
|
- e.printStackTrace();
|
|
|
|
|
|
+ if (ServerSidePacketRegistry.INSTANCE.canPlayerReceive(player, NOT_ENOUGH_ITEMS_PACKET)) {
|
|
|
|
+ ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, NOT_ENOUGH_ITEMS_PACKET, buf);
|
|
}
|
|
}
|
|
|
|
+ } catch (IllegalStateException e) {
|
|
|
|
+ player.sendMessage(new TranslatableComponent(e.getMessage()).withStyle(ChatFormatting.RED), Util.NIL_UUID);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
|
+ player.sendMessage(new TranslatableComponent("error.rei.internal.error", e.getMessage()).withStyle(ChatFormatting.RED), Util.NIL_UUID);
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
- });
|
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|