diff --git a/gradle.properties b/gradle.properties index 8a1c950..dc0ae0c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false -mod_version = 3.1 +mod_version = 3.3 artifact_minecraft_version = 1.19.2 minecraft_version = 1.19.2 @@ -17,4 +17,4 @@ cursegradle_version = 1.4.0 parchment_version = 2022.11.06 flywheel_minecraft_version = 1.19.2 -flywheel_version = 0.6.8.a-14 \ No newline at end of file +flywheel_version = 0.6.9-18 \ No newline at end of file diff --git a/src/main/java/nl/requios/effortlessbuilding/create/foundation/render/BakedModelRenderHelper.java b/src/main/java/nl/requios/effortlessbuilding/create/foundation/render/BakedModelRenderHelper.java index 695c31c..a3a4d9b 100644 --- a/src/main/java/nl/requios/effortlessbuilding/create/foundation/render/BakedModelRenderHelper.java +++ b/src/main/java/nl/requios/effortlessbuilding/create/foundation/render/BakedModelRenderHelper.java @@ -1,6 +1,7 @@ package nl.requios.effortlessbuilding.create.foundation.render; import com.jozufozu.flywheel.core.model.ModelUtil; +import com.jozufozu.flywheel.core.model.ShadeSeparatedBufferedData; import com.jozufozu.flywheel.util.Pair; import com.mojang.blaze3d.vertex.BufferBuilder.RenderedBuffer; import com.mojang.blaze3d.vertex.PoseStack; @@ -22,8 +23,10 @@ public class BakedModelRenderHelper { } public static SuperByteBuffer standardModelRender(BakedModel model, BlockState referenceState, PoseStack ms) { - Pair pair = ModelUtil.getBufferBuilder(model, referenceState, ms); - return new SuperByteBuffer(pair.first(), pair.second()); + ShadeSeparatedBufferedData data = ModelUtil.getBufferedData(model, referenceState, ms); + SuperByteBuffer sbb = new SuperByteBuffer(data); + data.release(); + return sbb; } } diff --git a/src/main/java/nl/requios/effortlessbuilding/create/foundation/render/SuperByteBuffer.java b/src/main/java/nl/requios/effortlessbuilding/create/foundation/render/SuperByteBuffer.java index fff4a6f..188a749 100644 --- a/src/main/java/nl/requios/effortlessbuilding/create/foundation/render/SuperByteBuffer.java +++ b/src/main/java/nl/requios/effortlessbuilding/create/foundation/render/SuperByteBuffer.java @@ -1,18 +1,27 @@ package nl.requios.effortlessbuilding.create.foundation.render; +import java.nio.ByteBuffer; +import java.util.function.IntPredicate; + import com.jozufozu.flywheel.api.vertex.ShadedVertexList; +import com.jozufozu.flywheel.api.vertex.VertexList; import com.jozufozu.flywheel.backend.ShadersModHandler; +import com.jozufozu.flywheel.core.model.ShadeSeparatedBufferedData; import com.jozufozu.flywheel.core.vertex.BlockVertexList; import com.jozufozu.flywheel.util.DiffuseLightCalculator; import com.jozufozu.flywheel.util.transform.TStack; import com.jozufozu.flywheel.util.transform.Transform; -import com.mojang.blaze3d.vertex.BufferBuilder.DrawState; -import com.mojang.blaze3d.vertex.BufferBuilder.RenderedBuffer; +import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.math.*; +import com.mojang.math.Matrix3f; +import com.mojang.math.Matrix4f; +import com.mojang.math.Quaternion; +import com.mojang.math.Vector3f; +import com.mojang.math.Vector4f; import nl.requios.effortlessbuilding.create.foundation.block.render.SpriteShiftEntry; import nl.requios.effortlessbuilding.create.foundation.utility.Color; + import it.unimi.dsi.fastutil.longs.Long2IntMap; import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap; import net.minecraft.client.Minecraft; @@ -26,10 +35,11 @@ import net.minecraft.world.level.Level; public class SuperByteBuffer implements Transform, TStack { - private final ShadedVertexList template; + private final VertexList template; + private final IntPredicate shadedPredicate; // Vertex Position - private final PoseStack transforms; + private final PoseStack transforms = new PoseStack(); // Vertex Coloring private boolean shouldColor; @@ -57,11 +67,28 @@ public class SuperByteBuffer implements Transform, TStack true; - transforms = new PoseStack(); transforms.pushPose(); } @@ -70,24 +97,24 @@ public class SuperByteBuffer implements Transform, TStack, TStack, TStack, TStack, TStack, TStack { float targetU = u - entry.getOriginal() - .getU0() + entry.getTarget() - .getU0() - + scrollU; + .getU0() + entry.getTarget() + .getU0() + + scrollU; float targetV = v - entry.getOriginal() - .getV0() + entry.getTarget() - .getV0() - + scrollV; + .getV0() + entry.getTarget() + .getV0() + + scrollV; builder.uv(targetU, targetV); }; return this; @@ -362,9 +393,9 @@ public class SuperByteBuffer implements Transform, TStack { float targetU = entry.getTarget() - .getU((SpriteShiftEntry.getUnInterpolatedU(entry.getOriginal(), u) / sheetSize) + uTarget * 16); + .getU((SpriteShiftEntry.getUnInterpolatedU(entry.getOriginal(), u) / sheetSize) + uTarget * 16); float targetV = entry.getTarget() - .getV((SpriteShiftEntry.getUnInterpolatedV(entry.getOriginal(), v) / sheetSize) + vTarget * 16); + .getV((SpriteShiftEntry.getUnInterpolatedV(entry.getOriginal(), v) / sheetSize) + vTarget * 16); builder.uv(targetU, targetV); }; return this; @@ -461,4 +492,4 @@ public class SuperByteBuffer implements Transform, TStack" + "effortlessbuilding.action.replace": "Замещение", + + "effortlessbuilding.action.replace_only_air": "Замещать только воздух", + "effortlessbuilding.action.replace_only_air.description": "Замещаются только блоки воздуха. Нетвёрдые блоки, например, трава, по-прежнему замещаются.", + "effortlessbuilding.action.replace_blocks_and_air": "Замещать всё", + "effortlessbuilding.action.replace_blocks_and_air.description": "Замещаются как блоки, так и воздух.", + "effortlessbuilding.action.replace_only_blocks": "Замещать только блоки", + "effortlessbuilding.action.replace_only_blocks.description": "Замещаются только блоки, не воздух.", + "effortlessbuilding.action.replace_filtered_by_offhand": "Фильтр по второй руке", + "effortlessbuilding.action.replace_filtered_by_offhand.description": "Замещаются только блоки, совпадающие с блоком во второй руке. Если она пуста, замещается только воздух. Если во второй руке рандомизатор, замещаются только блоки, совпадающие с таковыми в рандомизаторе.", + "effortlessbuilding.action.toggle_protect_tile_entities": "Сохранять блоки-сущности", + "effortlessbuilding.action.toggle_protect_tile_entities.description": "Хранящие данные блоки, такие как сундуки, печи и воронки, не будут замещены.", + + "effortlessbuilding.action.build_speed": "Размещение", + "effortlessbuilding.action.filling": "Режим заполнения", + "effortlessbuilding.action.raised_edge": "Кромка", + "effortlessbuilding.action.thickness": "Толщина линии", + "effortlessbuilding.action.circle_start": "Начальная точка", + + "effortlessbuilding.action.normal_speed": "Медленно", + "effortlessbuilding.action.fast_speed": "Быстро", + "effortlessbuilding.action.full": "Объём", + "effortlessbuilding.action.hollow": "Поверхность", + "effortlessbuilding.action.skeleton": "Грани", + "effortlessbuilding.action.short_edge": "Узкая", + "effortlessbuilding.action.long_edge": "Широкая", + "effortlessbuilding.action.thickness_1": "1 блок толщиной", + "effortlessbuilding.action.thickness_3": "3 блока толщиной", + "effortlessbuilding.action.thickness_5": "5 блоков толщиной", + "effortlessbuilding.action.start_center": "Центр", + "effortlessbuilding.action.start_corner": "Угол", + + "commands.reach.usage": "/reach <уровень>", + + "effortlessbuilding.gui.scrollInput.defaultTitle": "Выберите опцию:", + "effortlessbuilding.gui.scrollInput.scrollToModify": "Прокрутить для изменения", + "effortlessbuilding.gui.scrollInput.scrollToAdjustAmount": "Прокрутить для подгонки количества", + "effortlessbuilding.gui.scrollInput.scrollToSelect": "Прокрутить для выбора", + "effortlessbuilding.gui.scrollInput.shiftScrollsFaster": "Shift ускоряет прокрутку", + "effortlessbuilding.gui.scrollInput.controlScrollsSlower": "Ctrl замедляет прокрутку", + + "effortlessbuilding.tooltip.holdForDescription": "Зажмите [%1$s] для описания", + "effortlessbuilding.tooltip.holdForControls": "Зажмите [%1$s] для управления", + "effortlessbuilding.tooltip.keyShift": "Shift", + "effortlessbuilding.tooltip.keyCtrl": "Ctrl", + "effortlessbuilding.tooltip.keybind": "[%1$s]" }