diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-04-30 20:16:40 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-04-30 20:16:40 +0800 |
| commit | 6345d24492242ba9ea26c6b83163aa81464c8cfd (patch) | |
| tree | c27abf2db7b9c5a2b549ed0a57a9cee338d3e441 | |
| parent | 84ec7057e25602a8705efc5ee1b34c8f05184ea4 (diff) | |
| parent | a7e0b3e2bfbdefdd7eee4dc108e7e6e4fce5da33 (diff) | |
| download | RoughlyEnoughItems-6345d24492242ba9ea26c6b83163aa81464c8cfd.tar.gz RoughlyEnoughItems-6345d24492242ba9ea26c6b83163aa81464c8cfd.tar.bz2 RoughlyEnoughItems-6345d24492242ba9ea26c6b83163aa81464c8cfd.zip | |
Merge branch '1.14-dev' into 1.14
| -rw-r--r-- | CHANGELOG.md | 4 | ||||
| -rw-r--r-- | README.md | 7 | ||||
| -rwxr-xr-x | build.gradle | 10 | ||||
| -rw-r--r-- | gradle.properties | 18 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java | 15 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java | 22 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/client/ClientHelper.java | 2 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java | 38 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java | 15 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java | 17 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/mixin/MixinClientConnection.java | 25 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/mixin/MixinClientPlayNetworkHandler.java | 19 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/mixin/MixinPlayerManager.java | 21 | ||||
| -rwxr-xr-x | src/main/resources/assets/roughlyenoughitems/lang/en_us.json | 5 | ||||
| -rwxr-xr-x | src/main/resources/fabric.mod.json | 2 | ||||
| -rwxr-xr-x | src/main/resources/roughlyenoughitems.mixins.json | 8 |
16 files changed, 94 insertions, 134 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 14d9c94d5..c6fa009c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ View full changelog [here](https://github.com/shedaniel/RoughlyEnoughItems/blob/1.14/CHANGELOG.md). +## v2.8.0+build.100 +- Fixed [#76](https://github.com/shedaniel/RoughlyEnoughItems/issues/76): Laggy Changing Pages +- New: Better Server Support (You can now drop REI into server mods) +- New: Better Cheat Mode Button ## v2.7.11.97 - Fixed [#72](https://github.com/shedaniel/RoughlyEnoughItems/issues/72): Crash on clicking craftable items filter - New: Load REI Plugins via entry points, old way works too but support will be dropped @@ -11,12 +11,7 @@ Roughly Enough Items is a mod to view Items and Recipes for Minecraft 1.13 - 1.1  -This mod is completely client side. It is **impossible** to install this mod on a server. -However 1 feature will be disabled: -- Item Deletion - -One feature will be limited: -- Item Cheating (nbts are limited to 256 char = no long nbts) +This mod is client sided and server sided. ### Currently Supported Languages: - English diff --git a/build.gradle b/build.gradle index b4fc7c2b5..a9a04feed 100755 --- a/build.gradle +++ b/build.gradle @@ -51,10 +51,20 @@ dependencies { mappings "net.fabricmc:yarn:${project.yarn_version}" modCompile "net.fabricmc:fabric-loader:${project.fabricloader_version}" modCompile "net.fabricmc:fabric:${project.fabric_version}" +// modCompile "net.fabricmc.fabric-api:fabric-keybindings:${project.fabric_keybindings}" +// modCompile "net.fabricmc.fabric-api:fabric-lib:${project.fabric_lib}" +// modCompile "net.fabricmc.fabric-api:fabric-networking:${project.fabric_networking}" +// modCompile "net.fabricmc.fabric-api:fabric-events-lifecycle:${project.fabric_events_lifecycle}" +// modCompile "net.fabricmc.fabric-api:fabric-resource-loader:${project.fabric_resource_loader}" modCompile "cloth:ClothEvents:${cloth_events_version}" modCompile "cloth-config:ClothConfig:${cloth_config_version}" if (includeDep) { include "net.fabricmc:fabric:${project.fabric_version}" +// include "net.fabricmc.fabric-api:fabric-keybindings:${project.fabric_keybindings}" +// include "net.fabricmc.fabric-api:fabric-lib:${project.fabric_lib}" +// include "net.fabricmc.fabric-api:fabric-networking:${project.fabric_networking}" +// include "net.fabricmc.fabric-api:fabric-events-lifecycle:${project.fabric_events_lifecycle}" +// include "net.fabricmc.fabric-api:fabric-resource-loader:${project.fabric_resource_loader}" include "cloth:ClothEvents:${cloth_events_version}" include "cloth-config:ClothConfig:${cloth_config_version}" } diff --git a/gradle.properties b/gradle.properties index 4b996dfec..74d86497a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,9 +1,15 @@ -mod_version=2.7.11+build.97 -minecraft_version=1.14 Pre-Release 4 -yarn_version=1.14 Pre-Release 4+build.2 -fabric_version=0.2.7+build.123 -fabricloader_version=0.4.1+build.126 +mod_version=2.8.0+build.100 +minecraft_version=1.14 +yarn_version=1.14+build.5 +fabricloader_version=0.4.6+build.141 jankson_version=1.1.0 cloth_events_version=0.3.1.23 -cloth_config_version=0.1.3.7 +cloth_config_version=0.2.1.14 modmenu_version=1.4.0-71 +fabric_version=0.2.7+build.127 + +fabric_keybindings=0.1.0 +fabric_lib=0.1.0 +fabric_networking=0.1.0 +fabric_events_lifecycle=0.1.0 +fabric_resource_loader=0.1.0 diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index 155ea0ae1..e2cf44c0f 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -12,9 +12,11 @@ import me.shedaniel.rei.gui.ContainerScreenOverlay; import me.shedaniel.rei.listeners.CreativePlayerInventoryScreenHooks; import me.shedaniel.rei.listeners.RecipeBookGuiHooks; import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.network.ClientSidePacketRegistry; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; import net.fabricmc.loader.api.metadata.ModMetadata; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.ContainerScreen; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen; @@ -43,7 +45,6 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { private static final ItemRegistry ITEM_REGISTRY = new ItemRegistryImpl(); private static final DisplayHelper DISPLAY_HELPER = new DisplayHelperImpl(); private static final Map<Identifier, REIPluginEntry> plugins = Maps.newHashMap(); - public static boolean reiIsOnServer = false; private static ConfigManagerImpl configManager; static { @@ -88,6 +89,18 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { return Optional.empty(); } + public static boolean hasPermissionToUsePackets() { + return hasOperatorPermission() && canUsePackets(); + } + + public static boolean hasOperatorPermission() { + return MinecraftClient.getInstance().getNetworkHandler().getCommandSource().hasPermissionLevel(1); + } + + public static boolean canUsePackets() { + return ClientSidePacketRegistry.INSTANCE.canServerReceive(RoughlyEnoughItemsNetwork.CREATE_ITEMS_PACKET) && ClientSidePacketRegistry.INSTANCE.canServerReceive(RoughlyEnoughItemsNetwork.DELETE_ITEMS_PACKET); + } + @Override public void onInitializeClient() { configManager = new ConfigManagerImpl(); diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java index 3a8dcf54c..362479612 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java @@ -1,15 +1,13 @@ package me.shedaniel.rei; import me.shedaniel.rei.gui.widget.ItemListOverlay; -import net.fabricmc.api.EnvType; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.network.ClientSidePacketRegistry; import net.fabricmc.fabric.api.network.ServerSidePacketRegistry; -import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.ItemStack; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.StringTextComponent; +import net.minecraft.text.TextFormat; import net.minecraft.text.TranslatableTextComponent; import net.minecraft.util.Identifier; @@ -17,7 +15,6 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { public static final Identifier DELETE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "delete_item"); public static final Identifier CREATE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "create_item"); - public static final Identifier REI_ON_SERVER_PACKET = new Identifier("roughlyenoughitems", "rei_on_server"); @Override public void onInitialize() { @@ -29,24 +26,15 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); ItemStack stack = packetByteBuf.readItemStack(); + if (!player.getServer().getCommandSource().hasPermissionLevel(1)) { + player.addChatMessage(new TranslatableTextComponent("text.rei.no_permission_cheat").applyFormat(TextFormat.RED), false); + return; + } if (player.inventory.insertStack(stack.copy())) player.addChatMessage(new StringTextComponent(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", ItemListOverlay.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getAmount() + "").replaceAll("\\{player_name}", player.getEntityName())), false); else player.addChatMessage(new TranslatableTextComponent("text.rei.failed_cheat_items"), false); }); - ClientSidePacketRegistry.INSTANCE.register(REI_ON_SERVER_PACKET, (packetContext, packetByteBuf) -> { - if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { - try { - Class.forName("me.shedaniel.rei.RoughlyEnoughItemsCore").getDeclaredField("reiIsOnServer").set(null, true); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - } - }); } } diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java index 1e274241d..0a3484786 100644 --- a/src/main/java/me/shedaniel/rei/client/ClientHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java @@ -94,7 +94,7 @@ public class ClientHelper implements ClientModInitializer { } public static boolean tryCheatingStack(ItemStack cheatedStack) { - if (MinecraftClient.getInstance().isInSingleplayer()) { + if (RoughlyEnoughItemsCore.canUsePackets()) { try { ClientSidePacketRegistry.INSTANCE.sendToServer(RoughlyEnoughItemsNetwork.CREATE_ITEMS_PACKET, new PacketByteBuf(Unpooled.buffer()).writeItemStack(cheatedStack.copy())); return true; diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index 9ca770d5c..41bd9b9ec 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -61,7 +61,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra this.rectangle = RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel ? boundsHandler.getLeftBounds(MinecraftClient.getInstance().currentScreen) : boundsHandler.getRightBounds(MinecraftClient.getInstance().currentScreen); this.lastLeft = getLeft(); widgets.add(itemListOverlay = new ItemListOverlay(page)); - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); widgets.add(buttonLeft = new ButtonWidget(rectangle.x, rectangle.y + 5, 16, 16, new TranslatableTextComponent("text.rei.left_arrow")) { @Override @@ -69,7 +69,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra page--; if (page < 0) page = getTotalPage(); - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); } @Override @@ -88,7 +88,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra page++; if (page > getTotalPage()) page = 0; - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); } @Override @@ -119,8 +119,12 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra public void render(int mouseX, int mouseY, float delta) { super.render(mouseX, mouseY, delta); GuiLighting.disable(); - if (ClientHelper.isCheating()) - fill(getBounds().x, getBounds().y, getBounds().x + 20, getBounds().y + 20, new Color(255, 0, 0, 42).getRGB()); + if (ClientHelper.isCheating() && RoughlyEnoughItemsCore.hasOperatorPermission()) { + if (RoughlyEnoughItemsCore.hasPermissionToUsePackets()) + fill(getBounds().x, getBounds().y, getBounds().x + 20, getBounds().y + 20, 721354752); + else + fill(getBounds().x, getBounds().y, getBounds().x + 20, getBounds().y + 20, 1476440063); + } MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); blit(getBounds().x + 3, getBounds().y + 3, 0, 0, 14, 14); @@ -131,9 +135,13 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra String tooltips = I18n.translate("text.rei.config_tooltip"); tooltips += "\n "; if (!ClientHelper.isCheating()) - tooltips += "\n§c§m" + I18n.translate("text.rei.cheating"); + tooltips += "\n" + I18n.translate("text.rei.cheating_disabled"); + else if (!RoughlyEnoughItemsCore.hasOperatorPermission()) + tooltips += "\n" + I18n.translate("text.rei.cheating_enabled_no_perms"); + else if (RoughlyEnoughItemsCore.hasPermissionToUsePackets()) + tooltips += "\n" + I18n.translate("text.rei.cheating_enabled"); else - tooltips += "\n§a" + I18n.translate("text.rei.cheating"); + tooltips += "\n" + I18n.translate("text.rei.cheating_limited_enabled"); return Optional.ofNullable(tooltips); } @@ -208,7 +216,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra public void onLabelClicked() { MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); page = 0; - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); } @Override @@ -219,19 +227,19 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra buttonLeft.enabled = buttonRight.enabled = getTotalPage() > 0; if (ScreenHelper.searchField == null) ScreenHelper.searchField = new SearchFieldWidget(0, 0, 0, 0); - ScreenHelper.searchField.setChangedListener(s -> { - searchTerm = s; - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); - }); ScreenHelper.searchField.getBounds().setBounds(getTextFieldArea()); this.widgets.add(ScreenHelper.searchField); ScreenHelper.searchField.setText(searchTerm); + ScreenHelper.searchField.setChangedListener(s -> { + searchTerm = s; + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); + }); if (RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton) this.widgets.add(toggleButtonWidget = new CraftableToggleButtonWidget(getCraftableToggleArea()) { @Override public void onPressed() { RoughlyEnoughItemsCore.getConfigManager().toggleCraftableOnly(); - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); } @Override @@ -242,7 +250,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra }); else toggleButtonWidget = null; - this.itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + this.itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false); } private Weather getNextWeather() { @@ -324,7 +332,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra else if (RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() && (!hasSameListContent(new LinkedList<>(ScreenHelper.inventoryStacks), currentStacks) || (currentStacks.size() != ScreenHelper.inventoryStacks.size()))) { ScreenHelper.inventoryStacks = ClientHelper.getInventoryItemsTypes(); DisplayHelper.DisplayBoundsHandler boundsHandler = RoughlyEnoughItemsCore.getDisplayHelper().getResponsibleBoundsHandler(MinecraftClient.getInstance().currentScreen.getClass()); - itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm); + itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true); } GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java index 3145b2d44..07d65ff50 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java @@ -1,30 +1,29 @@ package me.shedaniel.rei.gui.credits; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.menu.AlwaysSelectedItemListWidget; +import net.minecraft.client.gui.menu.AlwaysSelectedEntryListWidget; import net.minecraft.text.TextComponent; -public class CreditsEntryListWidget extends AlwaysSelectedItemListWidget<CreditsEntryListWidget.CreditsItem> { +public class CreditsEntryListWidget extends AlwaysSelectedEntryListWidget<CreditsEntryListWidget.CreditsItem> { public CreditsEntryListWidget(MinecraftClient client, int width, int height, int startY, int endY, int entryHeight) { super(client, width, height, startY, endY, entryHeight); - visible = false; // showSelection } public void creditsClearEntries() { - clearItems(); + clearEntries(); } - private CreditsItem getEntry(int int_1) { + private CreditsItem rei_getEntry(int int_1) { return this.children().get(int_1); } public void creditsAddEntry(CreditsItem entry) { - addItem(entry); + addEntry(entry); } @Override - public int getItemWidth() { + public int getRowWidth() { return width - 80; } @@ -33,7 +32,7 @@ public class CreditsEntryListWidget extends AlwaysSelectedItemListWidget<Credits return width - 40; } - public static class CreditsItem extends AlwaysSelectedItemListWidget.Item<CreditsItem> { + public static class CreditsItem extends AlwaysSelectedEntryListWidget.Entry<CreditsItem> { private String text; public CreditsItem(TextComponent textComponent) { diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java index 5122d0fd1..345342ef0 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java @@ -34,10 +34,10 @@ import java.util.stream.Collectors; public class ItemListOverlay extends Widget { private static List<Item> searchBlacklisted = Lists.newArrayList(); + private final List<ItemStack> currentDisplayed; private List<Widget> widgets; private int width, height, page; private Rectangle rectangle, listArea; - private List<ItemStack> currentDisplayed; public ItemListOverlay(int page) { this.currentDisplayed = Lists.newArrayList(); @@ -82,16 +82,19 @@ public class ItemListOverlay extends Widget { GuiLighting.disable(); widgets.forEach(widget -> widget.render(int_1, int_2, float_1)); ClientPlayerEntity player = minecraft.player; - if (rectangle.contains(ClientUtils.getMouseLocation()) && ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && minecraft.isInSingleplayer()) + if (rectangle.contains(ClientUtils.getMouseLocation()) && ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && RoughlyEnoughItemsCore.hasPermissionToUsePackets()) ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.delete_items"))); } - public void updateList(DisplayHelper.DisplayBoundsHandler boundsHandler, Rectangle rectangle, int page, String searchTerm) { + public void updateList(DisplayHelper.DisplayBoundsHandler boundsHandler, Rectangle rectangle, int page, String searchTerm, boolean processSearchTerm) { this.rectangle = rectangle; this.page = page; this.widgets = Lists.newLinkedList(); calculateListSize(rectangle); - currentDisplayed = processSearchTerm(searchTerm, RoughlyEnoughItemsCore.getItemRegisterer().getItemList(), ScreenHelper.inventoryStacks); + if (currentDisplayed.isEmpty() || processSearchTerm) { + currentDisplayed.clear(); + currentDisplayed.addAll(processSearchTerm(searchTerm, RoughlyEnoughItemsCore.getItemRegisterer().getItemList(), ScreenHelper.inventoryStacks)); + } int startX = (int) rectangle.getCenterX() - width * 9; int startY = (int) rectangle.getCenterY() - height * 9; this.listArea = new Rectangle((int) startX, (int) startY, width * 18, height * 18); @@ -182,7 +185,7 @@ public class ItemListOverlay extends Widget { } private List<ItemStack> processSearchTerm(String searchTerm, List<ItemStack> ol, List<ItemStack> inventoryItems) { - List<ItemStack> os = new LinkedList<>(ol), stacks = Lists.newArrayList(), finalStacks = Lists.newArrayList(); + List<ItemStack> os = Lists.newArrayList(ol), stacks = Lists.newArrayList(), finalStacks = Lists.newArrayList(); List<ItemGroup> itemGroups = Lists.newArrayList(ItemGroup.GROUPS); itemGroups.add(null); ItemListOrdering ordering = RoughlyEnoughItemsCore.getConfigManager().getConfig().itemListOrdering; @@ -276,11 +279,11 @@ public class ItemListOverlay extends Widget { public boolean mouseClicked(double double_1, double double_2, int int_1) { if (rectangle.contains(double_1, double_2)) { ClientPlayerEntity player = minecraft.player; - if (ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && minecraft.isInSingleplayer()) { + if (ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && RoughlyEnoughItemsCore.hasPermissionToUsePackets()) { ClientHelper.sendDeletePacket(); return true; } - if (!player.inventory.getCursorStack().isEmpty() && minecraft.isInSingleplayer()) + if (!player.inventory.getCursorStack().isEmpty() && RoughlyEnoughItemsCore.hasPermissionToUsePackets()) return false; for(Widget widget : children()) if (widget.mouseClicked(double_1, double_2, int_1)) diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinClientConnection.java b/src/main/java/me/shedaniel/rei/mixin/MixinClientConnection.java deleted file mode 100644 index 8b137aff7..000000000 --- a/src/main/java/me/shedaniel/rei/mixin/MixinClientConnection.java +++ /dev/null @@ -1,25 +0,0 @@ -package me.shedaniel.rei.mixin; - -import io.netty.channel.Channel; -import me.shedaniel.rei.RoughlyEnoughItemsCore; -import net.minecraft.network.ClientConnection; -import net.minecraft.text.TextComponent; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(ClientConnection.class) -public class MixinClientConnection { - - @Shadow - private Channel channel; - - @Inject(method = "disconnect", at = @At("HEAD")) - public void disconnect(TextComponent reason, CallbackInfo callback) { - if (channel.isOpen()) - RoughlyEnoughItemsCore.reiIsOnServer = false; - } - -} diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinClientPlayNetworkHandler.java b/src/main/java/me/shedaniel/rei/mixin/MixinClientPlayNetworkHandler.java deleted file mode 100644 index 6543a6a97..000000000 --- a/src/main/java/me/shedaniel/rei/mixin/MixinClientPlayNetworkHandler.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.shedaniel.rei.mixin; - -import me.shedaniel.rei.RoughlyEnoughItemsCore; -import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.client.network.packet.GameJoinS2CPacket; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(ClientPlayNetworkHandler.class) -public class MixinClientPlayNetworkHandler { - - @Inject(method = "onGameJoin", at = @At("HEAD")) - public void onGameJoin(GameJoinS2CPacket packet, CallbackInfo callbackInfo) { - RoughlyEnoughItemsCore.reiIsOnServer = false; - } - -} diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinPlayerManager.java b/src/main/java/me/shedaniel/rei/mixin/MixinPlayerManager.java deleted file mode 100644 index ff1fade39..000000000 --- a/src/main/java/me/shedaniel/rei/mixin/MixinPlayerManager.java +++ /dev/null @@ -1,21 +0,0 @@ -package me.shedaniel.rei.mixin; - -import io.netty.buffer.Unpooled; -import me.shedaniel.rei.RoughlyEnoughItemsNetwork; -import net.fabricmc.fabric.api.network.ServerSidePacketRegistry; -import net.minecraft.network.ClientConnection; -import net.minecraft.server.PlayerManager; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.PacketByteBuf; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(PlayerManager.class) -public class MixinPlayerManager { - @Inject(method = "onPlayerConnect", at = @At("TAIL")) - public void onPlayerConnect(ClientConnection connection, ServerPlayerEntity player, CallbackInfo callback) { - ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, RoughlyEnoughItemsNetwork.REI_ON_SERVER_PACKET, new PacketByteBuf(Unpooled.buffer())); - } -} diff --git a/src/main/resources/assets/roughlyenoughitems/lang/en_us.json b/src/main/resources/assets/roughlyenoughitems/lang/en_us.json index 8ca9f3bac..20b83be95 100755 --- a/src/main/resources/assets/roughlyenoughitems/lang/en_us.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/en_us.json @@ -7,6 +7,11 @@ "text.rei.config.action": "Action", "text.rei.config.cheating": "Cheating:", "text.rei.cheating": "Cheating", + "text.rei.cheating_disabled": "§7Cheating Disabled", + "text.rei.cheating_enabled": "§cCheating Enabled", + "text.rei.cheating_limited_enabled": "§bCheating Enabled (Using Commands)", + "text.rei.cheating_enabled_no_perms": "§7Cheating §cEnabled §7(No Permission)", + "text.rei.no_permission_cheat": "Operator permissions are required to cheat items", "category.rei.crafting": "Crafting", "category.rei.smelting": "Smelting", "category.rei.smelting.fuel": "§eFuel", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 2513c7fdf..df2c2d1bb 100755 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -14,7 +14,6 @@ }, "license": "MIT", "icon": "pack.png", - "environment": "client", "entrypoints": { "client": [ "me.shedaniel.rei.RoughlyEnoughItemsCore", @@ -33,7 +32,6 @@ }, "requires": { "fabricloader": ">=0.4.0", - "fabric": "^0.2.6", "cloth": "*" }, "recommends": { diff --git a/src/main/resources/roughlyenoughitems.mixins.json b/src/main/resources/roughlyenoughitems.mixins.json index f43977162..0fcdc8327 100755 --- a/src/main/resources/roughlyenoughitems.mixins.json +++ b/src/main/resources/roughlyenoughitems.mixins.json @@ -3,16 +3,12 @@ "package": "me.shedaniel.rei.mixin", "minVersion": "0.7.11", "compatibilityLevel": "JAVA_8", - "mixins": [ - "MixinPlayerManager" - ], + "mixins": [], "client": [ "MixinContainerScreen", "MixinBrewingRecipeRegistry", "MixinRecipeBookGui", - "MixinCreativePlayerInventoryScreen", - "MixinClientPlayNetworkHandler", - "MixinClientConnection" + "MixinCreativePlayerInventoryScreen" ], "injectors": { "defaultRequire": 1 |
