diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-04-10 02:29:48 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-04-10 02:29:48 +0800 |
| commit | 8341de88a57ffe7c6be6634314ce7f18bccaf28e (patch) | |
| tree | 83316bb567d866276059602320bfe0c65d48b6ba /runtime/src | |
| parent | 188066bfd4817c1c160061d61e7a0130e9377e98 (diff) | |
| download | RoughlyEnoughItems-8341de88a57ffe7c6be6634314ce7f18bccaf28e.tar.gz RoughlyEnoughItems-8341de88a57ffe7c6be6634314ce7f18bccaf28e.tar.bz2 RoughlyEnoughItems-8341de88a57ffe7c6be6634314ce7f18bccaf28e.zip | |
Primitive port to 21w14a
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'runtime/src')
40 files changed, 226 insertions, 212 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java index 0e79ca8f6..46f02a5a8 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java @@ -25,6 +25,7 @@ package me.shedaniel.rei; import io.netty.buffer.Unpooled; import me.shedaniel.architectury.networking.NetworkManager; +import me.shedaniel.rei.api.client.REIHelper; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; import me.shedaniel.rei.impl.common.transfer.InputSlotCrafter; @@ -57,9 +58,10 @@ public class RoughlyEnoughItemsNetwork { 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(); + AbstractContainerMenu menu = player.containerMenu; + if (!menu.getCarried().isEmpty()) { + menu.setCarried(ItemStack.EMPTY); + menu.broadcastChanges(); } }); NetworkManager.registerReceiver(NetworkManager.c2s(), CREATE_ITEMS_PACKET, (buf, context) -> { @@ -69,7 +71,7 @@ public class RoughlyEnoughItemsNetwork { return; } ItemStack stack = buf.readItem(); - if (player.inventory.add(stack.copy())) { + if (player.getInventory().add(stack.copy())) { NetworkManager.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); @@ -82,16 +84,16 @@ public class RoughlyEnoughItemsNetwork { return; } - Inventory inventory = player.inventory; + AbstractContainerMenu menu = player.containerMenu; ItemStack itemStack = buf.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()) { + if (!menu.getCarried().isEmpty() && ItemStack.isSameIgnoreDurability(menu.getCarried(), stack) && ItemStack.tagMatches(menu.getCarried(), stack)) { + stack.setCount(Mth.clamp(stack.getCount() + menu.getCarried().getCount(), 1, stack.getMaxStackSize())); + } else if (!menu.getCarried().isEmpty()) { return; } - inventory.setCarried(stack.copy()); - player.broadcastCarriedItem(); + menu.setCarried(stack.copy()); + menu.broadcastChanges(); NetworkManager.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(itemStack.copy()).writeUtf(player.getScoreboardName(), 32767)); }); NetworkManager.registerReceiver(NetworkManager.c2s(), MOVE_ITEMS_PACKET, (packetByteBuf, context) -> { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java index 9ae8da79e..bd2940d4d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java @@ -56,14 +56,13 @@ import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.LazyLoadedValue; import net.minecraft.util.Mth; -import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import java.time.LocalDateTime; import java.util.*; -import java.util.function.Predicate; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -103,7 +102,7 @@ public class ClientHelperImpl implements ClientHelper { return (ClientHelperImpl) ClientHelper.getInstance(); } - public boolean hasPermissionToUsePackets() { + public boolean hasPermissionToUsePackets() { try { Minecraft.getInstance().getConnection().getSuggestionsProvider().hasPermission(0); return hasOperatorPermission() && canUsePackets(); @@ -157,7 +156,7 @@ public class ClientHelperImpl implements ClientHelper { @Override public void sendDeletePacket() { if (Minecraft.getInstance().screen instanceof CreativeModeInventoryScreen) { - Minecraft.getInstance().player.inventory.setCarried(ItemStack.EMPTY); + Minecraft.getInstance().player.containerMenu.setCarried(ItemStack.EMPTY); ((CreativeModeInventoryScreen) Minecraft.getInstance().screen).isQuickCrafting = false; return; } @@ -173,22 +172,22 @@ public class ClientHelperImpl implements ClientHelper { return false; EntryStack<ItemStack> entry = (EntryStack<ItemStack>) e; if (Minecraft.getInstance().player == null) return false; - if (Minecraft.getInstance().player.inventory == null) return false; + if (Minecraft.getInstance().player.getInventory() == null) return false; ItemStack cheatedStack = entry.getValue().copy(); if (ConfigObject.getInstance().isGrabbingItems() && Minecraft.getInstance().screen instanceof CreativeModeInventoryScreen) { - Inventory inventory = Minecraft.getInstance().player.inventory; + AbstractContainerMenu menu = Minecraft.getInstance().player.containerMenu; EntryStack<ItemStack> stack = entry.copy(); - if (!inventory.getCarried().isEmpty() && EntryStacks.equalsExact(EntryStacks.of(inventory.getCarried()), stack)) { - stack.getValue().setCount(Mth.clamp(stack.getValue().getCount() + inventory.getCarried().getCount(), 1, stack.getValue().getMaxStackSize())); - } else if (!inventory.getCarried().isEmpty()) { + if (!menu.getCarried().isEmpty() && EntryStacks.equalsExact(EntryStacks.of(menu.getCarried()), stack)) { + stack.getValue().setCount(Mth.clamp(stack.getValue().getCount() + menu.getCarried().getCount(), 1, stack.getValue().getMaxStackSize())); + } else if (!menu.getCarried().isEmpty()) { return false; } - inventory.setCarried(stack.getValue().copy()); + menu.setCarried(stack.getValue().copy()); return true; } else if (ClientHelperImpl.getInstance().canUsePackets()) { - Inventory inventory = Minecraft.getInstance().player.inventory; + AbstractContainerMenu menu = Minecraft.getInstance().player.containerMenu; EntryStack<ItemStack> stack = entry.copy(); - if (!inventory.getCarried().isEmpty() && !EntryStacks.equalsExact(EntryStacks.of(inventory.getCarried()), stack)) { + if (!menu.getCarried().isEmpty() && !EntryStacks.equalsExact(EntryStacks.of(menu.getCarried()), stack)) { return false; } try { @@ -216,7 +215,7 @@ public class ClientHelperImpl implements ClientHelper { @ApiStatus.Internal public Set<EntryStack<?>> _getInventoryItemsTypes() { - return Minecraft.getInstance().player.inventory.compartments.stream() + return Minecraft.getInstance().player.getInventory().compartments.stream() .flatMap(Collection::stream) .map(EntryStacks::of) .collect(Collectors.toSet()); @@ -421,7 +420,7 @@ public class ClientHelperImpl implements ClientHelper { this.preferredOpenedCategory = category; return this; } - + @Override @Nullable public CategoryIdentifier<?> getPreferredOpenedCategory() { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java index e9c899a95..56bfb9fa9 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java @@ -47,6 +47,7 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java index 149a8f929..5918a373c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java @@ -23,6 +23,7 @@ package me.shedaniel.rei.impl.client.config.entries; +import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import me.shedaniel.clothconfig2.gui.widget.DynamicElementListWidget; import me.shedaniel.rei.impl.client.entry.filtering.FilteringRule; @@ -191,7 +192,7 @@ public class FilteringRulesScreen extends Screen { @Override protected void renderBg(PoseStack matrices, Minecraft client, int mouseX, int mouseY) { super.renderBg(matrices, client, mouseX, mouseY); - Minecraft.getInstance().getTextureManager().bind(CHEST_GUI_TEXTURE); + RenderSystem.setShaderTexture(0, CHEST_GUI_TEXTURE); blit(matrices, x + 3, y + 3, 0, 0, 14, 14); } }; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java index 7a6e9f32d..89a54e403 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java @@ -26,10 +26,7 @@ package me.shedaniel.rei.impl.client.config.entries; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.blaze3d.vertex.*; import com.mojang.math.Matrix4f; import me.shedaniel.clothconfig2.ClothConfigInitializer; import me.shedaniel.clothconfig2.api.ScissorsHandler; @@ -46,13 +43,14 @@ import me.shedaniel.rei.api.client.search.SearchFilter; import me.shedaniel.rei.api.client.search.SearchProvider; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay; -import me.shedaniel.rei.impl.client.gui.widget.BatchEntryRendererManager; +import me.shedaniel.rei.impl.client.gui.widget.BatchedEntryRendererManager; import me.shedaniel.rei.impl.client.gui.widget.EntryWidget; import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; @@ -196,11 +194,12 @@ public class FilteringScreen extends Screen { protected void renderHoleBackground(PoseStack matrices, int y1, int y2, int tint, int alpha1, int alpha2) { Tesselator tesselator = Tesselator.getInstance(); BufferBuilder buffer = tesselator.getBuilder(); - this.minecraft.getTextureManager().bind(BACKGROUND_LOCATION); + RenderSystem.setShaderTexture(0, BACKGROUND_LOCATION); Matrix4f matrix = matrices.last().pose(); - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); float float_1 = 32.0F; - buffer.begin(7, DefaultVertexFormat.POSITION_TEX_COLOR); + RenderSystem.setShader(GameRenderer::getPositionTexColorShader); + buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); buffer.vertex(matrix, 0, y2, 0.0F).uv(0.0F, y2 / 32.0F).color(tint, tint, tint, alpha2).endVertex(); buffer.vertex(matrix, this.width, y2, 0.0F).uv(this.width / 32.0F, y2 / 32.0F).color(tint, tint, tint, alpha2).endVertex(); buffer.vertex(matrix, this.width, y1, 0.0F).uv(this.width / 32.0F, y1 / 32.0F).color(tint, tint, tint, alpha1).endVertex(); @@ -222,7 +221,7 @@ public class FilteringScreen extends Screen { int skip = Math.max(0, Mth.floor(scrolling.scrollAmount / (float) entrySize())); int nextIndex = skip * innerBounds.width / entrySize(); int i = nextIndex; - BatchEntryRendererManager manager = new BatchEntryRendererManager(); + BatchedEntryRendererManager manager = new BatchedEntryRendererManager(); for (; i < entryStacks.size(); i++) { EntryStack<?> stack = entryStacks.get(i); EntryListEntry entry = entries.get(nextIndex); @@ -250,19 +249,15 @@ public class FilteringScreen extends Screen { BufferBuilder buffer = tesselator.getBuilder(); RenderSystem.enableBlend(); RenderSystem.blendFuncSeparate(770, 771, 0, 1); - RenderSystem.disableAlphaTest(); - RenderSystem.shadeModel(7425); RenderSystem.disableTexture(); Matrix4f matrix = matrices.last().pose(); - buffer.begin(7, DefaultVertexFormat.POSITION_TEX_COLOR); + buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); buffer.vertex(matrix, 0, bounds.y + 4, 0.0F).uv(0.0F, 1.0F).color(0, 0, 0, 0).endVertex(); buffer.vertex(matrix, width, bounds.y + 4, 0.0F).uv(1.0F, 1.0F).color(0, 0, 0, 0).endVertex(); buffer.vertex(matrix, width, bounds.y, 0.0F).uv(1.0F, 0.0F).color(0, 0, 0, 255).endVertex(); buffer.vertex(matrix, 0, bounds.y, 0.0F).uv(0.0F, 0.0F).color(0, 0, 0, 255).endVertex(); tesselator.end(); RenderSystem.enableTexture(); - RenderSystem.shadeModel(7424); - RenderSystem.enableAlphaTest(); RenderSystem.disableBlend(); renderHoleBackground(matrices, 0, bounds.y, 64, 255, 255); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ContainerScreenOverlay.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ContainerScreenOverlay.java index 8abd4ea35..f8ffd2a01 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ContainerScreenOverlay.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ContainerScreenOverlay.java @@ -209,7 +209,7 @@ public class ContainerScreenOverlay extends REIOverlay { } public void init() { - draggingStack.set(DraggableStackProvider.from(() -> ScreenRegistry.getInstance().getDraggableProviders()), + draggingStack.set(DraggableStackProvider.from(() -> ScreenRegistry.getInstance().getDraggableProviders()), DraggableStackVisitor.from(() -> ScreenRegistry.getInstance().getDraggableVisitors())); this.shouldReload = false; @@ -252,7 +252,7 @@ public class ContainerScreenOverlay extends REIOverlay { .tooltipLine(new TranslatableComponent("text.rei.next_page")) .focusable(false)); } - + final Rectangle configButtonArea = getConfigButtonArea(); widgets.add(configButton = InternalWidgets.wrapLateRenderable( Widgets.withTranslate( @@ -292,7 +292,7 @@ public class ContainerScreenOverlay extends REIOverlay { }), Widgets.createDrawableWidget((helper, matrices, mouseX, mouseY, delta) -> { helper.setBlitOffset(helper.getBlitOffset() + 1); - Minecraft.getInstance().getTextureManager().bind(CHEST_GUI_TEXTURE); + RenderSystem.setShaderTexture(0, CHEST_GUI_TEXTURE); helper.blit(matrices, configButtonArea.x + 3, configButtonArea.y + 3, 0, 0, 14, 14); }) ), @@ -345,8 +345,8 @@ public class ContainerScreenOverlay extends REIOverlay { .focusable(false) .containsMousePredicate((button, point) -> button.getBounds().contains(point) && isNotInExclusionZones(point.x, point.y))); widgets.add(Widgets.createDrawableWidget((helper, matrices, mouseX, mouseY, delta) -> { - Minecraft.getInstance().getTextureManager().bind(CHEST_GUI_TEXTURE); - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, CHEST_GUI_TEXTURE); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); helper.blit(matrices, weatherButton.getBounds().x + 3, weatherButton.getBounds().y + 3, getCurrentWeather().getId() * 14, 14, 14, 14); })); } @@ -533,7 +533,7 @@ public class ContainerScreenOverlay extends REIOverlay { } matrices.popPose(); } - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); this.renderWidgets(matrices, mouseX, mouseY, delta); if (ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) { Screen screen = Minecraft.getInstance().screen; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java index a47ad56c3..df4b72d32 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java @@ -29,6 +29,7 @@ import com.mojang.blaze3d.platform.NativeImage; import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Matrix4f; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.gui.widgets.Widget; import me.shedaniel.rei.impl.client.gui.toast.ExportRecipeIdentifierToast; @@ -70,30 +71,26 @@ public final class RecipeDisplayExporter extends Widget { } } - @SuppressWarnings("deprecation") private void exportRecipe(Rectangle rectangle, List<Widget> widgets) { - RenderSystem.pushMatrix(); Minecraft client = Minecraft.getInstance(); Window window = client.getWindow(); - RenderTarget framebuffer = new RenderTarget(window.getWidth(), window.getHeight(), true, false); - framebuffer.bindWrite(true); - RenderSystem.viewport(0, 0, window.getWidth(), window.getHeight()); + RenderTarget renderTarget = new RenderTarget(window.getWidth(), window.getHeight(), true, false); + renderTarget.bindWrite(true); RenderSystem.clear(256, Minecraft.ON_OSX); - RenderSystem.matrixMode(5889); - RenderSystem.loadIdentity(); - RenderSystem.ortho(0.0D, (double) window.getWidth() / window.getGuiScale(), (double) window.getHeight() / window.getGuiScale(), 0.0D, 1000.0D, 3000.0D); - RenderSystem.matrixMode(5888); - RenderSystem.loadIdentity(); - RenderSystem.translatef(0.0F, 0.0F, -2000.0F); + Matrix4f matrix4f = Matrix4f.orthographic(0.0F, (float) ((double) window.getWidth() / window.getGuiScale()), 0.0F, (float) ((double) window.getHeight() / window.getGuiScale()), 1000.0F, 3000.0F); + RenderSystem.setProjectionMatrix(matrix4f); + PoseStack poseStack = RenderSystem.getModelViewStack(); + poseStack.setIdentity(); + poseStack.translate(0.0D, 0.0D, -2000.0D); + RenderSystem.applyModelViewMatrix(); Lighting.setupFor3DItems(); PoseStack matrices = new PoseStack(); for (Widget widget : widgets) { widget.render(matrices, -1, -1, 0); } - RenderSystem.popMatrix(); - NativeImage nativeImage = new NativeImage(framebuffer.width, framebuffer.height, false); - RenderSystem.bindTexture(framebuffer.getColorTextureId()); + NativeImage nativeImage = new NativeImage(renderTarget.width, renderTarget.height, false); + RenderSystem.bindTexture(renderTarget.getColorTextureId()); nativeImage.downloadTexture(0, false); nativeImage.flipY(); int outWidth = (int) (rectangle.width * window.getGuiScale()); @@ -114,9 +111,12 @@ public final class RecipeDisplayExporter extends Widget { } finally { nativeImage.close(); strippedImage.close(); - RenderSystem.recordRenderCall(framebuffer::destroyBuffers); } }); + + renderTarget.destroyBuffers(); + Minecraft.getInstance().levelRenderer.graphicsChanged(); + Minecraft.getInstance().getMainRenderTarget().bindWrite(true); } @Override |
