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/main/java/me/shedaniel/rei/plugin/client | |
| 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/main/java/me/shedaniel/rei/plugin/client')
3 files changed, 44 insertions, 35 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java index 719f7c775..3d2ba170f 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java @@ -23,6 +23,7 @@ package me.shedaniel.rei.plugin.client; +import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import me.shedaniel.architectury.fluid.FluidStack; import me.shedaniel.math.Point; @@ -105,10 +106,10 @@ public class DefaultClientRuntimePlugin implements REIClientPlugin { @Override public void render(PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) { - Minecraft.getInstance().getTextureManager().bind(id); + RenderSystem.setShaderTexture(0, id); innerBlit(matrices.last().pose(), bounds.x, bounds.getMaxX(), bounds.y, bounds.getMaxY(), getBlitOffset(), 0, 1, 0, 1); } - + @Override @Nullable public Tooltip getTooltip(Point point) { @@ -141,12 +142,12 @@ public class DefaultClientRuntimePlugin implements REIClientPlugin { public Rectangle getScreenBounds(AbstractDisplayViewingScreen screen) { return screen.getBounds(); } - + @Override public <R extends Screen> boolean isHandingScreen(Class<R> screen) { - return AbstractDisplayViewingScreen.class.isAssignableFrom(screen); + return AbstractDisplayViewingScreen.class.isAssignableFrom(screen); } - + @Override public InteractionResult shouldScreenBeOverlaid(Class<?> screen) { return InteractionResult.SUCCESS; @@ -181,7 +182,7 @@ public class DefaultClientRuntimePlugin implements REIClientPlugin { EntryStackFavoriteType(ResourceLocation id) { this.id = id; } - + @Override public EntryStackFavoriteEntry read(CompoundTag object) { return new EntryStackFavoriteEntry(EntryStack.read(object.getCompound(key))); @@ -191,7 +192,7 @@ public class DefaultClientRuntimePlugin implements REIClientPlugin { public EntryStackFavoriteEntry fromArgs(Object... args) { return new EntryStackFavoriteEntry((EntryStack<?>) args[0]); } - + @Override public CompoundTag save(EntryStackFavoriteEntry entry, CompoundTag tag) { tag.put(key, entry.stack.save()); diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java index d0d162777..964567c42 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java @@ -28,7 +28,6 @@ import com.mojang.blaze3d.vertex.PoseStack; import me.shedaniel.architectury.fluid.FluidStack; import me.shedaniel.architectury.hooks.FluidStackHooks; import me.shedaniel.architectury.platform.Platform; -import me.shedaniel.architectury.utils.Fraction; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.entry.renderer.AbstractEntryRenderer; @@ -41,7 +40,6 @@ import me.shedaniel.rei.api.common.entry.comparison.ComparisonContext; import me.shedaniel.rei.api.common.entry.type.EntryDefinition; import me.shedaniel.rei.api.common.entry.type.EntryType; import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes; -import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; @@ -164,7 +162,7 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntryS @Override public Collection<ResourceLocation> getTagsFor(TagContainer tagContainer, EntryStack<FluidStack> entry, FluidStack value) { - TagCollection<Fluid> collection = tagContainer.getFluids(); + TagCollection<Fluid> collection = tagContainer.getOrEmpty(Registry.FLUID_REGISTRY); return collection == null ? Collections.emptyList() : collection.getMatchingTags(value.getFluid()); } @@ -199,9 +197,9 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntryS if (entry.isEmpty()) return null; List<Component> toolTip = Lists.newArrayList(entry.asFormattedText()); - Fraction amount = entry.getValue().getAmount(); - if (!amount.isLessThan(Fraction.zero())) { - String amountTooltip = I18n.get(FLUID_AMOUNT, EntryStacks.simplifyAmount(entry).getValue().getAmount()); + long amount = entry.getValue().getAmount(); + if (amount >= 0) { + String amountTooltip = I18n.get(FLUID_AMOUNT, entry.getValue().getAmount()); if (amountTooltip != null) { toolTip.addAll(Stream.of(amountTooltip.split("\n")).map(TextComponent::new).collect(Collectors.toList())); } diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java index 453df00c3..5925b3f27 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java @@ -33,7 +33,7 @@ import it.unimi.dsi.fastutil.objects.ReferenceSet; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.entry.renderer.AbstractEntryRenderer; -import me.shedaniel.rei.api.client.entry.renderer.BatchEntryRenderer; +import me.shedaniel.rei.api.client.entry.renderer.BatchedEntryRenderer; import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.common.entry.EntrySerializer; @@ -169,7 +169,7 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer @Override public Collection<ResourceLocation> getTagsFor(TagContainer tagContainer, EntryStack<ItemStack> entry, ItemStack value) { - TagCollection<Item> collection = tagContainer.getItems(); + TagCollection<Item> collection = tagContainer.getOrEmpty(Registry.ITEM_REGISTRY); return collection == null ? Collections.emptyList() : collection.getMatchingTags(value.getItem()); } @@ -185,41 +185,53 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer } @SuppressWarnings("deprecation") - public class ItemEntryRenderer extends AbstractEntryRenderer<ItemStack> implements BatchEntryRenderer<ItemStack> { + public class ItemEntryRenderer extends AbstractEntryRenderer<ItemStack> implements BatchedEntryRenderer<ItemStack> { + private static final float scale = 20.0F; @Override - public int getBatchId(EntryStack<ItemStack> entry) { + public int getBatchIdentifier(EntryStack<ItemStack> entry, Rectangle bounds) { return 1738923 + (getModelFromStack(entry.getValue()).usesBlockLight() ? 1 : 0); } private BakedModel getModelFromStack(ItemStack stack) { - return Minecraft.getInstance().getItemRenderer().getModel(stack, null, null); + return Minecraft.getInstance().getItemRenderer().getModel(stack, null, null, 0); } @Override public void startBatch(EntryStack<ItemStack> entry, PoseStack matrices, float delta) { - Minecraft.getInstance().getTextureManager().bind(TextureAtlas.LOCATION_BLOCKS); Minecraft.getInstance().getTextureManager().getTexture(TextureAtlas.LOCATION_BLOCKS).setFilter(false, false); - RenderSystem.pushMatrix(); - RenderSystem.enableRescaleNormal(); - RenderSystem.enableAlphaTest(); - RenderSystem.defaultAlphaFunc(); + RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS); RenderSystem.enableBlend(); RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); boolean sideLit = getModelFromStack(entry.getValue()).usesBlockLight(); - if (!sideLit) - Lighting.setupForFlatItems(); + if (!sideLit) Lighting.setupForFlatItems(); + PoseStack modelViewStack = RenderSystem.getModelViewStack(); + modelViewStack.pushPose(); + modelViewStack.scale(scale, -scale, 1.0F); + RenderSystem.applyModelViewMatrix(); } @Override public void renderBase(EntryStack<ItemStack> entry, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta) { if (!entry.isEmpty()) { - ItemStack stack = entry.getValue(); + ItemStack value = entry.getValue(); matrices.pushPose(); - matrices.translate(bounds.getCenterX(), bounds.getCenterY(), 100.0F + entry.getZ()); - matrices.scale(bounds.getWidth(), (bounds.getWidth() + bounds.getHeight()) / -2f, bounds.getHeight()); - Minecraft.getInstance().getItemRenderer().render(stack, ItemTransforms.TransformType.GUI, false, matrices, immediate, 15728880, OverlayTexture.NO_OVERLAY, getModelFromStack(stack)); + matrices.translate(bounds.getCenterX() / scale, bounds.getCenterY() / -scale, 100.0F + entry.getZ()); + matrices.scale(bounds.getWidth() / scale, (bounds.getWidth() + bounds.getHeight()) / 2f / scale, 1.0F); + Minecraft.getInstance().getItemRenderer().render(value, ItemTransforms.TransformType.GUI, false, matrices, immediate, + 0xf000f0, OverlayTexture.NO_OVERLAY, getModelFromStack(value)); matrices.popPose(); + + /*ItemStack value = entry.getValue(); + matrices.pushPose(); + matrices.last().pose().load(RenderSystem.getModelViewStack().last().pose()); + matrices.scale(bounds.getWidth(), (bounds.getWidth() + bounds.getHeight()) / -2f, 1.0F); + RenderSystem.modelViewMatrix = matrices.last().pose(); + PoseStack stack = new PoseStack(); + stack.translate(bounds.getCenterX() / (double) bounds.getWidth(),bounds.getCenterY() * -2.0 / (bounds.getWidth() + bounds.getHeight()),100.0F + entry.getZ()); + Minecraft.getInstance().getItemRenderer().render(value, ItemTransforms.TransformType.GUI, false, stack, immediate, + 0xf000f0, OverlayTexture.NO_OVERLAY, getModelFromStack(value)); + matrices.popPose();*/ } } @@ -235,12 +247,10 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer @Override public void endBatch(EntryStack<ItemStack> entry, PoseStack matrices, float delta) { RenderSystem.enableDepthTest(); - RenderSystem.disableAlphaTest(); - RenderSystem.disableRescaleNormal(); boolean sideLit = getModelFromStack(entry.getValue()).usesBlockLight(); - if (!sideLit) - Lighting.setupFor3DItems(); - RenderSystem.popMatrix(); + if (!sideLit) Lighting.setupFor3DItems(); + RenderSystem.getModelViewStack().popPose(); + RenderSystem.applyModelViewMatrix(); } @Override |
