RoughlyEnoughItemsNetwork.java 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * Roughly Enough Items by Danielshe.
  3. * Licensed under the MIT License.
  4. */
  5. package me.shedaniel.rei;
  6. import io.netty.buffer.Unpooled;
  7. import net.fabricmc.api.ModInitializer;
  8. import net.fabricmc.fabric.api.network.ServerSidePacketRegistry;
  9. import net.minecraft.ChatFormat;
  10. import net.minecraft.item.ItemStack;
  11. import net.minecraft.network.chat.TranslatableComponent;
  12. import net.minecraft.server.network.ServerPlayerEntity;
  13. import net.minecraft.util.Identifier;
  14. import net.minecraft.util.PacketByteBuf;
  15. public class RoughlyEnoughItemsNetwork implements ModInitializer {
  16. public static final Identifier DELETE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "delete_item");
  17. public static final Identifier CREATE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "create_item");
  18. public static final Identifier CREATE_ITEMS_MESSAGE_PACKET = new Identifier("roughlyenoughitems", "ci_msg");
  19. @Override
  20. public void onInitialize() {
  21. ServerSidePacketRegistry.INSTANCE.register(DELETE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
  22. ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer();
  23. if (player.getServer().getPermissionLevel(player.getGameProfile()) < player.getServer().getOpPermissionLevel()) {
  24. player.addChatMessage(new TranslatableComponent("text.rei.no_permission_cheat").applyFormat(ChatFormat.RED), false);
  25. return;
  26. }
  27. if (!player.inventory.getCursorStack().isEmpty())
  28. player.inventory.setCursorStack(ItemStack.EMPTY);
  29. });
  30. ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
  31. ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer();
  32. if (player.getServer().getPermissionLevel(player.getGameProfile()) < player.getServer().getOpPermissionLevel()) {
  33. player.addChatMessage(new TranslatableComponent("text.rei.no_permission_cheat").applyFormat(ChatFormat.RED), false);
  34. return;
  35. }
  36. ItemStack stack = packetByteBuf.readItemStack();
  37. if (player.inventory.insertStack(stack.copy())) {
  38. ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new PacketByteBuf(Unpooled.buffer()).writeItemStack(stack.copy()).writeString(player.getEntityName(), 32767));
  39. } else
  40. player.addChatMessage(new TranslatableComponent("text.rei.failed_cheat_items"), false);
  41. });
  42. }
  43. }