aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me/shedaniel/rei/plugin
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-04-10 02:29:48 +0800
committershedaniel <daniel@shedaniel.me>2021-04-10 02:29:48 +0800
commit8341de88a57ffe7c6be6634314ce7f18bccaf28e (patch)
tree83316bb567d866276059602320bfe0c65d48b6ba /runtime/src/main/java/me/shedaniel/rei/plugin
parent188066bfd4817c1c160061d61e7a0130e9377e98 (diff)
downloadRoughlyEnoughItems-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')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java15
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java54
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