diff --git a/build.gradle b/build.gradle index 98c92fe1..a595775f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.7-SNAPSHOT' + id 'fabric-loom' version '1.9-SNAPSHOT' id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index 584bdf75..b44120ae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,9 +1,9 @@ org.gradle.jvmargs=-Xmx2048m # Fabric Properties # check these on https://fabricmc.net/develop/ - minecraft_version=1.21 - yarn_mappings=1.21+build.9 - loader_version=0.15.11 + minecraft_version=1.21.4 + yarn_mappings=1.21.4+build.1 + loader_version=0.16.9 # Mod Properties mod_version = 1.10.1 @@ -11,10 +11,10 @@ org.gradle.jvmargs=-Xmx2048m archives_base_name = bedrockify # Dependencies - fabric_version=0.102.0+1.21 - modmenu_version=11.0.1 - cloth_config_version=15.0.128 - apple_skin=mc1.21-3.0.5 - dab_version=2.6.3+1.21-fabric + fabric_version=0.111.0+1.21.4 + modmenu_version=13.0.0-beta.1 + cloth_config_version=17.0.142 + apple_skin=mc1.21.3-3.0.6 + dab_version=2.6.3+1.21.3-fabric iris_version=1.7.1+1.21 sodium_version=mc1.20.1-0.5.10 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e6441136..a4b76b95 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a4413138..e2847c82 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a42..f5feea6d 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -84,7 +86,8 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/gradlew.bat b/gradlew.bat index 25da30db..9d21a218 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## diff --git a/recipeReplacer1_21_4.py b/recipeReplacer1_21_4.py new file mode 100644 index 00000000..f4006031 --- /dev/null +++ b/recipeReplacer1_21_4.py @@ -0,0 +1,64 @@ +#!/usr/bin/python3 + +""" Recipe Replacer for Minecraft 1.21.4 +Created at Dec 12, 2024 by lonefelidae16 + +Usage: +> recipeReplacer1_21_4.py [--help | -h] [--test | -t] /path/to/target/recipe.json + +""" + +import json +import sys +import argparse + +parser = argparse.ArgumentParser( + prog='RecipeReplacer', + description='Make recipe.json compatible with MC1.21.4') +parser.add_argument('filename') +parser.add_argument('-t', '--test', action='store_true', help='show result JSON to STDOUT, no changes to the specified file') +args = parser.parse_args() + +if __name__ == '__main__': + + struct = {} + replaced = False + with open(args.filename, 'r') as target_file: + struct = json.load(target_file) + if not 'type' in struct or not 'result' in struct: + exit() + if struct['type'] == 'minecraft:crafting_shapeless': + ingredient_arr = [] + for ing in struct['ingredients']: + if 'item' in ing: + ingredient_arr.append(ing['item']) + elif 'tag' in ing: + ingredient_arr.append('#' + ing['tag']) + struct['ingredients'] = ingredient_arr + replaced = True + elif struct['type'] == 'minecraft:crafting_shaped': + if not 'key' in struct: + exit() + for k in struct['key']: + if 'item' in struct['key'][k]: + _item = struct['key'][k]['item'] + del struct['key'][k]['item'] + struct['key'][k] = _item + replaced = True + elif 'tag' in struct['key'][k]: + _tag = '#' + struct['key'][k]['tag'] + del struct['key'][k]['tag'] + struct['key'][k] = _tag + replaced = True + if type(struct['result']) is not str and not 'count' in struct['result']: + struct['result']['count'] = 1 + replaced = True + + if replaced: + if args.test: + print(json.dumps(struct, indent=2)) + else: + with open(args.filename, 'w') as target_file: + json.dump(struct, target_file, indent=2) + else: + print(args.filename + ": no changes made") diff --git a/src/main/java/me/juancarloscp52/bedrockify/client/BedrockifyClient.java b/src/main/java/me/juancarloscp52/bedrockify/client/BedrockifyClient.java index bb439121..ea51a478 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/client/BedrockifyClient.java +++ b/src/main/java/me/juancarloscp52/bedrockify/client/BedrockifyClient.java @@ -31,6 +31,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.option.KeyBinding; import net.minecraft.client.util.InputUtil; +import net.minecraft.entity.EntityPose; import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket; import net.minecraft.resource.ResourceType; import org.apache.logging.log4j.LogManager; @@ -129,11 +130,12 @@ public void onInitializeClient() { } // Stop elytra flying by pressing space - if(null != client.player && settings.elytraStop && client.player.isFallFlying() && timeFlying > 10 && client.options.jumpKey.isPressed()){ - client.player.stopFallFlying(); + if(null != client.player && settings.elytraStop && client.player.getPose().equals(EntityPose.GLIDING) && timeFlying > 10 && client.options.jumpKey.isPressed()){ + client.player.getAbilities().flying = false; + client.player.sendAbilitiesUpdate(); client.player.networkHandler.sendPacket(new ClientCommandC2SPacket(client.player, ClientCommandC2SPacket.Mode.START_FALL_FLYING)); } - if(null != client.player && client.player.isFallFlying() && !client.options.jumpKey.isPressed()) + if(null != client.player && client.player.getPose().equals(EntityPose.GLIDING) && !client.options.jumpKey.isPressed()) timeFlying++; else timeFlying = 0; diff --git a/src/main/java/me/juancarloscp52/bedrockify/client/features/bedrockShading/BedrockSunGlareShading.java b/src/main/java/me/juancarloscp52/bedrockify/client/features/bedrockShading/BedrockSunGlareShading.java index 9856c5c0..57f3b8f5 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/client/features/bedrockShading/BedrockSunGlareShading.java +++ b/src/main/java/me/juancarloscp52/bedrockify/client/features/bedrockShading/BedrockSunGlareShading.java @@ -41,7 +41,6 @@ public final class BedrockSunGlareShading { private final MinecraftClient client; public BedrockSunGlareShading() { - onSunlightIntensityChanged(); this.sunVector3f = new Vector3f(); this.client = MinecraftClient.getInstance(); } @@ -265,10 +264,11 @@ public float getSunAngleDiff() { } public float getSkyAttenuation() { - return this.skyAttenuation; + return getSkyAttenuation(false); } - public void onSunlightIntensityChanged() { - this.skyAttenuation = MathHelper.clampedLerp(1f, 0.60f, BedrockifyClient.getInstance().settings.sunlightIntensity / 100f); + public float getSkyAttenuation(boolean darker) { + this.skyAttenuation = MathHelper.clampedLerp(1f, darker? 0.40f:0.60f, BedrockifyClient.getInstance().settings.sunlightIntensity / 100f); + return this.skyAttenuation; } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/client/features/eatingAnimations/IEatingState.java b/src/main/java/me/juancarloscp52/bedrockify/client/features/eatingAnimations/IEatingState.java new file mode 100644 index 00000000..1f261fd2 --- /dev/null +++ b/src/main/java/me/juancarloscp52/bedrockify/client/features/eatingAnimations/IEatingState.java @@ -0,0 +1,14 @@ +package me.juancarloscp52.bedrockify.client.features.eatingAnimations; + +import net.minecraft.util.Hand; + +import java.util.Optional; + +public interface IEatingState { + default void setEatingHand(Hand hand) { + } + + default Optional getEatingHand() { + return Optional.empty(); + } +} diff --git a/src/main/java/me/juancarloscp52/bedrockify/client/features/fishingBobber/FishingBobber3DModel.java b/src/main/java/me/juancarloscp52/bedrockify/client/features/fishingBobber/FishingBobber3DModel.java index e1886d1d..9dff44f2 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/client/features/fishingBobber/FishingBobber3DModel.java +++ b/src/main/java/me/juancarloscp52/bedrockify/client/features/fishingBobber/FishingBobber3DModel.java @@ -3,19 +3,13 @@ import me.juancarloscp52.bedrockify.Bedrockify; import net.minecraft.client.model.*; import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.entity.model.EntityModel; import net.minecraft.client.render.entity.model.EntityModelLayer; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.projectile.FishingBobberEntity; +import net.minecraft.client.render.entity.state.FishingBobberEntityState; import net.minecraft.util.Identifier; -import net.minecraft.util.math.ColorHelper; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.List; - -public class FishingBobber3DModel extends EntityModel { +public class FishingBobber3DModel extends EntityModel { public static final EntityModelLayer MODEL_LAYER = new EntityModelLayer(Identifier.of(Bedrockify.MOD_ID, "fishing_hook"), "main"); public static final Identifier TEXTURE = Identifier.of(Bedrockify.MOD_ID, "textures/entity/fishing_hook.png"); public static final RenderLayer RENDER_LAYER = RenderLayer.getEntityTranslucent(TEXTURE); @@ -26,14 +20,8 @@ public class FishingBobber3DModel extends EntityM private static final String NAME_HOOK = "hook"; private static final float ANGLE_180_DEGREES = (float) (1f * Math.PI); - private final List black = new ArrayList<>(); - private final List textured = new ArrayList<>(); - public FishingBobber3DModel(@NotNull ModelPart root) { - this.black.add(root.getChild(NAME_HEAD_X)); - this.black.add(root.getChild(NAME_HEAD_Z)); - this.textured.add(root.getChild(NAME_BOBBER)); - this.textured.add(root.getChild(NAME_HOOK)); + super(root); } @NotNull @@ -50,13 +38,6 @@ public static TexturedModelData generateModel() { } @Override - public void setAngles(T entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) { - - } - - @Override - public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, int color) { - this.black.forEach(modelPart -> modelPart.render(matrices, vertices, light, overlay, ColorHelper.Argb.getArgb(ColorHelper.Argb.getAlpha(color),0,0,0))); - this.textured.forEach(modelPart -> modelPart.render(matrices, vertices, light, overlay, color)); + public void setAngles(T state) { } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/client/features/heldItemTooltips/HeldItemTooltips.java b/src/main/java/me/juancarloscp52/bedrockify/client/features/heldItemTooltips/HeldItemTooltips.java index ecfbc99f..488a8923 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/client/features/heldItemTooltips/HeldItemTooltips.java +++ b/src/main/java/me/juancarloscp52/bedrockify/client/features/heldItemTooltips/HeldItemTooltips.java @@ -1,12 +1,14 @@ package me.juancarloscp52.bedrockify.client.features.heldItemTooltips; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import me.juancarloscp52.bedrockify.client.BedrockifyClient; import me.juancarloscp52.bedrockify.client.BedrockifyClientSettings; import me.juancarloscp52.bedrockify.client.features.heldItemTooltips.tooltip.ContainerTooltip; import me.juancarloscp52.bedrockify.client.features.heldItemTooltips.tooltip.EnchantmentTooltip; import me.juancarloscp52.bedrockify.client.features.heldItemTooltips.tooltip.PotionTooltip; import me.juancarloscp52.bedrockify.client.features.heldItemTooltips.tooltip.Tooltip; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; @@ -22,6 +24,7 @@ import net.minecraft.util.Formatting; import net.minecraft.util.math.MathHelper; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -29,6 +32,8 @@ public class HeldItemTooltips { private final int tooltipSize = 6; + private static final boolean B_DAB_LOADED = FabricLoader.getInstance().isModLoaded("detailab"); + public int drawItemWithCustomTooltips(DrawContext drawContext, TextRenderer fontRenderer, Text text, float x, float y, int color, ItemStack currentStack) { final BedrockifyClientSettings settings = BedrockifyClient.getInstance().settings; final int screenBorder = settings.getScreenSafeArea(); @@ -40,7 +45,7 @@ public int drawItemWithCustomTooltips(DrawContext drawContext, TextRenderer font return 0; if(MinecraftClient.getInstance().interactionManager.hasStatusBars()){ y-=16; - if(player.getArmor()>0){ + if(player.getArmor()>0 || (B_DAB_LOADED && Sets.newHashSet(player.getArmorItems()).stream().anyMatch(stack -> stack.contains(DataComponentTypes.GLIDER)))){ y-=10; } if(player.getAbsorptionAmount()>0){ @@ -91,7 +96,7 @@ public int drawItemWithCustomTooltips(DrawContext drawContext, TextRenderer font * @param currentStack Current item stack of the player. * @return List with the tooltip information. */ - public List getTooltips(ItemStack currentStack) { + public static List getTooltips(ItemStack currentStack) { final Item item = currentStack.getItem(); final List result = Lists.newArrayList(); //If the item is a enchanted book, retrieve the enchantments. @@ -104,6 +109,13 @@ public List getTooltips(ItemStack currentStack) { // Lingering Potion has its own multiplier of duration, and it is hardcoded. item.appendTooltip(currentStack, Item.TooltipContext.DEFAULT, generated, TooltipType.BASIC); generateTooltipsForPotion(generated, result); + } else if (item == Items.OMINOUS_BOTTLE) { + var ominousComponent = currentStack.getComponents().get(DataComponentTypes.OMINOUS_BOTTLE_AMPLIFIER); + if (ominousComponent != null) { + List generated = Lists.newArrayList(); + ominousComponent.appendTooltip(Item.TooltipContext.DEFAULT, generated::add, TooltipType.BASIC); + generateTooltipsForPotion(generated, result); + } } else if(currentStack.getComponents().contains(DataComponentTypes.CONTAINER)){ var container = currentStack.getComponents().get(DataComponentTypes.CONTAINER); if(container != null){ diff --git a/src/main/java/me/juancarloscp52/bedrockify/client/features/heldItemTooltips/tooltip/ContainerTooltip.java b/src/main/java/me/juancarloscp52/bedrockify/client/features/heldItemTooltips/tooltip/ContainerTooltip.java index ffd1a221..6a47f69f 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/client/features/heldItemTooltips/tooltip/ContainerTooltip.java +++ b/src/main/java/me/juancarloscp52/bedrockify/client/features/heldItemTooltips/tooltip/ContainerTooltip.java @@ -8,7 +8,7 @@ public class ContainerTooltip extends Tooltip { String translationKey; public ContainerTooltip(ItemStack item){ - this.translationKey = item.getTranslationKey(); + this.translationKey = item.getItem().getTranslationKey(); this.primaryValue = item.getCount(); } diff --git a/src/main/java/me/juancarloscp52/bedrockify/client/features/loadingScreens/LoadingScreenWidget.java b/src/main/java/me/juancarloscp52/bedrockify/client/features/loadingScreens/LoadingScreenWidget.java index 41d954cd..ce85c512 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/client/features/loadingScreens/LoadingScreenWidget.java +++ b/src/main/java/me/juancarloscp52/bedrockify/client/features/loadingScreens/LoadingScreenWidget.java @@ -1,12 +1,13 @@ package me.juancarloscp52.bedrockify.client.features.loadingScreens; -import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.LogoDrawer; +import net.minecraft.client.render.RenderLayer; import net.minecraft.text.OrderedText; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -14,6 +15,7 @@ import java.util.List; import java.util.Random; +import java.util.Set; public class LoadingScreenWidget { @@ -22,7 +24,7 @@ public class LoadingScreenWidget { private static final int TIPS_NUM = 107; private final Identifier WIDGET_TEXTURE = Identifier.of("bedrockify", "textures/gui/bedrockify_widgets.png"); private Text tip; - private static final List EXCLUDED_TIPS = Lists.asList(15,new Integer[]{23,28,29,32,33,34,35,62}); + private static final Set EXCLUDED_TIPS = Sets.newHashSet(15,23,28,29,32,33,34,35,62); private long lastTipUpdate = 0; private final ExternalLoadingTips externalLoadingTips; private final LogoDrawer logoDrawer; @@ -88,7 +90,7 @@ public void render(DrawContext drawContext, int width, int height, Text title, T private void renderLoadingWidget(DrawContext drawContext, int x, int y) { RenderSystem.enableBlend(); RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); - drawContext.drawTexture(WIDGET_TEXTURE, x - 256 / 2, y - 89 / 2, 0, 0, 256, 89); + drawContext.drawTexture(RenderLayer::getGuiTextured, WIDGET_TEXTURE, x - 256 / 2, y - 89 / 2, 0, 0, 256, 89, 256, 256); } @@ -116,9 +118,9 @@ private int getMaxLineWidth(TextRenderer textRenderer, List text) { private void renderLoadingBar(DrawContext drawContext, int x, int y, int progress) { int barProgress = (int) ((MathHelper.clamp(progress,0,100)/100.0f) * 223.0f); - drawContext.drawTexture(WIDGET_TEXTURE, x - 111, y + 26, 0, 89, 222, 5); + drawContext.drawTexture(RenderLayer::getGuiTextured, WIDGET_TEXTURE, x - 111, y + 26, 0, 89, 222, 5, 256, 256); if (barProgress > 0) - drawContext.drawTexture(WIDGET_TEXTURE, x - 111, y + 26, 0, 94, barProgress, 5); + drawContext.drawTexture(RenderLayer::getGuiTextured, WIDGET_TEXTURE, x - 111, y + 26, 0, 94, barProgress, 5, 256, 256); } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/client/features/paperDoll/PaperDoll.java b/src/main/java/me/juancarloscp52/bedrockify/client/features/paperDoll/PaperDoll.java index c5d51236..43483a3e 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/client/features/paperDoll/PaperDoll.java +++ b/src/main/java/me/juancarloscp52/bedrockify/client/features/paperDoll/PaperDoll.java @@ -14,8 +14,9 @@ import net.minecraft.util.math.MathHelper; import org.joml.Quaternionf; import org.joml.Vector3f; +import org.spongepowered.include.com.google.common.collect.Sets; -import java.util.Arrays; +import java.util.Set; public class PaperDoll { private final MinecraftClient client; @@ -23,6 +24,9 @@ public class PaperDoll { private int posY = 60; private long lastTimeShown = 0; private BedrockifyClientSettings settings; + + private static final Set TARGET_POSE_NAMES = Sets.newHashSet(EntityPose.GLIDING.name(), EntityPose.SWIMMING.name(), "CRAWLING"); + /** * Uses in method drawPaperDoll; the custom shading vectors. * @@ -31,11 +35,11 @@ public class PaperDoll { */ private static final Vector3f FLAT_LIT_VEC1 = (new Vector3f(0.2F, 0.5F, -0.7F)).normalize(); private static final Vector3f FLAT_LIT_VEC2 = (new Vector3f(-0.2F, 0.5F, 0.7F)).normalize(); + public PaperDoll(MinecraftClient client) { this.client = client; } - private static final boolean supportsCrawling = Arrays.stream(EntityPose.values()).anyMatch(pose -> pose.name().equals("CRAWLING")); /** * Render the player at the top left of the screen. * The player will be rendered only when the player is not riding another entity, and it is sneaking, running, using elytra, using an item, underwater, or using a shield. @@ -59,7 +63,7 @@ public void renderPaperDoll(DrawContext drawContext) { if (client.player != null) { //If the player does an action that must show the player entity gui, set the counter to the current time. - if (client.player.isSneaking() || client.player.isSubmergedInWater() || client.player.getPose().equals(EntityPose.SWIMMING) || client.player.isSprinting() || client.player.getAbilities().flying || client.player.isFallFlying() || client.player.isBlocking() || client.player.isUsingItem() || (supportsCrawling && client.player.getPose() == EntityPose.valueOf("CRAWLING"))) + if (shouldShow(client.player)) lastTimeShown = System.currentTimeMillis(); // If the difference between the current game ticks and showTicks is less than 100 ticks, draw the player entity. @@ -68,6 +72,22 @@ public void renderPaperDoll(DrawContext drawContext) { } } + /** + * Checks player's action. + * + * @param player An instance of a {@link ClientPlayerEntity}. + * @return {@code true} if condition matches. + */ + private static boolean shouldShow(ClientPlayerEntity player) { + return player.isSneaking() || + player.isSprinting() || + player.isSubmergedInWater() || + player.getAbilities().flying || // flying in Creative mode + player.isBlocking() || + player.isUsingItem() || + TARGET_POSE_NAMES.contains(player.getPose().name()); + } + /** * Draw the player entity in the specified position on screen. */ @@ -81,7 +101,7 @@ private void drawPaperDoll(DrawContext drawContext) { int renderPosY = posY; // If the player is elytra flying, the entity must be manually centered depending on the pitch. - if (player.isFallFlying()) + if (player.getPose().equals(EntityPose.GLIDING)) renderPosY = posY - MathHelper.ceil(size * 2 * toMaxAngleRatio(player.getPitch())); // If the player is swimming, the entity must also be centered in the Y axis. else if (player.isSwimming()) { @@ -104,7 +124,7 @@ else if (player.isSwimming()) { // Set the entity desired rotation for drawing. float angle = 145; - if (player.isFallFlying() || player.isBlocking()) { + if (player.getPose().equals(EntityPose.GLIDING) || player.isBlocking()) { player.headYaw = angle; } else { player.setYaw(headYaw - bodyYaw + angle); @@ -119,7 +139,7 @@ else if (player.isSwimming()) { EntityRenderDispatcher entityRenderDispatcher = MinecraftClient.getInstance().getEntityRenderDispatcher(); entityRenderDispatcher.setRenderShadows(false); VertexConsumerProvider.Immediate immediate = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(); - RenderSystem.runAsFancy(() -> entityRenderDispatcher.render(player, 0, 0, 0, 0.0F, 1.0F, matrixStack, immediate, 0xF000F0)); + entityRenderDispatcher.render(player, 0, 0, 0, 1.0F, matrixStack, immediate, 0xF000F0); immediate.draw(); entityRenderDispatcher.setRenderShadows(true); diff --git a/src/main/java/me/juancarloscp52/bedrockify/client/features/savingOverlay/SavingOverlay.java b/src/main/java/me/juancarloscp52/bedrockify/client/features/savingOverlay/SavingOverlay.java index 22c53c42..82c85a6a 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/client/features/savingOverlay/SavingOverlay.java +++ b/src/main/java/me/juancarloscp52/bedrockify/client/features/savingOverlay/SavingOverlay.java @@ -5,6 +5,7 @@ import me.juancarloscp52.bedrockify.client.BedrockifyClientSettings; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; @@ -23,10 +24,10 @@ public void render(DrawContext drawContext){ RenderSystem.defaultBlendFunc(); RenderSystem.setShaderColor(1,1,1,BedrockifyClient.getInstance().hudOpacity.getHudOpacity(false)); // Draw chest - drawContext.drawTexture(WIDGET_TEXTURE, client.getWindow().getScaledWidth()-(21+settings.getScreenSafeArea()), 19 + settings.getScreenSafeArea(), 0, 99, 16, 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, WIDGET_TEXTURE, client.getWindow().getScaledWidth()-(21+settings.getScreenSafeArea()), 19 + settings.getScreenSafeArea(), 0, 99, 16, 17, 256, 256); // Draw arrow renderTimer+= BedrockifyClient.getInstance().deltaTime*0.000000001f; - drawContext.drawTexture(WIDGET_TEXTURE, client.getWindow().getScaledWidth()-(19+settings.getScreenSafeArea()), 5 + settings.getScreenSafeArea() + MathHelper.floor(MathHelper.abs(MathHelper.sin(renderTimer * 3.1415926F) * 6)), 16, 100, 12, 15); + drawContext.drawTexture(RenderLayer::getGuiTextured, WIDGET_TEXTURE, client.getWindow().getScaledWidth()-(19+settings.getScreenSafeArea()), 5 + settings.getScreenSafeArea() + MathHelper.floor(MathHelper.abs(MathHelper.sin(renderTimer * 3.1415926F) * 6)), 16, 100, 12, 15, 256, 256); RenderSystem.setShaderColor(1,1,1,1); RenderSystem.disableBlend(); } diff --git a/src/main/java/me/juancarloscp52/bedrockify/client/features/sheepColors/SheepSkinResource.java b/src/main/java/me/juancarloscp52/bedrockify/client/features/sheepColors/SheepSkinResource.java index df74fbbd..85020ccc 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/client/features/sheepColors/SheepSkinResource.java +++ b/src/main/java/me/juancarloscp52/bedrockify/client/features/sheepColors/SheepSkinResource.java @@ -13,7 +13,7 @@ import java.io.InputStream; public class SheepSkinResource implements SimpleSynchronousResourceReloadListener { - public static Identifier TEXTURE_SHEARED = null; + public static final Identifier TEXTURE_SHEARED = Identifier.of(Bedrockify.MOD_ID, "sheep_sheared"); private static final Identifier TEXTURE_SHEEP_SKIN = Identifier.of("textures/entity/sheep/sheep.png"); /** @@ -47,22 +47,22 @@ public void reload(ResourceManager manager) { // Extract the White pixels without face. for (int x = 0; x < nativeImage.getWidth(); x++) { for (int y = 0; y < nativeImage.getHeight(); y++) { - final int abgr = nativeImage.getColor(x, y); - final double b = (abgr >> 16 & 0xFF) / 255.; - final double g = (abgr >> 8 & 0xFF) / 255.; - final double r = (abgr & 0xFF) / 255.; + final int arbg = nativeImage.getColorArgb(x, y); + final double r = (arbg >> 16 & 0xFF) / 255.; + final double b = (arbg >> 8 & 0xFF) / 255.; + final double g = (arbg & 0xFF) / 255.; final double[] hsv = rgb2hsv(r, g, b); if (!isInFaceRegion(x / imageWidthMul, y / imageHeightMul) && isPixelMostlyWhite(hsv)) { - nativeImage.setColor(x, y, abgr); + nativeImage.setColorArgb(x, y, arbg); } else { - nativeImage.setColor(x, y, 0); + nativeImage.setColorArgb(x, y, 0); } } } // Register the extracted texture. final NativeImageBackedTexture texture = new NativeImageBackedTexture(nativeImage); - TEXTURE_SHEARED = MinecraftClient.getInstance().getTextureManager().registerDynamicTexture("sheep_sheared", texture); + MinecraftClient.getInstance().getTextureManager().registerTexture(TEXTURE_SHEARED, texture); } catch (Throwable ex) { BedrockifyClient.LOGGER.error("[%s] Unable to extract sheep texture.".formatted(Bedrockify.class.getSimpleName()), ex); } diff --git a/src/main/java/me/juancarloscp52/bedrockify/client/gui/SettingsGUI.java b/src/main/java/me/juancarloscp52/bedrockify/client/gui/SettingsGUI.java index b7ed0e05..f2ed49e8 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/client/gui/SettingsGUI.java +++ b/src/main/java/me/juancarloscp52/bedrockify/client/gui/SettingsGUI.java @@ -139,10 +139,7 @@ public Screen getConfigScreen(Screen parent){ settingsClient.bedrockShading=newValue; MinecraftClient.getInstance().worldRenderer.reload(); }).build()); - visualImprovements.addEntry(entryBuilder.startIntSlider(Text.translatable("bedrockify.options.sunlightIntensity"), settingsClient.sunlightIntensity,0,100).setTooltip(wrapLines(Text.translatable("bedrockify.options.sunlightIntensity.tooltip"))).setDefaultValue(50).setSaveConsumer(newValue -> { - settingsClient.sunlightIntensity = newValue; - BedrockifyClient.getInstance().bedrockSunGlareShading.onSunlightIntensityChanged(); - }).build()); + visualImprovements.addEntry(entryBuilder.startIntSlider(Text.translatable("bedrockify.options.sunlightIntensity"), settingsClient.sunlightIntensity,0,100).setTooltip(wrapLines(Text.translatable("bedrockify.options.sunlightIntensity.tooltip"))).setDefaultValue(50).setSaveConsumer(newValue -> settingsClient.sunlightIntensity = newValue).build()); /* * diff --git a/src/main/java/me/juancarloscp52/bedrockify/common/block/AbstractBECauldronBlock.java b/src/main/java/me/juancarloscp52/bedrockify/common/block/AbstractBECauldronBlock.java index 4ef14e21..1077f729 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/common/block/AbstractBECauldronBlock.java +++ b/src/main/java/me/juancarloscp52/bedrockify/common/block/AbstractBECauldronBlock.java @@ -10,8 +10,8 @@ import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.ItemActionResult; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -24,16 +24,16 @@ public AbstractBECauldronBlock(Settings settings, CauldronBehavior.CauldronBehav } @Override - public ItemActionResult onUseWithItem(ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + public ActionResult onUseWithItem(ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { if (!Bedrockify.getInstance().settings.bedrockCauldron) { - return ItemActionResult.FAIL; + return ActionResult.FAIL; } return super.onUseWithItem(stack, state, world, pos, player, hand, hit); } @Override - public ItemStack getPickStack(WorldView world, BlockPos pos, BlockState state) { + protected ItemStack getPickStack(WorldView world, BlockPos pos, BlockState state, boolean includeData) { return new ItemStack(Blocks.CAULDRON); } diff --git a/src/main/java/me/juancarloscp52/bedrockify/common/block/cauldron/BedrockCauldronBehavior.java b/src/main/java/me/juancarloscp52/bedrockify/common/block/cauldron/BedrockCauldronBehavior.java index b65e0575..e4f228d6 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/common/block/cauldron/BedrockCauldronBehavior.java +++ b/src/main/java/me/juancarloscp52/bedrockify/common/block/cauldron/BedrockCauldronBehavior.java @@ -27,9 +27,9 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.Identifier; -import net.minecraft.util.ItemActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -48,11 +48,11 @@ public interface BedrockCauldronBehavior { CauldronBehavior DYE_ITEM_BY_COLORED_WATER = (state, world, pos, player, hand, stack) -> { if (state == null || world == null || pos == null || !Bedrockify.getInstance().settings.bedrockCauldron) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } if (!stack.isIn(ItemTags.DYEABLE)) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } Optional entity = retrieveCauldronEntity(world, pos); @@ -69,30 +69,33 @@ public interface BedrockCauldronBehavior { world.emitGameEvent(null, GameEvent.FLUID_PICKUP, pos); } - return ItemActionResult.success(world.isClient); + return ActionResult.SUCCESS; }; CauldronBehavior DYE_WATER = (state, world, pos, player, hand, stack) -> { if (state == null || world == null || pos == null || !Bedrockify.getInstance().settings.bedrockCauldron) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } Item item = stack.getItem(); if (!(item instanceof DyeItem dyeItem)) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } Optional entity = world.getBlockEntity(pos, BedrockCauldronBlocks.WATER_CAULDRON_ENTITY); final int level; + final int nextColor; if (entity.isPresent()) { // The Cauldron already has color. final int currentColor = entity.get().getTintColor(); - if (ColorBlenderHelper.blendColors(currentColor, ColorBlenderHelper.fromDyeItem(dyeItem)) == currentColor) { - return ItemActionResult.SUCCESS; + nextColor = ColorBlenderHelper.blendColors(currentColor, ColorBlenderHelper.fromDyeItem(dyeItem)); + if (nextColor == currentColor) { + return ActionResult.SUCCESS; } level = state.get(ColoredWaterCauldronBlock.LEVEL); } else { // Otherwise it may be Water Cauldron. + nextColor = ColorBlenderHelper.fromDyeItem(dyeItem); level = ColoredWaterCauldronBlock.getLevelFromWaterCauldronState(state); } @@ -108,10 +111,10 @@ public interface BedrockCauldronBehavior { world.emitGameEvent(null, GameEvent.BLOCK_CHANGE, pos); } world.getBlockEntity(pos, BedrockCauldronBlocks.WATER_CAULDRON_ENTITY).ifPresent(blockEntity -> { - blockEntity.blendDyeItem(dyeItem); + blockEntity.setDyeColor(nextColor); }); - return ItemActionResult.success(world.isClient); + return ActionResult.SUCCESS; }; /** @@ -119,22 +122,22 @@ public interface BedrockCauldronBehavior { */ CauldronBehavior PLACE_WATER_BY_POTION = (state, world, pos, player, hand, stack) -> { if (state == null || world == null || pos == null || !Bedrockify.getInstance().settings.bedrockCauldron) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } var component = stack.get(DataComponentTypes.POTION_CONTENTS); if (component != null && !component.matches(Potions.WATER)) { - return ItemActionResult.SUCCESS; + return ActionResult.SUCCESS; } final int nextLevel; if (state.isOf(Blocks.WATER_CAULDRON)) { if (state.get(LeveledCauldronBlock.LEVEL) >= LeveledCauldronBlock.MAX_LEVEL) { - return ItemActionResult.SUCCESS; + return ActionResult.SUCCESS; } nextLevel = state.cycle(LeveledCauldronBlock.LEVEL).get(LeveledCauldronBlock.LEVEL); } else if (state.isOf(BedrockCauldronBlocks.COLORED_WATER_CAULDRON)) { if (state.get(ColoredWaterCauldronBlock.LEVEL) >= ColoredWaterCauldronBlock.MAX_LEVEL) { - return ItemActionResult.SUCCESS; + return ActionResult.SUCCESS; } nextLevel = Math.min(ColoredWaterCauldronBlock.convertToWaterCauldronLevel(state) + 1, LeveledCauldronBlock.MAX_LEVEL); } else { @@ -151,7 +154,7 @@ public interface BedrockCauldronBehavior { world.emitGameEvent(null, GameEvent.FLUID_PLACE, pos); } - return ItemActionResult.success(world.isClient); + return ActionResult.SUCCESS; }; /** @@ -159,7 +162,7 @@ public interface BedrockCauldronBehavior { */ CauldronBehavior PICK_POTION_FLUID = (state, world, pos, player, hand, stack) -> { if (state == null || world == null || pos == null || !Bedrockify.getInstance().settings.bedrockCauldron) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } Optional entity = retrieveCauldronEntity(world, pos); @@ -179,17 +182,22 @@ public interface BedrockCauldronBehavior { final Item potionType = blockEntity.getPotionType(); if (!world.isClient) { if (!PotionCauldronBlock.tryPickFluid(state, world, pos)) { - return ItemActionResult.SUCCESS; + return ActionResult.SUCCESS_SERVER; } + final ItemStack potionStack = PotionContentsComponent.createStack(potionType, potionEntry); + if (!potionStack.contains(DataComponentTypes.POTION_CONTENTS)) { + return ActionResult.SUCCESS_SERVER; + } + final int potionColor = Objects.requireNonNull(potionStack.get(DataComponentTypes.POTION_CONTENTS)).getColor(); player.incrementStat(Stats.USE_CAULDRON); player.incrementStat(Stats.USED.getOrCreateStat(item)); - player.setStackInHand(hand, ItemUsage.exchangeStack(stack, player, PotionContentsComponent.createStack(potionType, potionEntry))); + player.setStackInHand(hand, ItemUsage.exchangeStack(stack, player, potionStack)); world.playSound(null, pos, SoundEvents.ITEM_BOTTLE_FILL, SoundCategory.BLOCKS); world.emitGameEvent(null, GameEvent.FLUID_PICKUP, pos); - addPotionParticle(world.getBlockState(pos), world, pos, PotionContentsComponent.getColor(potionEntry)); + addPotionParticle(world.getBlockState(pos), world, pos, potionColor); } - return ItemActionResult.success(world.isClient); + return ActionResult.SUCCESS; }; /** @@ -197,25 +205,25 @@ public interface BedrockCauldronBehavior { */ CauldronBehavior PLACE_POTION_FLUID = (state, world, pos, player, hand, stack) -> { if (state == null || world == null || pos == null || !Bedrockify.getInstance().settings.bedrockCauldron) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } if (!(stack.getItem() instanceof PotionItem)) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } var component = stack.get(DataComponentTypes.POTION_CONTENTS); if (component == null) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } var optionalPotion = component.potion(); if (optionalPotion.isEmpty()) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } var potionEntry = optionalPotion.get(); if (potionEntry.value().getEffects().isEmpty() && !component.matches(Potions.WATER)) { // Prevent to place the fluid of Awkward Potion, Mundane Potion, etc. - return ItemActionResult.SUCCESS; + return ActionResult.SUCCESS; } final BlockState newState; @@ -236,7 +244,7 @@ public interface BedrockCauldronBehavior { // The cauldron is full. final int currentLevel = state.get(PotionCauldronBlock.LEVEL); if (currentLevel >= PotionCauldronBlock.MAX_LEVEL) { - return ItemActionResult.SUCCESS; + return ActionResult.SUCCESS_SERVER; } final int nextLevel = Math.min(currentLevel + PotionCauldronBlock.BOTTLE_LEVEL, PotionCauldronBlock.MAX_LEVEL); @@ -267,7 +275,7 @@ public interface BedrockCauldronBehavior { blockEntity.setPotion(processing); }); - return ItemActionResult.success(world.isClient); + return ActionResult.SUCCESS; }; /** @@ -275,11 +283,11 @@ public interface BedrockCauldronBehavior { */ CauldronBehavior TIPPED_ARROW_WITH_POTION = (state, world, pos, player, hand, stack) -> { if (state == null || world == null || pos == null || !Bedrockify.getInstance().settings.bedrockCauldron) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } if (!stack.isOf(Items.ARROW)) { - return ItemActionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return ActionResult.PASS_TO_DEFAULT_BLOCK_ACTION; } Optional entity = retrieveCauldronEntity(world, pos); @@ -299,7 +307,7 @@ public interface BedrockCauldronBehavior { // Determine arrow count and fluid level to decrease. final int tippedArrowCount = PotionCauldronBlock.getMaxTippedArrowCount(stack, state); if (tippedArrowCount <= 0) { - return ItemActionResult.SUCCESS; + return ActionResult.SUCCESS_SERVER; } final int consumedFluidLevel = PotionCauldronBlock.getDecLevelByStack(stack, tippedArrowCount); final int afterFluidLevel = state.get(PotionCauldronBlock.LEVEL) - consumedFluidLevel; @@ -341,13 +349,13 @@ public interface BedrockCauldronBehavior { world.emitGameEvent(null, GameEvent.FLUID_PICKUP, pos); } - return ItemActionResult.success(world.isClient); + return ActionResult.SUCCESS; }; CauldronBehavior PICK_COLORED_WATER = (state, world, pos, player, hand, stack) -> { if (!world.isClient) { if (!ColoredWaterCauldronBlock.tryPickFluid(state, world, pos)) { - return ItemActionResult.SUCCESS; + return ActionResult.SUCCESS_SERVER; } Item item = stack.getItem(); player.setStackInHand(hand, ItemUsage.exchangeStack(stack, player, PotionContentsComponent.createStack(Items.POTION, Potions.WATER))); @@ -357,7 +365,7 @@ public interface BedrockCauldronBehavior { world.emitGameEvent(null, GameEvent.FLUID_PICKUP, pos); } - return ItemActionResult.success(world.isClient); + return ActionResult.SUCCESS; }; CauldronBehavior FILL_BUCKET_WITH_COLORED_WATER = (state, world, pos, player, hand, stack) -> { @@ -377,7 +385,8 @@ static Optional retrieveCauldronEntity(World world, Bl if (entity.isEmpty()) { // Increasing the fluid requires to retrieve the potion. Bedrockify.LOGGER.error( - "[%s] something went wrong to get the fluid in cauldron".formatted(Bedrockify.class.getSimpleName()), + "[{}] something went wrong to get the fluid in cauldron", + Bedrockify.class.getSimpleName(), new NullPointerException("RegistryWorldView#getBlockEntity is not present at " + pos)); return Optional.empty(); } @@ -394,14 +403,15 @@ static Optional retrievePotion(WaterCauldronBlockEntity blockEntity) { final Potion potion = Registries.POTION.get(potionId); if (!Registries.POTION.containsId(potionId) || potion == null) { Bedrockify.LOGGER.error( - "[%s] something went wrong to get the potion from Registries".formatted(Bedrockify.class.getSimpleName()), + "[{}] something went wrong to get the potion from Registries", + Bedrockify.class.getSimpleName(), new IllegalStateException("potion has disappeared, maybe the mod is gone?")); return Optional.empty(); } return Optional.of(potion); } - static ItemActionResult emptyCauldronFromWrongState(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, ItemStack stack) { + static ActionResult emptyCauldronFromWrongState(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, ItemStack stack) { return evaporateCauldron(state, world, pos, player, hand, stack, stack.copy()); } @@ -420,7 +430,7 @@ static void registerEvaporateBucketBehavior(Map map) { /** * Empties the cauldron by spawning particles and sound. */ - static ItemActionResult evaporateCauldron(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, ItemStack current, ItemStack after) { + static ActionResult evaporateCauldron(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, ItemStack current, ItemStack after) { if (!world.isClient) { final Identifier particleId = Registries.PARTICLE_TYPE.getId(ParticleTypes.POOF); for (int i = 0; i < 10; ++i) { diff --git a/src/main/java/me/juancarloscp52/bedrockify/common/block/entity/WaterCauldronBlockEntity.java b/src/main/java/me/juancarloscp52/bedrockify/common/block/entity/WaterCauldronBlockEntity.java index b737a58b..5e3dcda0 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/common/block/entity/WaterCauldronBlockEntity.java +++ b/src/main/java/me/juancarloscp52/bedrockify/common/block/entity/WaterCauldronBlockEntity.java @@ -71,11 +71,10 @@ public void setPotion(ItemStack potionItem) { var potion = optionalPotion.get(); this.potionTypeId = Registries.ITEM.getId(potionItem.getItem()); this.fluidId = Registries.POTION.getId(potion.value()); - this.setTintColor(PotionContentsComponent.getColor(potion)); + this.setTintColor(component.getColor()); } - public void blendDyeItem(T item) { - final int itemColor = ColorBlenderHelper.fromDyeItem(item); + public void setDyeColor(int itemColor) { final int resultColor; if (Objects.equals(this.fluidId, Registries.BLOCK.getId(BedrockCauldronBlocks.COLORED_WATER_CAULDRON))) { resultColor = ColorBlenderHelper.blendColors(this.getTintColor(), itemColor); @@ -97,8 +96,11 @@ private void setTintColor(int tintColor) { */ private void checkExactIds() { boolean valid = false; + // These branches could be simpler, but please do not simplify them. + // Reason: To maintain forward compatibility from Bedrockify v1.7 + // Check commit e37f57564d736d455e4a06dcdce259ea0be377de if (Registries.ITEM.get(this.getFluidId()) instanceof DyeItem dyeItem) { - this.blendDyeItem(dyeItem); + this.setDyeColor(ColorBlenderHelper.fromDyeItem(dyeItem)); valid = true; } else if (Registries.BLOCK.get(this.getFluidId()) instanceof ColoredWaterCauldronBlock) { valid = true; @@ -106,7 +108,7 @@ private void checkExactIds() { var potionEntry = Registries.POTION.getEntry(this.getFluidId()); if (potionEntry.isPresent()) { valid = true; - this.setTintColor(PotionContentsComponent.getColor(potionEntry.get())); + this.setTintColor(Objects.requireNonNull(PotionContentsComponent.createStack(Items.GLASS_BOTTLE, potionEntry.get()).get(DataComponentTypes.POTION_CONTENTS)).getColor()); } } if (!valid) { diff --git a/src/main/java/me/juancarloscp52/bedrockify/common/features/cauldron/BedrockCauldronBlocks.java b/src/main/java/me/juancarloscp52/bedrockify/common/features/cauldron/BedrockCauldronBlocks.java index d94c13a2..48806e48 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/common/features/cauldron/BedrockCauldronBlocks.java +++ b/src/main/java/me/juancarloscp52/bedrockify/common/features/cauldron/BedrockCauldronBlocks.java @@ -4,25 +4,44 @@ import me.juancarloscp52.bedrockify.common.block.ColoredWaterCauldronBlock; import me.juancarloscp52.bedrockify.common.block.PotionCauldronBlock; import me.juancarloscp52.bedrockify.common.block.entity.WaterCauldronBlockEntity; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder; +import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.util.Identifier; +import java.util.function.Function; + public final class BedrockCauldronBlocks { - public static final Block POTION_CAULDRON = new PotionCauldronBlock(FabricBlockSettings.copyOf(Blocks.CAULDRON).emissiveLighting((state, world, pos) -> true)); - public static final Block COLORED_WATER_CAULDRON = new ColoredWaterCauldronBlock(FabricBlockSettings.copyOf(Blocks.CAULDRON)); + public static final Block POTION_CAULDRON; + public static final Block COLORED_WATER_CAULDRON; + + private static final Identifier ID_POTION_CAULDRON = Identifier.of(Bedrockify.MOD_ID, "potion_cauldron"); + private static final Identifier ID_COLORED_WATER_CAULDRON = Identifier.of(Bedrockify.MOD_ID, "colored_water_cauldron"); - public static final BlockEntityType WATER_CAULDRON_ENTITY = FabricBlockEntityTypeBuilder.create(WaterCauldronBlockEntity::new, POTION_CAULDRON, COLORED_WATER_CAULDRON).build(); + public static final BlockEntityType WATER_CAULDRON_ENTITY; public static void register() { - Registry.register(Registries.BLOCK, Identifier.of(Bedrockify.MOD_ID, "potion_cauldron"), POTION_CAULDRON); - Registry.register(Registries.BLOCK, Identifier.of(Bedrockify.MOD_ID, "colored_water_cauldron"), COLORED_WATER_CAULDRON); + Registry.register(Registries.BLOCK, ID_POTION_CAULDRON, POTION_CAULDRON); + Registry.register(Registries.BLOCK, ID_COLORED_WATER_CAULDRON, COLORED_WATER_CAULDRON); Registry.register(Registries.BLOCK_ENTITY_TYPE, Identifier.of(Bedrockify.MOD_ID, "water_cauldron_entity"), WATER_CAULDRON_ENTITY); } + + private static Block prepare(Identifier id, Function factory, AbstractBlock.Settings settings) { + RegistryKey key = RegistryKey.of(RegistryKeys.BLOCK, id); + return factory.apply(settings.registryKey(key)); + } + + static { + POTION_CAULDRON = prepare(ID_POTION_CAULDRON, PotionCauldronBlock::new, AbstractBlock.Settings.copy(Blocks.CAULDRON).emissiveLighting((state, world, pos) -> true)); + COLORED_WATER_CAULDRON = prepare(ID_COLORED_WATER_CAULDRON, ColoredWaterCauldronBlock::new, AbstractBlock.Settings.copy(Blocks.CAULDRON)); + + WATER_CAULDRON_ENTITY = FabricBlockEntityTypeBuilder.create(WaterCauldronBlockEntity::new, POTION_CAULDRON, COLORED_WATER_CAULDRON).build(); + } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/common/features/cauldron/ColorBlenderHelper.java b/src/main/java/me/juancarloscp52/bedrockify/common/features/cauldron/ColorBlenderHelper.java index b5600d56..cf617181 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/common/features/cauldron/ColorBlenderHelper.java +++ b/src/main/java/me/juancarloscp52/bedrockify/common/features/cauldron/ColorBlenderHelper.java @@ -31,8 +31,12 @@ public static ItemStack blendColors(ItemStack base, int... colors) { DyedColorComponent dyedColorComponent = base.get(DataComponentTypes.DYED_COLOR); final int[] blendArray; - blendArray = Arrays.copyOf(colors, colors.length + 1); - blendArray[blendArray.length - 1] = DyedColorComponent.getColor(base, 0xFFA06540); + if (dyedColorComponent != null) { + blendArray = Arrays.copyOf(colors, colors.length + 1); + blendArray[blendArray.length - 1] = DyedColorComponent.getColor(base, 0xFFA06540); + } else { + blendArray = colors; + } boolean showInTooltip = dyedColorComponent == null || dyedColorComponent.showInTooltip(); base.set(DataComponentTypes.DYED_COLOR, new DyedColorComponent(blendColors(blendArray), showInTooltip)); diff --git a/src/main/java/me/juancarloscp52/bedrockify/common/features/fireAspectLight/FireAspectLightHelper.java b/src/main/java/me/juancarloscp52/bedrockify/common/features/fireAspectLight/FireAspectLightHelper.java new file mode 100644 index 00000000..b38531e5 --- /dev/null +++ b/src/main/java/me/juancarloscp52/bedrockify/common/features/fireAspectLight/FireAspectLightHelper.java @@ -0,0 +1,19 @@ +package me.juancarloscp52.bedrockify.common.features.fireAspectLight; + +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.item.ItemStack; + +public final class FireAspectLightHelper { + public static boolean canLitWith(ItemStack itemStack) { + if (itemStack == null) { + return false; + } + + if (itemStack.isEmpty()) { + return false; + } + + return EnchantmentHelper.getEnchantments(itemStack).getEnchantments().stream().anyMatch(e -> e.matchesId(Enchantments.FIRE_ASPECT.getValue())); + } +} diff --git a/src/main/java/me/juancarloscp52/bedrockify/common/payloads/CauldronParticlePayload.java b/src/main/java/me/juancarloscp52/bedrockify/common/payloads/CauldronParticlePayload.java index b0b213a9..71c90eab 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/common/payloads/CauldronParticlePayload.java +++ b/src/main/java/me/juancarloscp52/bedrockify/common/payloads/CauldronParticlePayload.java @@ -11,6 +11,8 @@ import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; +import java.util.Objects; + public final class CauldronParticlePayload extends AbstractVelocityParticlePayload { private Identifier particleType; @@ -47,7 +49,7 @@ public void receive(CauldronParticlePayload payload, ClientPlayNetworking.Contex } final MinecraftClient client = context.client(); try { - var particle = Registries.PARTICLE_TYPE.get(payload.particleType); + var particle = Objects.requireNonNull(Registries.PARTICLE_TYPE.get(payload.particleType)); double x = payload.position.x; double y = payload.position.y; double z = payload.position.z; diff --git a/src/main/java/me/juancarloscp52/bedrockify/datagen/BedrockIfyWorldGenProvider.java b/src/main/java/me/juancarloscp52/bedrockify/datagen/BedrockIfyWorldGenProvider.java index 92b70906..bb097e76 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/datagen/BedrockIfyWorldGenProvider.java +++ b/src/main/java/me/juancarloscp52/bedrockify/datagen/BedrockIfyWorldGenProvider.java @@ -16,8 +16,8 @@ public BedrockIfyWorldGenProvider(FabricDataOutput output, CompletableFuture extends EntityModel { - - @Inject(method = "render", at = @At("HEAD"), cancellable = true) - protected void injectCustomBabyRender(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, int color, CallbackInfo ci){ - //Empty injection to be modified in child mixin (see https://www.fabricmc.net/wiki/tutorial:mixinheritance) - } -} diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/babyVillagerHeads/VillagerResemblingModelMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/babyVillagerHeads/VillagerResemblingModelMixin.java index 26d8065a..8cd3c657 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/babyVillagerHeads/VillagerResemblingModelMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/babyVillagerHeads/VillagerResemblingModelMixin.java @@ -1,62 +1,25 @@ package me.juancarloscp52.bedrockify.mixin.client.features.babyVillagerHeads; -import com.google.common.collect.ImmutableList; import me.juancarloscp52.bedrockify.client.BedrockifyClient; import net.minecraft.client.model.ModelPart; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.entity.model.EntityModelPartNames; import net.minecraft.client.render.entity.model.VillagerResemblingModel; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.Entity; +import net.minecraft.client.render.entity.state.VillagerEntityRenderState; +import org.joml.Vector3f; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(VillagerResemblingModel.class) -public abstract class VillagerResemblingModelMixin extends SinglePartEntityModelMixin { - - @Shadow @Final private ModelPart rightLeg; - @Shadow @Final private ModelPart leftLeg; +public abstract class VillagerResemblingModelMixin { @Shadow @Final private ModelPart head; - @Unique - public ModelPart body; - @Unique - public ModelPart arms; - - @Inject(method = "", at=@At("RETURN")) - private void ctr(ModelPart root, CallbackInfo ci){ - this.body = root.getChild(EntityModelPartNames.BODY); - this.arms = root.getChild(EntityModelPartNames.ARMS); - } - - //Override parent injection with baby villager renderer. For more information see: https://www.fabricmc.net/wiki/tutorial:mixinheritance - @Override - protected void injectCustomBabyRender(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, int color, CallbackInfo ci) { - if(this.child && BedrockifyClient.getInstance().settings.babyVillagerHeads){ - // Render scaled head. - float scale = 1.5f; - matrices.push(); - matrices.scale(scale,scale,scale); - this.getHeadParts().forEach(modelPart -> modelPart.render(matrices,vertices,light,overlay,color)); - matrices.pop(); - // Render rest of the body. - this.getBodyParts().forEach(modelPart -> modelPart.render(matrices,vertices,light,overlay,color)); - ci.cancel(); + @Inject(method = "setAngles", at = @At("RETURN")) + private void bedrockify$customBabyHeadScale(VillagerEntityRenderState villagerEntityRenderState, CallbackInfo ci) { + if (villagerEntityRenderState.baby && BedrockifyClient.getInstance().settings.babyVillagerHeads) { + this.head.scale(new Vector3f(0.5f)); } } - - @Unique - public Iterable getHeadParts() { - return ImmutableList.of(this.head); - } - - @Unique - protected Iterable getBodyParts() { - return ImmutableList.of(this.body, this.rightLeg, this.leftLeg, this.arms); - } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/bedrockShading/sunGlare/ClientWorldMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/bedrockShading/sunGlare/ClientWorldMixin.java index dad3b660..6fc0416e 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/bedrockShading/sunGlare/ClientWorldMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/bedrockShading/sunGlare/ClientWorldMixin.java @@ -6,8 +6,10 @@ import me.juancarloscp52.bedrockify.client.features.bedrockShading.BedrockSunGlareShading; import net.minecraft.client.MinecraftClient; import net.minecraft.client.world.ClientWorld; +import net.minecraft.util.math.ColorHelper; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; +import net.minecraft.world.biome.BiomeKeys; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -23,9 +25,8 @@ public abstract class ClientWorldMixin { * * @return modified sky color */ - //@Inject(method = "getSkyColor", at = @At("RETURN"), cancellable = true) @ModifyReturnValue(method = "getSkyColor", at = @At("RETURN")) - private Vec3d bedrockify$modifySkyColor(Vec3d original, @Local(ordinal = 0, argsOnly = true) float tickDelta) { + private int bedrockify$modifySkyColor(int original, @Local(ordinal = 0, argsOnly = true) float tickDelta) { final BedrockSunGlareShading sunGlareShading = BedrockifyClient.getInstance().bedrockSunGlareShading; if (!sunGlareShading.shouldApplyShading() || this.client.world == null) { return original; @@ -35,20 +36,30 @@ public abstract class ClientWorldMixin { final float angleDiff = sunGlareShading.getSunAngleDiff(); // Closer to the Sun, Darken the Sky, based on camera angle. Use a different multiplier for each channel in order to better match bedrock edition sky color. - final float multiplierBlue = MathHelper.clampedLerp(sunGlareShading.getSkyAttenuation(), 1f, angleDiff + rainGradient); + float multiplierBlue = MathHelper.clampedLerp(sunGlareShading.getSkyAttenuation(), 1f, angleDiff + rainGradient); if (MathHelper.approximatelyEquals(multiplierBlue, 1f)) { return original; } - final float multiplierRed = MathHelper.clampedLerp(sunGlareShading.getSkyAttenuation()-0.16f, 1f, angleDiff + rainGradient); - final float multiplierGreen = MathHelper.clampedLerp(sunGlareShading.getSkyAttenuation()-0.06f, 1f, angleDiff + rainGradient); + float multiplierRed = MathHelper.clampedLerp(sunGlareShading.getSkyAttenuation()-0.16f, 1f, angleDiff + rainGradient); + float multiplierGreen = MathHelper.clampedLerp(sunGlareShading.getSkyAttenuation()-0.06f, 1f, angleDiff + rainGradient); - return original.multiply(multiplierRed, multiplierGreen, multiplierBlue); + Vec3d color = Vec3d.unpackRgb(original); + + // Use same dimming for all three channels when the biome is PALE GARDEN, with some extra darkness. + if (client.player!=null && client.world.getBiome(client.player.getBlockPos()).matchesId(BiomeKeys.PALE_GARDEN.getValue())){ + multiplierRed = MathHelper.clampedLerp(sunGlareShading.getSkyAttenuation(true), 1f, angleDiff + rainGradient); + multiplierGreen = MathHelper.clampedLerp(sunGlareShading.getSkyAttenuation(true), 1f, angleDiff + rainGradient); + multiplierBlue = MathHelper.clampedLerp(sunGlareShading.getSkyAttenuation(true), 1f, angleDiff + rainGradient); + } + + return ColorHelper.getArgb(color.multiply(multiplierRed, multiplierGreen, multiplierBlue)); } @ModifyReturnValue(method = "getCloudsColor", at = @At("RETURN")) - private Vec3d bedrockify$modifyCloudsColor(Vec3d original) { + private int bedrockify$modifyCloudsColor(int original) { BedrockSunGlareShading sunGlareShading = BedrockifyClient.getInstance().bedrockSunGlareShading; - return original.multiply(MathHelper.clampedLerp(0.8d, 1.0d, sunGlareShading.getSunRadiusDelta())); + Vec3d color = Vec3d.unpackRgb(original); + return ColorHelper.getArgb(color.multiply(MathHelper.clampedLerp(0.8d, 1.0d, sunGlareShading.getSunRadiusDelta()))); } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/bedrockShading/sunGlare/SkyRenderingMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/bedrockShading/sunGlare/SkyRenderingMixin.java new file mode 100644 index 00000000..0ee9161a --- /dev/null +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/bedrockShading/sunGlare/SkyRenderingMixin.java @@ -0,0 +1,49 @@ +package me.juancarloscp52.bedrockify.mixin.client.features.bedrockShading.sunGlare; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.mojang.blaze3d.systems.RenderSystem; +import me.juancarloscp52.bedrockify.client.BedrockifyClient; +import me.juancarloscp52.bedrockify.client.features.bedrockShading.BedrockSunGlareShading; +import net.minecraft.client.render.SkyRendering; +import net.minecraft.util.math.MathHelper; +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(SkyRendering.class) +public abstract class SkyRenderingMixin { + /** + * Modify the Sun radius from stored delta.
+ * Original radius is 30.0F. + */ + @ModifyExpressionValue(method = "renderSun", at = { + @At(value = "CONSTANT", args = "floatValue=30.0f"), + @At(value = "CONSTANT", args = "floatValue=-30.0f") + }) + private float bedrockify$modifySunRadius(float original) { + BedrockSunGlareShading sunGlareShading = BedrockifyClient.getInstance().bedrockSunGlareShading; + if (!sunGlareShading.shouldApplyShading() || sunGlareShading.getSunRadiusDelta() >= 1f) { + return original; + } + + return MathHelper.clampedLerp(original * 1.3f, original, sunGlareShading.getSunRadiusDelta()); + } + + @Inject(method = "renderCelestialBodies", at = @At("HEAD")) + private void bedrockify$modifySunIntensity(CallbackInfo ci) { + BedrockSunGlareShading sunGlareShading = BedrockifyClient.getInstance().bedrockSunGlareShading; + if (!sunGlareShading.shouldApplyShading() || sunGlareShading.getSunRadiusDelta() >= 1f) { + return; + } + + float value = MathHelper.clampedLerp(2.0f, 1.0f, sunGlareShading.getSunRadiusDelta()); + + RenderSystem.setShaderColor(value, value, value, 1.0f); + } + + @Inject(method = "renderCelestialBodies", at = @At("RETURN")) + private void bedrockify$restoreShaderColor(CallbackInfo ci) { + RenderSystem.setShaderColor(1f, 1f, 1f, 1.0f); + } +} diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/bedrockShading/sunGlare/WorldRendererMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/bedrockShading/sunGlare/WorldRendererMixin.java index 194140c4..b2e72612 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/bedrockShading/sunGlare/WorldRendererMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/bedrockShading/sunGlare/WorldRendererMixin.java @@ -3,26 +3,21 @@ import me.juancarloscp52.bedrockify.client.BedrockifyClient; import me.juancarloscp52.bedrockify.client.features.bedrockShading.BedrockSunGlareShading; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.Camera; +import net.minecraft.client.render.DimensionEffects; +import net.minecraft.client.render.Fog; import net.minecraft.client.render.WorldRenderer; -import net.minecraft.util.math.MathHelper; -import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.invoke.arg.Args; @Mixin(WorldRenderer.class) public abstract class WorldRendererMixin { @Shadow private @Final MinecraftClient client; - @Unique - private static final String RENDER_SKY_METHOD_SIGNATURE = "renderSky(Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;FLnet/minecraft/client/render/Camera;ZLjava/lang/Runnable;)V"; - /** * Inject and Observe the reload event to be compatible with Iris shaders. */ @@ -34,36 +29,9 @@ public abstract class WorldRendererMixin { /** * Calculate the angle difference between Camera and Sun, and Store the delta including the rain factor. */ - @Inject(method = RENDER_SKY_METHOD_SIGNATURE, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;getSkyColor(Lnet/minecraft/util/math/Vec3d;F)Lnet/minecraft/util/math/Vec3d;")) - private void bedrockify$updateSunAngleDiff(Matrix4f matrices, Matrix4f projectionMatrix, float tickDelta, Camera camera, boolean bl, Runnable runnable, CallbackInfo ci) { - if (this.client.world == null) { - return; - } + @Inject(method = "method_62215", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;getSkyColor(Lnet/minecraft/util/math/Vec3d;F)I")) + private static void bedrockify$updateSunAngleDiff(Fog fog, DimensionEffects.SkyType skyType, float tickDelta, DimensionEffects dimensionEffects, CallbackInfo ci) { final BedrockSunGlareShading sunGlareShading = BedrockifyClient.getInstance().bedrockSunGlareShading; sunGlareShading.updateSunRadiusDelta(tickDelta); } - - /** - * Modify the Sun radius from stored delta.
- * Original radius is 30.0F. - */ - @ModifyConstant(method = RENDER_SKY_METHOD_SIGNATURE, constant = @Constant(floatValue = 30.0f, ordinal = 0)) - private float bedrockify$modifySunRadius(float original) { - BedrockSunGlareShading sunGlareShading = BedrockifyClient.getInstance().bedrockSunGlareShading; - if (!sunGlareShading.shouldApplyShading() || sunGlareShading.getSunRadiusDelta() >= 1f) { - return original; - } - - return MathHelper.clampedLerp(original * 1.3f, original, sunGlareShading.getSunRadiusDelta()); - } - - @ModifyArgs(method = "renderSky", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderColor(FFFF)V", ordinal = 2)) - private void bedrockify$modifySunIntensity(Args args){ - BedrockSunGlareShading sunGlareShading = BedrockifyClient.getInstance().bedrockSunGlareShading; - float value = MathHelper.clampedLerp(2.0f, 1.0f, sunGlareShading.getSunRadiusDelta()); - args.set(0,value); - args.set(1,value); - args.set(2,value); - } - } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/biggerDraggingItem/HandledScreenMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/biggerDraggingItem/HandledScreenMixin.java index 63f2332b..bc72d44d 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/biggerDraggingItem/HandledScreenMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/biggerDraggingItem/HandledScreenMixin.java @@ -1,6 +1,5 @@ package me.juancarloscp52.bedrockify.mixin.client.features.biggerDraggingItem; -import com.mojang.blaze3d.systems.RenderSystem; import me.juancarloscp52.bedrockify.client.BedrockifyClient; import me.juancarloscp52.bedrockify.client.BedrockifyClientSettings; import net.minecraft.client.gui.DrawContext; @@ -22,7 +21,7 @@ public abstract class HandledScreenMixin { @Shadow protected abstract void drawItem(DrawContext context, ItemStack stack, int x, int y, String amountText); @Redirect(method = "render", at= @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/screen/ingame/HandledScreen;drawItem(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V")) - private void drawBiggerItem(HandledScreen instance, DrawContext drawContext, ItemStack stack, int xPosition, int yPosition, String amountText){ + private void drawBiggerItem(HandledScreen instance, DrawContext drawContext, ItemStack stack, int xPosition, int yPosition, String amountText){ BedrockifyClientSettings settings = BedrockifyClient.getInstance().settings; if(!settings.isBiggerIconsEnabled()){ this.drawItem(drawContext,stack, xPosition, yPosition, amountText); @@ -32,10 +31,8 @@ private void drawBiggerItem(HandledScreen instance, DrawContext drawContext, Ite matrices.push(); float multiplier = 1.3f; matrices.scale(multiplier,multiplier,multiplier); - RenderSystem.applyModelViewMatrix(); this.drawItem(drawContext, stack, MathHelper.ceil(xPosition/multiplier)-2, MathHelper.ceil(yPosition/multiplier)-2, amountText); matrices.pop(); - RenderSystem.applyModelViewMatrix(); } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/eatingAnimations/PlayerEntityModelMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/eatingAnimations/PlayerEntityModelMixin.java index f763930c..84704348 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/eatingAnimations/PlayerEntityModelMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/eatingAnimations/PlayerEntityModelMixin.java @@ -1,43 +1,44 @@ package me.juancarloscp52.bedrockify.mixin.client.features.eatingAnimations; import me.juancarloscp52.bedrockify.client.BedrockifyClient; +import me.juancarloscp52.bedrockify.client.features.eatingAnimations.IEatingState; import net.minecraft.client.model.ModelPart; import net.minecraft.client.render.entity.model.BipedEntityModel; import net.minecraft.client.render.entity.model.PlayerEntityModel; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.ItemStack; +import net.minecraft.client.render.entity.state.PlayerEntityRenderState; import net.minecraft.util.Arm; import net.minecraft.util.Hand; -import net.minecraft.util.UseAction; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(PlayerEntityModel.class) -public class PlayerEntityModelMixin extends BipedEntityModel { - - @Shadow @Final public ModelPart rightSleeve; - - @Shadow @Final public ModelPart leftSleeve; - +public class PlayerEntityModelMixin extends BipedEntityModel { public PlayerEntityModelMixin(ModelPart root) { super(root); } @Inject(method = "setAngles", at=@At("TAIL")) - private void applyEatingAnimation(T livingEntity, float f, float g, float h, float i, float j, CallbackInfo info){ + private void applyEatingAnimation(PlayerEntityRenderState playerEntityRenderState, CallbackInfo info){ if(!BedrockifyClient.getInstance().settings.isEatingAnimationsEnabled()) return; - final Arm mainArm = livingEntity.getMainArm(); - if (isEatingWithHand(livingEntity, Hand.MAIN_HAND, livingEntity.getMainHandStack())) { - playEatingAnimation(livingEntity, Hand.MAIN_HAND, h, mainArm); - } else if (isEatingWithHand(livingEntity, Hand.OFF_HAND, livingEntity.getOffHandStack())) { - playEatingAnimation(livingEntity, Hand.OFF_HAND, h, mainArm.getOpposite()); + + if (!(playerEntityRenderState instanceof IEatingState state)) { + return; } + + final var eatingHand = state.getEatingHand(); + final Arm mainArm = playerEntityRenderState.mainArm; + + eatingHand.ifPresent(hand -> { + if (hand == Hand.MAIN_HAND) { + playEatingAnimation(playerEntityRenderState, mainArm); + } else if (hand == Hand.OFF_HAND) { + playEatingAnimation(playerEntityRenderState, mainArm.getOpposite()); + } + }); } @Unique @@ -46,11 +47,13 @@ private void applyEatingAnimation(T livingEntity, float f, float g, float h, flo private static final float ITEM_INTERVAL_TIME = 4f/20f; //in second @Unique - private void playEatingAnimation(LivingEntity livingEntity, Hand hand, float ticks, Arm targetArm) { + private void playEatingAnimation(PlayerEntityRenderState state, Arm targetArm) { + final float ticks = BedrockifyClient.getInstance().deltaTime * 0.000000001f; + final float itemUseTime = state.itemUseTime; float smoothingTicks = false ? (float) (ticks - Math.floor(ticks)) : 0; //if you want to add an option for spothing the anim, it's already here, just replace the false // float itemStartProgress = Math.min(livingEntity.getItemUseTime() + smoothingTicks, 20f* ITEM_START_TIME)/20f/ ITEM_START_TIME; - float itemStartProgress = Math.min(livingEntity.getItemUseTime() + smoothingTicks, 20f * ITEM_START_TIME) * 0.05f / ITEM_START_TIME; - float itemIntervalProgress = (livingEntity.getItemUseTime()/20f < ITEM_START_TIME) ? 0.0f : (((livingEntity.getItemUseTime() - (int) ITEM_START_TIME *20) % (int) (ITEM_INTERVAL_TIME *20)) + smoothingTicks)* ITEM_INTERVAL_TIME; + float itemStartProgress = Math.min(itemUseTime + smoothingTicks, 20f * ITEM_START_TIME) * 0.05f / ITEM_START_TIME; + float itemIntervalProgress = (itemUseTime * 0.05f < ITEM_START_TIME) ? 0.0f : (((itemUseTime - (int) ITEM_START_TIME *20) % (int) (ITEM_INTERVAL_TIME *20)) + smoothingTicks)* ITEM_INTERVAL_TIME; float animPitch = itemStartProgress * -degToMatAngle(60.0f) + itemIntervalProgress * degToMatAngle(11.25f); float animYaw = itemStartProgress * -degToMatAngle(22.5f) + itemIntervalProgress * degToMatAngle(11.25f); float animRoll = itemStartProgress * -degToMatAngle(5.625f) + itemIntervalProgress * degToMatAngle(11.25f); @@ -59,12 +62,10 @@ private void playEatingAnimation(LivingEntity livingEntity, Hand hand, float tic this.rightArm.pitch += animPitch; this.rightArm.yaw += animYaw; this.rightArm.roll += animRoll; - this.rightSleeve.copyTransform(rightArm); } else { this.leftArm.pitch += animPitch; this.leftArm.yaw -= animYaw; this.leftArm.roll += animRoll; - this.leftSleeve.copyTransform(leftArm); } } @@ -74,9 +75,4 @@ private float degToMatAngle(float angle) // return 7.07f * angle / 360; return 7.07f * angle * 0.002777778f; } - - @Unique - private boolean isEatingWithHand(LivingEntity livingEntity, Hand hand, ItemStack itemStack){ - return livingEntity.getItemUseTimeLeft() >0 && livingEntity.getActiveHand()== hand && (itemStack.getUseAction() == UseAction.EAT || itemStack.getUseAction() == UseAction.DRINK); - } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/eatingAnimations/PlayerEntityRenderStateMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/eatingAnimations/PlayerEntityRenderStateMixin.java new file mode 100644 index 00000000..8b17e57f --- /dev/null +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/eatingAnimations/PlayerEntityRenderStateMixin.java @@ -0,0 +1,25 @@ +package me.juancarloscp52.bedrockify.mixin.client.features.eatingAnimations; + +import me.juancarloscp52.bedrockify.client.features.eatingAnimations.IEatingState; +import net.minecraft.client.render.entity.state.PlayerEntityRenderState; +import net.minecraft.util.Hand; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +import java.util.Optional; + +@Mixin(PlayerEntityRenderState.class) +public abstract class PlayerEntityRenderStateMixin implements IEatingState { + @Unique + private Hand eatingHand = null; + + @Override + public void setEatingHand(Hand hand) { + this.eatingHand = hand; + } + + @Override + public Optional getEatingHand() { + return Optional.ofNullable(this.eatingHand); + } +} diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/eatingAnimations/PlayerEntityRendererMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/eatingAnimations/PlayerEntityRendererMixin.java new file mode 100644 index 00000000..20ac411e --- /dev/null +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/eatingAnimations/PlayerEntityRendererMixin.java @@ -0,0 +1,40 @@ +package me.juancarloscp52.bedrockify.mixin.client.features.eatingAnimations; + +import me.juancarloscp52.bedrockify.client.BedrockifyClient; +import me.juancarloscp52.bedrockify.client.features.eatingAnimations.IEatingState; +import net.minecraft.client.network.AbstractClientPlayerEntity; +import net.minecraft.client.render.entity.PlayerEntityRenderer; +import net.minecraft.client.render.entity.state.PlayerEntityRenderState; +import net.minecraft.item.ItemStack; +import net.minecraft.item.consume.UseAction; +import net.minecraft.util.Hand; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(PlayerEntityRenderer.class) +public abstract class PlayerEntityRendererMixin { + @Inject(method = "updateRenderState", at = @At("HEAD")) + private void bedrockify$storeEatingState(AbstractClientPlayerEntity abstractClientPlayerEntity, PlayerEntityRenderState playerEntityRenderState, float f, CallbackInfo ci) { + if (!BedrockifyClient.getInstance().settings.isEatingAnimationsEnabled() || !(playerEntityRenderState instanceof IEatingState state)) { + return; + } + + ItemStack mainHandStack = abstractClientPlayerEntity.getMainHandStack(); + ItemStack offHandStack = abstractClientPlayerEntity.getOffHandStack(); + if (bedrockify$checkEatingAction(playerEntityRenderState, Hand.MAIN_HAND, mainHandStack)) { + state.setEatingHand(Hand.MAIN_HAND); + } else if (bedrockify$checkEatingAction(playerEntityRenderState, Hand.OFF_HAND, offHandStack)) { + state.setEatingHand(Hand.OFF_HAND); + } else { + state.setEatingHand(null); + } + } + + @Unique + private boolean bedrockify$checkEatingAction(PlayerEntityRenderState state, Hand hand, ItemStack itemStack) { + return state.itemUseTimeLeft > 0 && state.activeHand == hand && (itemStack.getUseAction() == UseAction.EAT || itemStack.getUseAction() == UseAction.DRINK); + } +} diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/editionBranding/LogoDrawerMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/editionBranding/LogoDrawerMixin.java index c602828d..10917a5b 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/editionBranding/LogoDrawerMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/editionBranding/LogoDrawerMixin.java @@ -3,6 +3,7 @@ import me.juancarloscp52.bedrockify.client.BedrockifyClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.LogoDrawer; +import net.minecraft.client.render.RenderLayer; import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -10,15 +11,17 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +import java.util.function.Function; + @Mixin(LogoDrawer.class) public class LogoDrawerMixin { @Shadow @Final public static Identifier EDITION_TEXTURE; - @Redirect(method = "draw(Lnet/minecraft/client/gui/DrawContext;IFI)V", at= @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawTexture(Lnet/minecraft/util/Identifier;IIFFIIII)V",ordinal = 1)) - public void drawTexture(DrawContext drawContext, Identifier texture, int x, int y, float u, float v, int width, int height, int textureWidth, int textureHeight){ + @Redirect(method = "draw(Lnet/minecraft/client/gui/DrawContext;IFI)V", at= @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIFFIIIII)V",ordinal = 1)) + public void drawTexture(DrawContext drawContext, Function function, Identifier texture, int x, int y, float u, float v, int width, int height, int textureWidth, int textureHeight, int color){ if(!BedrockifyClient.getInstance().settings.hideEditionBranding){ - drawContext.drawTexture(EDITION_TEXTURE, x, y, u, v, width, height, textureWidth, textureHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, EDITION_TEXTURE, x, y, u, v, width, height, textureWidth, textureHeight, color); } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/fishingBobber/FishingBobberEntityRendererMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/fishingBobber/FishingBobberEntityRendererMixin.java index 6fac6e97..fb82fc45 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/fishingBobber/FishingBobberEntityRendererMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/fishingBobber/FishingBobberEntityRendererMixin.java @@ -2,16 +2,14 @@ import me.juancarloscp52.bedrockify.client.BedrockifyClient; import me.juancarloscp52.bedrockify.client.features.fishingBobber.FishingBobber3DModel; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.model.Model; import net.minecraft.client.render.OverlayTexture; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.render.entity.EntityRenderer; import net.minecraft.client.render.entity.EntityRendererFactory; import net.minecraft.client.render.entity.FishingBobberEntityRenderer; +import net.minecraft.client.render.entity.state.FishingBobberEntityState; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.projectile.FishingBobberEntity; import net.minecraft.util.Colors; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -20,12 +18,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(FishingBobberEntityRenderer.class) -public abstract class FishingBobberEntityRendererMixin extends EntityRenderer { +public abstract class FishingBobberEntityRendererMixin { @Unique - private final Model bobberModel = new FishingBobber3DModel<>(MinecraftClient.getInstance().getEntityModelLoader().getModelPart(FishingBobber3DModel.MODEL_LAYER)); + private Model bobberModel; - protected FishingBobberEntityRendererMixin(EntityRendererFactory.Context ctx) { - super(ctx); + @Inject(method = "", at = @At("RETURN")) + private void bedrockify$injectCtor(EntityRendererFactory.Context context, CallbackInfo ci) { + this.bobberModel = new FishingBobber3DModel<>(context.getPart(FishingBobber3DModel.MODEL_LAYER)); } @Inject(method = "vertex", at = @At("HEAD"), cancellable = true) @@ -38,7 +37,7 @@ protected FishingBobberEntityRendererMixin(EntityRendererFactory.Context ctx) { } @Inject(method = "render", at = @At("RETURN")) - private void bedrockify$render3DBobber(FishingBobberEntity fishingBobberEntity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, CallbackInfo ci) { + private void bedrockify$render3DBobber(FishingBobberEntityState fishingBobberEntityState, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, CallbackInfo ci) { if (!BedrockifyClient.getInstance().settings.fishingBobber3D) { return; } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/hudOpacity/ItemRendererMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/hudOpacity/ItemRendererMixin.java index 60f7e2b1..a9f3f8b5 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/hudOpacity/ItemRendererMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/hudOpacity/ItemRendererMixin.java @@ -10,10 +10,10 @@ @Mixin(ItemRenderer.class) public abstract class ItemRendererMixin { @ModifyVariable( - method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", - at = @At("STORE"), ordinal = 0 + method = "renderItem(Lnet/minecraft/item/ModelTransformationMode;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;II[ILnet/minecraft/client/render/model/BakedModel;Lnet/minecraft/client/render/RenderLayer;Lnet/minecraft/client/render/item/ItemRenderState$Glint;)V", + at = @At("HEAD") ) - private RenderLayer bedrockify$applyTransparencyForBakedItemModel(RenderLayer original) { - return TexturedRenderLayers.getEntityTranslucentCull(); + private static RenderLayer bedrockify$applyTranslucencyForBakedItemModel(RenderLayer original) { + return TexturedRenderLayers.getItemEntityTranslucentCull(); } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/hudOpacity/appleskin/HUDOverlayHandlerMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/hudOpacity/appleskin/HUDOverlayHandlerMixin.java index 5a456ba3..bdc368a7 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/hudOpacity/appleskin/HUDOverlayHandlerMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/hudOpacity/appleskin/HUDOverlayHandlerMixin.java @@ -4,28 +4,17 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.ModifyVariable; import squeek.appleskin.client.HUDOverlayHandler; @Pseudo @Mixin(HUDOverlayHandler.class) public class HUDOverlayHandlerMixin { - - @ModifyArg(method = "enableAlpha", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderColor(FFFF)V"),index = 3) - public float clampEnableAlpha(float alpha){ - return BedrockifyClient.getInstance().hudOpacity.getHudOpacity(false)*alpha; - } - - @ModifyArg(method = "disableAlpha", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderColor(FFFF)V"),index = 3) - public float clampDisableAlpha(float alpha){ - return BedrockifyClient.getInstance().hudOpacity.getHudOpacity(false); - } - - @ModifyArg(method = "drawHungerOverlay(Lnet/minecraft/client/gui/DrawContext;IILnet/minecraft/client/MinecraftClient;IIFZI)V", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderColor(FFFF)V"),index = 3) + @ModifyVariable(method = "drawHungerOverlay(Lnet/minecraft/client/gui/DrawContext;IILnet/minecraft/client/MinecraftClient;IIFZI)V", at = @At("HEAD"),ordinal = 0) public float clampAlphaHungerOverlay(float alpha){ return BedrockifyClient.getInstance().hudOpacity.getHudOpacity(false)*alpha; } - @ModifyArg(method = "drawHealthOverlay(Lnet/minecraft/client/gui/DrawContext;FFLnet/minecraft/client/MinecraftClient;IIFI)V", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderColor(FFFF)V"),index = 3) + @ModifyVariable(method = "drawHealthOverlay(Lnet/minecraft/client/gui/DrawContext;FFLnet/minecraft/client/MinecraftClient;IIFI)V", at = @At("HEAD"),ordinal = 2) public float clampAlphaHealthOverlay(float alpha){ return BedrockifyClient.getInstance().hudOpacity.getHudOpacity(false)*alpha; } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/loadingScreens/LevelLoadingScreenMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/loadingScreens/LevelLoadingScreenMixin.java index 91cee119..4e10e4ad 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/loadingScreens/LevelLoadingScreenMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/loadingScreens/LevelLoadingScreenMixin.java @@ -35,7 +35,7 @@ public void render(DrawContext context, int mouseX, int mouseY, float delta, Cal this.renderBackground(context, mouseX, mouseY, delta); int xPosition = this.width / 2; int yPosition = this.height / 2; - LoadingScreenWidget.getInstance().render(context, xPosition, yPosition, Text.translatable("menu.generatingLevel"), null, this.progressProvider.getProgressPercentage()); + LoadingScreenWidget.getInstance().render(context, xPosition, yPosition, Text.translatable("narrator.loading", Text.translatable("loading.progress", this.progressProvider.getProgressPercentage()).getString()), null, this.progressProvider.getProgressPercentage()); long l = Util.getMeasuringTimeMs(); if (l - this.lastNarrationTime > 2000L) { diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/loadingScreens/ProgressScreenMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/loadingScreens/ProgressScreenMixin.java index cb9548f7..444a0677 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/loadingScreens/ProgressScreenMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/loadingScreens/ProgressScreenMixin.java @@ -27,7 +27,7 @@ protected ProgressScreenMixin(Text title) { */ @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/Screen;render(Lnet/minecraft/client/gui/DrawContext;IIF)V"), cancellable = true) public void renderLoadScreen(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo info) { - if(!BedrockifyClient.getInstance().settings.isLoadingScreenEnabled()){ + if(!BedrockifyClient.getInstance().settings.isLoadingScreenEnabled() || client == null){ return; } super.render(context, mouseX, mouseY, delta); diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/screenSafeArea/InGameHudMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/screenSafeArea/InGameHudMixin.java index e9e3bcbe..8372f5ce 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/screenSafeArea/InGameHudMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/screenSafeArea/InGameHudMixin.java @@ -1,5 +1,6 @@ package me.juancarloscp52.bedrockify.mixin.client.features.screenSafeArea; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.mojang.blaze3d.systems.RenderSystem; @@ -17,6 +18,8 @@ import org.spongepowered.asm.mixin.injection.*; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import java.util.function.Function; + @Environment(EnvType.CLIENT) @Mixin(InGameHud.class) public abstract class InGameHudMixin { @@ -34,29 +37,29 @@ private void setScreenBorder(CallbackInfo info) { /** * Render the item Hotbar applying the screen border distance and transparency. */ - @WrapOperation(method = "renderHotbar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIII)V")) - private void drawTextureHotbar(DrawContext drawContext, Identifier texture, int x, int y, int width, int height, Operation original) { + @WrapOperation(method = "renderHotbar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIII)V")) + private void drawTextureHotbar(DrawContext drawContext, Function function, Identifier texture, int x, int y, int width, int height, Operation original) { if(texture.equals(Identifier.ofVanilla("hud/hotbar_selection"))){ - original.call(drawContext, texture, x, y - screenBorder, width, height); + original.call(drawContext, function, texture, x, y - screenBorder, width, height); if(BedrockifyClient.getInstance().settings.hotBarOverhang) - drawContext.fill(x,y + height - screenBorder,x+width,y+height+1 - screenBorder, ColorHelper.Argb.getArgb(255,0,0,0)); + drawContext.fill(x,y + height - screenBorder,x+width,y+height+1 - screenBorder, ColorHelper.getArgb(255,0,0,0)); }else{ RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, BedrockifyClient.getInstance().hudOpacity.getHudOpacity(true)); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); - original.call(drawContext,texture, x, y - screenBorder, width, height); + original.call(drawContext, function, texture, x, y - screenBorder, width, height); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, BedrockifyClient.getInstance().hudOpacity.getHudOpacity(false)); } } - @WrapOperation(method = "renderHotbar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIIIIIII)V")) - private void drawTextureHotbar(DrawContext drawContext, Identifier texture, int i, int j, int k, int l, int x, int y, int width, int height, Operation original) { + @WrapOperation(method = "renderHotbar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIIIIIII)V")) + private void drawTextureHotbar(DrawContext drawContext, Function function, Identifier texture, int i, int j, int k, int l, int x, int y, int width, int height, Operation original) { if((width ==29 && height == 24) || width == 182){ RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, BedrockifyClient.getInstance().hudOpacity.getHudOpacity(true)); - original.call(drawContext, texture, i, j, k, l, x, y - screenBorder, width, height); + original.call(drawContext, function, texture, i, j, k, l, x, y - screenBorder, width, height); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, BedrockifyClient.getInstance().hudOpacity.getHudOpacity(false)); }else{ boolean raisedEnabled = FabricLoader.getInstance().isModLoaded("raised"); - original.call(drawContext, texture, i, j, k, l, x, y - screenBorder, width, (width == 24 && !raisedEnabled) ? height+2 : height); + original.call(drawContext, function, texture, i, j, k, l, x, y - screenBorder, width, (width == 24 && !raisedEnabled) ? height+2 : height); } } @@ -71,12 +74,12 @@ public int modifyHotbarItemPossition(int y){ /** * Apply screen border offset to experience bars. */ - @ModifyArg(method = "renderExperienceBar", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIII)V"),index = 2) + @ModifyArg(method = "renderExperienceBar", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIII)V"),index = 3) public int modifyTextureExperienceBar(int y){ return y - screenBorder; } - @ModifyArg(method = "renderExperienceBar", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIIIIIII)V"),index = 6) + @ModifyArg(method = "renderExperienceBar", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIIIIIII)V"),index = 7) public int modifyTextureExperienceBar2(int y){ return y - screenBorder; } @@ -94,20 +97,20 @@ private int drawExperienceBar(DrawContext drawContext, TextRenderer textRenderer if(color == 0) return 0; - return drawContext.drawTextWithShadow(textRenderer, text, x, y-screenBorder-3, ColorHelper.Argb.getArgb(alpha,127, 252, 32)); + return drawContext.drawTextWithShadow(textRenderer, text, x, y-screenBorder-3, ColorHelper.getArgb(alpha,127, 252, 32)); } /** * Apply screen border offset to mount bars. */ - @ModifyArg(method = "renderMountJumpBar", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIIIIIII)V"),index = 6) + @ModifyArg(method = "renderMountJumpBar", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIIIIIII)V"),index = 7) public int modifyTextureMountJumpBar(int y){ return y-screenBorder; } /** * Apply screen border offset to mount bars. */ - @ModifyArg(method = "renderMountJumpBar", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIII)V"),index = 2) + @ModifyArg(method = "renderMountJumpBar", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIII)V"),index = 3) public int modifyTextureMountJumpBar2(int y){ return y-screenBorder; } @@ -115,19 +118,11 @@ public int modifyTextureMountJumpBar2(int y){ /** * Apply screen border offset to mount health bars. */ - @ModifyArg(method = "renderMountHealth", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIII)V"),index = 2) + @ModifyArg(method = "renderMountHealth", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIII)V"),index = 3) public int modifyTextureMountHealth(int y){ return y-screenBorder; } - /** - * Apply screen border offset to status bars. - */ - @ModifyArg(method = "renderStatusBars", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIII)V"),index = 2) - public int modifyTextureStatusBar(int y){ - return y - screenBorder; - } - /** * Apply screen border offset to health bars. */ @@ -168,4 +163,8 @@ public int modifyOverlayMessage(int y){ return y-screenBorder; } + @ModifyExpressionValue(method = "renderAirBubbles", at = @At(value = "INVOKE",target = "Lnet/minecraft/client/gui/hud/InGameHud;getAirBubbleY(II)I")) + private int bedrockify$modifyTextureStatusBarsBubbleY(int original){ + return original - screenBorder; + } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/sheepColors/SheepWoolFeatureRendererMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/sheepColors/SheepWoolFeatureRendererMixin.java index 0a719c75..ee9633a5 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/sheepColors/SheepWoolFeatureRendererMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/sheepColors/SheepWoolFeatureRendererMixin.java @@ -10,42 +10,45 @@ import net.minecraft.client.render.entity.feature.FeatureRendererContext; import net.minecraft.client.render.entity.feature.SheepWoolFeatureRenderer; import net.minecraft.client.render.entity.model.SheepEntityModel; +import net.minecraft.client.render.entity.state.SheepEntityRenderState; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.passive.SheepEntity; import net.minecraft.util.DyeColor; import net.minecraft.util.math.ColorHelper; +import net.minecraft.util.math.MathHelper; 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(SheepWoolFeatureRenderer.class) -public abstract class SheepWoolFeatureRendererMixin extends FeatureRenderer> { - public SheepWoolFeatureRendererMixin(FeatureRendererContext> context) { +public abstract class SheepWoolFeatureRendererMixin extends FeatureRenderer { + public SheepWoolFeatureRendererMixin(FeatureRendererContext context) { super(context); } - @Inject(method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/passive/SheepEntity;FFFFFF)V", at = @At("RETURN")) - private void bedrockify$renderWoolColorAfterShearing(MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, SheepEntity sheepEntity, float limbAngle, float limbDistance, float tickDelta, float animationProgress, float headYaw, float headPitch, CallbackInfo ci) { - if (!BedrockifyClient.getInstance().settings.sheepColors || SheepSkinResource.TEXTURE_SHEARED == null) { + @Inject(method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/SheepEntityRenderState;FF)V", at = @At("RETURN")) + private void bedrockify$renderWoolColorAfterShearing(MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, SheepEntityRenderState sheepState, float tickDelta, float animationProgress, CallbackInfo ci) { + if (!BedrockifyClient.getInstance().settings.sheepColors) { return; } final Model sheepModel = this.getContextModel(); final int color; - if (sheepEntity.hasCustomName() && "jeb_".equals(sheepEntity.getName().getString())) { - final int baseColorId = sheepEntity.age / 25 + sheepEntity.getId(); + if (sheepState.customName != null && "jeb_".equals(sheepState.customName.getString())) { + final int age = MathHelper.floor(sheepState.age); + final int baseColorId = age / 25 + sheepState.id; final int colorLength = DyeColor.values().length; final int currentColorId = baseColorId % colorLength; final int nextColorId = (baseColorId + 1) % colorLength; - float gradientDelta = ((float)(sheepEntity.age % 25) + tickDelta) / 25.0f; + float gradientDelta = ((age % 25) + MathHelper.fractionalPart(sheepState.age)) / 25.0f; int currentColor = SheepEntity.getRgbColor(DyeColor.byId(currentColorId)); int nextColor = SheepEntity.getRgbColor(DyeColor.byId(nextColorId)); - color = ColorHelper.Argb.lerp(gradientDelta, currentColor, nextColor); + color = ColorHelper.lerp(gradientDelta, currentColor, nextColor); } else { - color = SheepEntity.getRgbColor(sheepEntity.getColor()); + color = SheepEntity.getRgbColor(sheepState.color); } VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(sheepModel.getLayer(SheepSkinResource.TEXTURE_SHEARED)); - sheepModel.render(matrixStack, vertexConsumer, light, LivingEntityRenderer.getOverlay(sheepEntity, 0.075f), color); + sheepModel.render(matrixStack, vertexConsumer, light, LivingEntityRenderer.getOverlay(sheepState, 0.075f), color); } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/slotHighlight/HandledScreenMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/slotHighlight/HandledScreenMixin.java index e055709b..a066e8f4 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/slotHighlight/HandledScreenMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/slotHighlight/HandledScreenMixin.java @@ -30,8 +30,8 @@ public abstract class HandledScreenMixin { @Shadow abstract boolean isPointOverSlot(Slot slot, double pointX, double pointY); - @Inject(method = "drawSlotHighlight", at = @At("HEAD"), cancellable = true) - private static void bedrockify$cancelVanillaHighlight(DrawContext context, int x, int y, int z, CallbackInfo ci) { + @Inject(method = {"drawSlotHighlightBack", "drawSlotHighlightFront"}, at = @At("HEAD"), cancellable = true) + private static void bedrockify$cancelVanillaHighlight(CallbackInfo ci) { BedrockifyClientSettings settings = BedrockifyClient.getInstance().settings; if (settings.isSlotHighlightEnabled()) { ci.cancel(); @@ -47,7 +47,7 @@ public abstract class HandledScreenMixin { /** * Draw the current slot in green. */ - @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/HandledScreen;drawSlot(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/screen/slot/Slot;)V")) + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/HandledScreen;drawSlotHighlightBack(Lnet/minecraft/client/gui/DrawContext;)V")) private void bedrockify$customHighlightColor(DrawContext drawContext, int mouseX, int mouseY, float delta, CallbackInfo ci) { BedrockifyClientSettings settings = BedrockifyClient.getInstance().settings; if (!settings.isSlotHighlightEnabled() || this.currentSlot == null) { diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/useAnimations/ClientPlayerInteractionManagerMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/useAnimations/ClientPlayerInteractionManagerMixin.java index 4a2c17ba..c9abd528 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/useAnimations/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/client/features/useAnimations/ClientPlayerInteractionManagerMixin.java @@ -25,7 +25,7 @@ public abstract class ClientPlayerInteractionManagerMixin { */ @Inject(method = "interactItem", at = @At("RETURN")) private void bedrockify$consumeItem(PlayerEntity player, Hand hand, CallbackInfoReturnable cir) { - if (player == null || cir.getReturnValue() != ActionResult.SUCCESS) { + if (player == null || !(cir.getReturnValue() instanceof ActionResult.Success)) { return; } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/cauldron/CauldronBehaviorMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/cauldron/CauldronBehaviorMixin.java index fe7eb675..eb9c7614 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/cauldron/CauldronBehaviorMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/cauldron/CauldronBehaviorMixin.java @@ -8,8 +8,8 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potions; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.ItemActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; @@ -23,14 +23,14 @@ public interface CauldronBehaviorMixin { * The lambda of EMPTY_CAULDRON_BEHAVIOR.put(Items.POTION, (state, world, pos, player, hand, stack) -> { ... }); */ @Inject(method = "method_32222", at = @At("RETURN"), cancellable = true) - private static void bedrockify$addCauldronEmptyBehavior(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, ItemStack stack, CallbackInfoReturnable cir) { + private static void bedrockify$addCauldronEmptyBehavior(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, ItemStack stack, CallbackInfoReturnable cir) { var components = stack.get(DataComponentTypes.POTION_CONTENTS); if (!Bedrockify.getInstance().settings.bedrockCauldron || components != null && components.matches(Potions.WATER)) { return; } // Redirect to customized behavior. - final ItemActionResult result = BedrockCauldronBehavior.PLACE_POTION_FLUID.interact(state, world, pos, player, hand, stack); + final ActionResult result = BedrockCauldronBehavior.PLACE_POTION_FLUID.interact(state, world, pos, player, hand, stack); cir.setReturnValue(result); } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fernBonemeal/GrassBlockMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fernBonemeal/GrassBlockMixin.java index b3644edc..6bbbb9ce 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fernBonemeal/GrassBlockMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fernBonemeal/GrassBlockMixin.java @@ -19,16 +19,16 @@ @Mixin(GrassBlock.class) public class GrassBlockMixin { @ModifyVariable(method = "grow",at=@At("STORE"), ordinal = 0) - public RegistryEntry addFern(RegistryEntry registryEntry, ServerWorld world, Random random, BlockPos pos, BlockState state) { + public RegistryEntry addFern(RegistryEntry registryEntry, ServerWorld world, Random random, BlockPos pos, BlockState state) { if(!Bedrockify.getInstance().settings.fernBonemeal) return registryEntry; - if(registryEntry.getKey().isPresent() && registryEntry.getKey().get() instanceof RegistryKey key){ - RegistryKey biome = world.getBiome(pos).getKey().get(); + if(registryEntry.getKey().isPresent() && registryEntry.getKey().get() instanceof RegistryKey key){ + RegistryKey biome = world.getBiome(pos).getKey().orElseThrow(); if(biome.equals(BiomeKeys.TAIGA) || biome.equals(BiomeKeys.OLD_GROWTH_SPRUCE_TAIGA) || biome.equals(BiomeKeys.SNOWY_TAIGA) || biome.equals(BiomeKeys.OLD_GROWTH_PINE_TAIGA) || biome.equals(BiomeKeys.JUNGLE) || biome.equals(BiomeKeys.BAMBOO_JUNGLE) || biome.equals(BiomeKeys.SPARSE_JUNGLE)) { if (key.getValue().getPath().equals("grass_bonemeal") && random.nextInt(4) == 0) { - return world.getRegistryManager().get(RegistryKeys.PLACED_FEATURE).getEntry(FernBonemeal.SINGLE_PIECE_OF_FERN_PLACED).get(); + return world.getRegistryManager().getOrThrow(RegistryKeys.PLACED_FEATURE).getEntry(FernBonemeal.SINGLE_PIECE_OF_FERN_PLACED.getValue()).orElse(null); } } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CampfireBlockMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CampfireBlockMixin.java index 512f442d..9894a56e 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CampfireBlockMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CampfireBlockMixin.java @@ -1,49 +1,45 @@ package me.juancarloscp52.bedrockify.mixin.common.features.fireAspect; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import me.juancarloscp52.bedrockify.Bedrockify; +import me.juancarloscp52.bedrockify.common.features.fireAspectLight.FireAspectLightHelper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.CampfireBlock; -import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.EnchantedBookItem; import net.minecraft.item.ItemStack; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.state.property.Properties; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.Identifier; -import net.minecraft.util.ItemActionResult; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; 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.CallbackInfoReturnable; @Mixin(CampfireBlock.class) public class CampfireBlockMixin { - @Inject(method = "onUseWithItem", at=@At(value = "INVOKE",target = "Lnet/minecraft/entity/player/PlayerEntity;getStackInHand(Lnet/minecraft/util/Hand;)Lnet/minecraft/item/ItemStack;"),cancellable = true) - private void onUse(ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit, CallbackInfoReturnable cir){ - if(!Bedrockify.getInstance().settings.fireAspectLight) - return; + @ModifyReturnValue(method = "onUseWithItem", at=@At("RETURN")) + private ActionResult onUse(ActionResult original, ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit){ + if(!Bedrockify.getInstance().settings.fireAspectLight || !player.getAbilities().allowModifyWorld) + return original; ItemStack itemStack = player.getStackInHand(hand); - if(null != itemStack && (itemStack.hasEnchantments() || itemStack.getItem() instanceof EnchantedBookItem) && EnchantmentHelper.getEnchantments(itemStack).getEnchantments().stream().anyMatch(e -> e.matchesId(Identifier.of("fire_aspect")))){ + if(FireAspectLightHelper.canLitWith(itemStack)){ if(!CampfireBlock.isLitCampfire(state) && CampfireBlock.canBeLit(state)){ if(world.setBlockState(pos, state.with(Properties.LIT, true), Block.NOTIFY_ALL | Block.REDRAW_ON_MAIN_THREAD)){ itemStack.damage(1, player, LivingEntity.getSlotForHand(hand)); world.playSound(player, pos, SoundEvents.ITEM_FLINTANDSTEEL_USE, SoundCategory.BLOCKS, 1.0F, world.getRandom().nextFloat() * 0.4F + 0.8F); world.emitGameEvent(player, GameEvent.BLOCK_PLACE, pos); - cir.setReturnValue(ItemActionResult.SUCCESS); + return ActionResult.SUCCESS; } - }else{ - cir.setReturnValue(ItemActionResult.FAIL); } } + return original; } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CandleBlockMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CandleBlockMixin.java index c6060967..fa250f8d 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CandleBlockMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CandleBlockMixin.java @@ -1,49 +1,45 @@ package me.juancarloscp52.bedrockify.mixin.common.features.fireAspect; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import me.juancarloscp52.bedrockify.Bedrockify; +import me.juancarloscp52.bedrockify.common.features.fireAspectLight.FireAspectLightHelper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.CandleBlock; -import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.EnchantedBookItem; import net.minecraft.item.ItemStack; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.state.property.Properties; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.Identifier; -import net.minecraft.util.ItemActionResult; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; 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.CallbackInfoReturnable; @Mixin(CandleBlock.class) public class CandleBlockMixin { - @Inject(method = "onUseWithItem", at=@At("HEAD"),cancellable = true) - private void onUse(ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit, CallbackInfoReturnable cir){ - if(!Bedrockify.getInstance().settings.fireAspectLight) - return; + @ModifyReturnValue(method = "onUseWithItem", at=@At("RETURN")) + private ActionResult onUse(ActionResult original, ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit){ + if(!Bedrockify.getInstance().settings.fireAspectLight || !player.getAbilities().allowModifyWorld) + return original; ItemStack itemStack = player.getStackInHand(hand); - if(player.getAbilities().allowModifyWorld && null != itemStack && (itemStack.hasEnchantments() || itemStack.getItem() instanceof EnchantedBookItem) && EnchantmentHelper.getEnchantments(itemStack).getEnchantments().stream().anyMatch(e -> e.matchesId(Identifier.of("fire_aspect")))){ + if(FireAspectLightHelper.canLitWith(itemStack)){ if(!CandleBlock.isLitCandle(state) && CandleBlock.canBeLit(state)){ if(world.setBlockState(pos, state.with(Properties.LIT, true), Block.NOTIFY_ALL | Block.REDRAW_ON_MAIN_THREAD)){ itemStack.damage(1, player, LivingEntity.getSlotForHand(hand)); world.playSound(player, pos, SoundEvents.ITEM_FLINTANDSTEEL_USE, SoundCategory.BLOCKS, 1.0F, world.getRandom().nextFloat() * 0.4F + 0.8F); world.emitGameEvent(player, GameEvent.BLOCK_PLACE, pos); - cir.setReturnValue(ItemActionResult.SUCCESS); + return ActionResult.SUCCESS; } - }else{ - cir.setReturnValue(ItemActionResult.FAIL); } } + return original; } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CandleCakeBlockMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CandleCakeBlockMixin.java index de38363b..4531d2bc 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CandleCakeBlockMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/CandleCakeBlockMixin.java @@ -1,54 +1,44 @@ package me.juancarloscp52.bedrockify.mixin.common.features.fireAspect; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import me.juancarloscp52.bedrockify.Bedrockify; +import me.juancarloscp52.bedrockify.common.features.fireAspectLight.FireAspectLightHelper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.CandleCakeBlock; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.EnchantedBookItem; import net.minecraft.item.ItemStack; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.state.property.Properties; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.ItemActionResult; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(CandleCakeBlock.class) public class CandleCakeBlockMixin { - @Inject(method = "onUseWithItem", at=@At("HEAD"),cancellable = true) - private void onUse(ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit, CallbackInfoReturnable cir){ - if(!Bedrockify.getInstance().settings.fireAspectLight) - return; + @ModifyReturnValue(method = "onUseWithItem", at=@At("RETURN")) + private ActionResult onUse(ActionResult original, ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit){ + if(!Bedrockify.getInstance().settings.fireAspectLight || !player.getAbilities().allowModifyWorld) + return original; ItemStack itemStack = player.getStackInHand(hand); - if(isHittingCandleOnCake(hit) && null != itemStack && (itemStack.hasEnchantments() || itemStack.getItem() instanceof EnchantedBookItem) && EnchantmentHelper.getEnchantments(itemStack).getEnchantments().stream().anyMatch(e -> e == Enchantments.FIRE_ASPECT)){ + if(CandleCakeBlock.isHittingCandle(hit) && FireAspectLightHelper.canLitWith(itemStack)){ if(!CandleCakeBlock.isLitCandle(state) && CandleCakeBlock.canBeLit(state)){ if(world.setBlockState(pos, state.with(Properties.LIT, true), Block.NOTIFY_ALL | Block.REDRAW_ON_MAIN_THREAD)){ itemStack.damage(1, player, LivingEntity.getSlotForHand(hand)); world.playSound(player, pos, SoundEvents.ITEM_FLINTANDSTEEL_USE, SoundCategory.BLOCKS, 1.0F, world.getRandom().nextFloat() * 0.4F + 0.8F); world.emitGameEvent(player, GameEvent.BLOCK_PLACE, pos); - cir.setReturnValue(ItemActionResult.SUCCESS); + return ActionResult.SUCCESS; } - }else{ - cir.setReturnValue(ItemActionResult.SKIP_DEFAULT_BLOCK_INTERACTION); } } - } - - @Unique - private boolean isHittingCandleOnCake(BlockHitResult hitResult) { - return hitResult.getPos().y - (double)hitResult.getBlockPos().getY() > 0.5D; + return original; } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/PlayerEntityMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/PlayerEntityMixin.java index dbd5b06a..ab2ec8e8 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/PlayerEntityMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/PlayerEntityMixin.java @@ -1,38 +1,37 @@ package me.juancarloscp52.bedrockify.mixin.common.features.fireAspect; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import me.juancarloscp52.bedrockify.Bedrockify; -import net.minecraft.enchantment.EnchantmentHelper; +import me.juancarloscp52.bedrockify.common.features.fireAspectLight.FireAspectLightHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.vehicle.TntMinecartEntity; -import net.minecraft.item.EnchantedBookItem; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(PlayerEntity.class) public class PlayerEntityMixin { - @Redirect(method = "interact",at=@At(value = "INVOKE",target = "Lnet/minecraft/entity/Entity;interact(Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/util/Hand;)Lnet/minecraft/util/ActionResult;")) - private ActionResult interact(Entity entity, PlayerEntity player, Hand hand){ - if(entity instanceof TntMinecartEntity tntMinecart && Bedrockify.getInstance().settings.fireAspectLight){ - ItemStack itemStack = player.getStackInHand(hand); - if(null != itemStack && !tntMinecart.isPrimed() && (((itemStack.hasEnchantments() || itemStack.getItem() instanceof EnchantedBookItem) && EnchantmentHelper.getEnchantments(itemStack).getEnchantments().stream().anyMatch(e -> e.matchesId(Identifier.of("fire_aspect")))) || (itemStack.isOf(Items.FLINT_AND_STEEL) || itemStack.isOf(Items.FIRE_CHARGE)))){ + @ModifyExpressionValue(method = "interact",at=@At(value = "INVOKE",target = "Lnet/minecraft/entity/Entity;interact(Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/util/Hand;)Lnet/minecraft/util/ActionResult;")) + private ActionResult interact(ActionResult original, Entity entity, Hand hand){ + PlayerEntity $this = PlayerEntity.class.cast(this); + if(entity instanceof TntMinecartEntity tntMinecart && Bedrockify.getInstance().settings.fireAspectLight && $this.getAbilities().allowModifyWorld){ + ItemStack itemStack = $this.getStackInHand(hand); + if(!tntMinecart.isPrimed() && (FireAspectLightHelper.canLitWith(itemStack) || (itemStack.isOf(Items.FLINT_AND_STEEL) || itemStack.isOf(Items.FIRE_CHARGE)))){ tntMinecart.prime(); - itemStack.damage(1, player, LivingEntity.getSlotForHand(hand)); - player.getWorld().playSound(player, player.getBlockPos(), SoundEvents.ITEM_FLINTANDSTEEL_USE, SoundCategory.BLOCKS, 1.0F, player.getWorld().getRandom().nextFloat() * 0.4F + 0.8F); + itemStack.damage(1, $this, LivingEntity.getSlotForHand(hand)); + $this.getWorld().playSound($this, $this.getBlockPos(), SoundEvents.ITEM_FLINTANDSTEEL_USE, SoundCategory.BLOCKS, 1.0F, $this.getWorld().getRandom().nextFloat() * 0.4F + 0.8F); return ActionResult.SUCCESS; } } - return entity.interact(player, hand); + return original; } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/TntBlockMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/TntBlockMixin.java index e82f60a5..825f8cbb 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/TntBlockMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/fireAspect/TntBlockMixin.java @@ -1,28 +1,25 @@ package me.juancarloscp52.bedrockify.mixin.common.features.fireAspect; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import me.juancarloscp52.bedrockify.Bedrockify; +import me.juancarloscp52.bedrockify.common.features.fireAspectLight.FireAspectLightHelper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.TntBlock; -import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.EnchantedBookItem; import net.minecraft.item.ItemStack; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; -import net.minecraft.util.Identifier; -import net.minecraft.util.ItemActionResult; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; 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.CallbackInfoReturnable; @Mixin(TntBlock.class) public abstract class TntBlockMixin { @@ -30,18 +27,19 @@ public abstract class TntBlockMixin { @Shadow public static void primeTnt(World world, BlockPos pos) {} - @Inject(method = "onUseWithItem",at=@At("HEAD"),cancellable = true) - private void onUse(ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit, CallbackInfoReturnable cir){ - if(!Bedrockify.getInstance().settings.fireAspectLight) - return; + @ModifyReturnValue(method = "onUseWithItem",at=@At("RETURN")) + private ActionResult onUse(ActionResult original, ItemStack stack, BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit){ + if(!Bedrockify.getInstance().settings.fireAspectLight || !player.getAbilities().allowModifyWorld) + return original; ItemStack itemStack = player.getStackInHand(hand); - if(null != itemStack && (itemStack.hasEnchantments() || itemStack.getItem() instanceof EnchantedBookItem) && EnchantmentHelper.getEnchantments(itemStack).getEnchantments().stream().anyMatch(e -> e.matchesId(Identifier.of("fire_aspect")))){ + if(FireAspectLightHelper.canLitWith(itemStack)){ primeTnt(world,pos); world.setBlockState(pos, Blocks.AIR.getDefaultState(), Block.NOTIFY_ALL | Block.REDRAW_ON_MAIN_THREAD); itemStack.damage(1, player, LivingEntity.getSlotForHand(hand)); world.playSound(player, pos, SoundEvents.ITEM_FLINTANDSTEEL_USE, SoundCategory.BLOCKS, 1.0F, world.getRandom().nextFloat() * 0.4F + 0.8F); - cir.setReturnValue(ItemActionResult.success(world.isClient)); + return ActionResult.SUCCESS; } + return original; } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/FireworkStarFadeRecipeMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/FireworkStarFadeRecipeMixin.java index 7304518f..f6b5f4ba 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/FireworkStarFadeRecipeMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/FireworkStarFadeRecipeMixin.java @@ -1,5 +1,6 @@ package me.juancarloscp52.bedrockify.mixin.common.features.recipes; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import me.juancarloscp52.bedrockify.Bedrockify; @@ -17,34 +18,30 @@ 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.CallbackInfoReturnable; @Mixin(FireworkStarFadeRecipe.class) public class FireworkStarFadeRecipeMixin { @Shadow @Final private static Ingredient INPUT_STAR; - @Inject(method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z",at=@At("HEAD"),cancellable = true) - public void matches(CraftingRecipeInput craftingRecipeInput, World world, CallbackInfoReturnable infoReturnable) { + @ModifyReturnValue(method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z", at = @At("RETURN")) + public boolean matches(boolean original, CraftingRecipeInput craftingRecipeInput, World world) { if(!Bedrockify.getInstance().settings.isBedrockRecipesEnabled()) - return; + return original; boolean bl = false; boolean bl2 = false; - for(int i = 0; i < craftingRecipeInput.getSize(); ++i) { + for(int i = 0; i < craftingRecipeInput.size(); ++i) { ItemStack itemStack = craftingRecipeInput.getStackInSlot(i); if (!itemStack.isEmpty()) { if (DyeHelper.isDyeableItem(itemStack.getItem())) { bl = true; } else { if (!INPUT_STAR.test(itemStack)) { - infoReturnable.setReturnValue(false); - return; + return original; } if (bl2) { - infoReturnable.setReturnValue(false); - return; + return original; } bl2 = true; @@ -52,17 +49,17 @@ public void matches(CraftingRecipeInput craftingRecipeInput, World world, Callba } } - infoReturnable.setReturnValue(bl2 && bl); + return original || (bl2 && bl); } - @Inject(method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;",at=@At("HEAD"),cancellable = true) - public void craft(CraftingRecipeInput craftingRecipeInput, RegistryWrapper.WrapperLookup wrapperLookup, CallbackInfoReturnable cir) { + @ModifyReturnValue(method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", at = @At("RETURN")) + public ItemStack craft(ItemStack original, CraftingRecipeInput craftingRecipeInput, RegistryWrapper.WrapperLookup wrapperLookup) { if(!Bedrockify.getInstance().settings.isBedrockRecipesEnabled()) - return; + return original; IntList list = new IntArrayList(); ItemStack itemStack = null; - for(int i = 0; i < craftingRecipeInput.getSize(); ++i) { + for(int i = 0; i < craftingRecipeInput.size(); ++i) { ItemStack itemStack2 = craftingRecipeInput.getStackInSlot(i); Item item = itemStack2.getItem(); if (DyeHelper.isDyeableItem(item)) { @@ -75,9 +72,9 @@ public void craft(CraftingRecipeInput craftingRecipeInput, RegistryWrapper.Wrapp if (itemStack != null && !list.isEmpty()) { itemStack.apply(DataComponentTypes.FIREWORK_EXPLOSION, FireworkExplosionComponent.DEFAULT, list, FireworkExplosionComponent::withFadeColors); - cir.setReturnValue(itemStack); + return itemStack; } else { - cir.setReturnValue(ItemStack.EMPTY); + return ItemStack.EMPTY; } } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/FireworkStarRecipeMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/FireworkStarRecipeMixin.java index 4abd129a..7af97f9f 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/FireworkStarRecipeMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/FireworkStarRecipeMixin.java @@ -1,5 +1,6 @@ package me.juancarloscp52.bedrockify.mixin.common.features.recipes; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import me.juancarloscp52.bedrockify.Bedrockify; @@ -18,15 +19,13 @@ 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.CallbackInfoReturnable; import java.util.Map; @Mixin(FireworkStarRecipe.class) public class FireworkStarRecipeMixin { - @Shadow @Final private static Ingredient TYPE_MODIFIER; + @Shadow @Final private static Map TYPE_MODIFIER_MAP; @Shadow @Final private static Ingredient FLICKER_MODIFIER; @@ -34,76 +33,69 @@ public class FireworkStarRecipeMixin { @Shadow @Final private static Ingredient GUNPOWDER; - @Shadow @Final private static Map TYPE_MODIFIER_MAP; - - @Inject(method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z",at=@At("HEAD"),cancellable = true) - public void matches(CraftingRecipeInput craftingInventory, World world, CallbackInfoReturnable infoReturnable) { + @ModifyReturnValue(method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z", at = @At("RETURN")) + public boolean matches(boolean original, CraftingRecipeInput craftingInventory, World world) { if(!Bedrockify.getInstance().settings.isBedrockRecipesEnabled()) - return; + return original; boolean bl = false; boolean bl2 = false; boolean bl3 = false; boolean bl4 = false; boolean bl5 = false; - for(int i = 0; i < craftingInventory.getSize(); ++i) { + for(int i = 0; i < craftingInventory.size(); ++i) { ItemStack itemStack = craftingInventory.getStackInSlot(i); if (!itemStack.isEmpty()) { - if (TYPE_MODIFIER.test(itemStack)) { + if (TYPE_MODIFIER_MAP.containsKey(itemStack.getItem())) { if (bl3) { - infoReturnable.setReturnValue(false); - return; + return original; } bl3 = true; } else if (FLICKER_MODIFIER.test(itemStack)) { if (bl5) { - infoReturnable.setReturnValue(false); - return; + return original; } bl5 = true; } else if (TRAIL_MODIFIER.test(itemStack)) { if (bl4) { - infoReturnable.setReturnValue(false); - return; + return original; } bl4 = true; } else if (GUNPOWDER.test(itemStack)) { if (bl) { - infoReturnable.setReturnValue(false); - return; + return original; } bl = true; } else { if (!(DyeHelper.isDyeableItem(itemStack.getItem()))) { - infoReturnable.setReturnValue(false); - return; + return original; } bl2 = true; } } } - infoReturnable.setReturnValue(bl && bl2); + return original || (bl && bl2); } - @Inject(method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;",at=@At("HEAD"),cancellable = true) - public void craft(CraftingRecipeInput craftingInventory, RegistryWrapper.WrapperLookup wrapperLookup, CallbackInfoReturnable cir) { + @ModifyReturnValue(method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", at = @At("RETURN")) + public ItemStack craft(ItemStack original, CraftingRecipeInput craftingInventory, RegistryWrapper.WrapperLookup wrapperLookup) { if(!Bedrockify.getInstance().settings.isBedrockRecipesEnabled()) - return; + return original; ItemStack itemStack = new ItemStack(Items.FIREWORK_STAR); FireworkExplosionComponent.Type type = FireworkExplosionComponent.Type.SMALL_BALL; IntList list = new IntArrayList(); boolean hasTwinkleMod = false; boolean hasTrailMod = false; - for(int i = 0; i < craftingInventory.getSize(); ++i) { + for(int i = 0; i < craftingInventory.size(); ++i) { ItemStack itemStack2 = craftingInventory.getStackInSlot(i); if (!itemStack2.isEmpty()) { - if (TYPE_MODIFIER.test(itemStack2)) { + if (TYPE_MODIFIER_MAP.containsKey(itemStack2.getItem())) { type = TYPE_MODIFIER_MAP.get(itemStack2.getItem()); } else if (FLICKER_MODIFIER.test(itemStack2)) { hasTwinkleMod = true; @@ -116,7 +108,7 @@ public void craft(CraftingRecipeInput craftingInventory, RegistryWrapper.Wrapper } itemStack.set(DataComponentTypes.FIREWORK_EXPLOSION, new FireworkExplosionComponent(type, list, IntList.of(), hasTrailMod, hasTwinkleMod)); - cir.setReturnValue(itemStack); + return itemStack; } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/RecipeManagerMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/RecipeManagerMixin.java index bff5dc13..1d0161af 100644 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/RecipeManagerMixin.java +++ b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/RecipeManagerMixin.java @@ -1,50 +1,67 @@ package me.juancarloscp52.bedrockify.mixin.common.features.recipes; -import com.google.gson.JsonElement; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import me.juancarloscp52.bedrockify.Bedrockify; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeManager; -import net.minecraft.resource.ResourceManager; +import net.minecraft.recipe.RecipeEntry; +import net.minecraft.recipe.ServerRecipeManager; import net.minecraft.util.Identifier; -import net.minecraft.util.profiler.Profiler; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.ModifyArg; -import java.util.*; +import java.util.List; +import java.util.Set; -@Mixin(RecipeManager.class) +@Mixin(ServerRecipeManager.class) public abstract class RecipeManagerMixin { - @Shadow public abstract Optional> get(Identifier id); - - @Inject(method = "apply(Ljava/util/Map;Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)V", at=@At("HEAD")) - public void applyRecipes(Map map, ResourceManager resourceManager, Profiler profiler, CallbackInfo info){ - HashMap bedrockifyRecipes = new HashMap<>(); - Iterator> mapIterator = map.entrySet().iterator(); - - //Recipes that won't be substituted - final List exceptions = Arrays.asList("dark_prismarine_extra", "black_concrete_powder_ink_sac", "white_concrete_powder_bone_meal", "brown_concrete_powder_cocoa_beans", "blue_concrete_powder_lapis_lazuli", - "white_wool_from_colored", "white_wool_bone_meal","black_wool_ink_sac", "blue_wool_lapis_lazuli", "brown_wool_cocoa_beans", - "black_bed_from_white_bed_ink_sac","blue_bed_from_white_bed_lapis_lazuli", "brown_bed_from_white_bed_cocoa_beans", "white_bed_from_white_bed", "white_bed_from_white_bed_bone_meal", - "black_carpet_from_white_carpet_ink_sac", "blue_carpet_from_white_carpet", "brown_carpet_from_white_carpet_cocoa_beans", - "string_from_cobweb", "white_terracotta_bone_meal", "black_terracotta_ink_sac", "brown_terracotta_cocoa_beans", "blue_terracotta_lapis_lazuli", - "white_stained_glass_bone_meal", "blue_stained_glass_lapis_lazuli", "black_stained_glass_ink_sac", "brown_stained_glass_cocoa_beans", - "black_stained_glass_pane_from_glass_pane_ink_sac", "blue_stained_glass_pane_from_glass_pane_lapis_lazuli", "brown_stained_glass_pane_from_glass_pane_cocoa_beans", "white_stained_glass_pane_from_glass_pane_bone_meal", - "lime_dye_with_bone_meal", "pink_dye_from_red_dye_bone_meal", "light_gray_dye_from_gray_dye_bone_meal", "light_gray_dye_from_black_dye_bone_meal", "purple_dye_from_lapis_lazuli", "cyan_dye_from_lapis_lazuli", "light_blue_dye_from_blue_dye_bone_meal", "light_blue_dye_from_lapis_lazuli_bone_meal", "light_blue_dye_from_lapis_lazuli_white_dye", - "magenta_dye_from_lapis_lazuli_red_pink", "magenta_dye_from_blue_red_bone_meal_dye", "magenta_dye_from_lapis_lazuli_red_bone_meal_dye", "magenta_dye_from_lapis_lazuli_red_white_dye", "gray_dye_ink_sac","gray_dye_ink_sac_bone_meal","gray_dye_bone_meal"); - while (mapIterator.hasNext()){ - Map.Entry elem = mapIterator.next(); - if(elem.getKey().getNamespace().equals("bedrockify") && (!exceptions.contains(elem.getKey().getPath()) || !Bedrockify.getInstance().settings.isBedrockRecipesEnabled())){ - if(Bedrockify.getInstance().settings.isBedrockRecipesEnabled()) - bedrockifyRecipes.put(Identifier.of("minecraft", elem.getKey().getPath()), elem.getValue()); - mapIterator.remove(); + @Unique + private static Identifier bedrockify$getIdFromRecipeEntry(RecipeEntry entry) { + return entry.id().getValue(); + } + + @ModifyArg(method = "prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Lnet/minecraft/recipe/PreparedRecipes;", at=@At(value = "INVOKE", target = "Lnet/minecraft/recipe/PreparedRecipes;of(Ljava/lang/Iterable;)Lnet/minecraft/recipe/PreparedRecipes;"), index = 0) + public Iterable> prepareRecipes(Iterable> original){ + final List> editable = Lists.newArrayList(original); + final var editableIter = editable.iterator(); + + final boolean bBERecipeEnabled = Bedrockify.getInstance().settings.isBedrockRecipesEnabled(); + + // --- Procedure of Recipe modification. + + // namespace equals ${Bedrockify.MOD_ID} + final Set bedrockifyRecipeIds = Sets.newHashSet( + editable.stream() + .filter(entry -> bedrockify$getIdFromRecipeEntry(entry).getNamespace().equals(Bedrockify.MOD_ID)) + .map(entry -> bedrockify$getIdFromRecipeEntry(entry).getPath()) + .toList() + ); + + // Identifier#path contains in both vanilla and bedrockify + final Set moddedRecipeIds = Sets.newHashSet( + editable.stream() + .filter(entry -> { + final Identifier id = bedrockify$getIdFromRecipeEntry(entry); + return id.getNamespace().equals(Identifier.DEFAULT_NAMESPACE) && bedrockifyRecipeIds.contains(id.getPath()); + }) + .map(entry -> bedrockify$getIdFromRecipeEntry(entry).getPath()) + .toList() + ); + + // Process all the Recipes. + while (editableIter.hasNext()) { + var elem = editableIter.next(); + final Identifier recipeId = elem.id().getValue(); + final boolean bBERecipeIgnore = !bBERecipeEnabled && recipeId.getNamespace().equals(Bedrockify.MOD_ID); + final boolean bConflictedVanillaRecipe = bBERecipeEnabled && moddedRecipeIds.contains(recipeId.getPath()) && recipeId.getNamespace().equals(Identifier.DEFAULT_NAMESPACE); + + if (bBERecipeIgnore || bConflictedVanillaRecipe) { + editableIter.remove(); } } - for(Map.Entry elem: bedrockifyRecipes.entrySet()){ - map.replace(elem.getKey(),elem.getValue()); - } + + return editable; } } diff --git a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/ShulkerBoxColoringRecipeMixin.java b/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/ShulkerBoxColoringRecipeMixin.java deleted file mode 100644 index 9aabad1c..00000000 --- a/src/main/java/me/juancarloscp52/bedrockify/mixin/common/features/recipes/ShulkerBoxColoringRecipeMixin.java +++ /dev/null @@ -1,75 +0,0 @@ -package me.juancarloscp52.bedrockify.mixin.common.features.recipes; - -import me.juancarloscp52.bedrockify.Bedrockify; -import me.juancarloscp52.bedrockify.common.features.recipes.DyeHelper; -import net.minecraft.block.Block; -import net.minecraft.block.ShulkerBoxBlock; -import net.minecraft.item.DyeItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.recipe.ShulkerBoxColoringRecipe; -import net.minecraft.recipe.input.CraftingRecipeInput; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.world.World; -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.CallbackInfoReturnable; - -@Mixin(ShulkerBoxColoringRecipe.class) -public class ShulkerBoxColoringRecipeMixin { - - @Inject(method = "matches(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/world/World;)Z",at=@At("HEAD"),cancellable = true) - public void customMatches(CraftingRecipeInput craftingInventory, World world, CallbackInfoReturnable infoReturnable){ - if(!Bedrockify.getInstance().settings.isBedrockRecipesEnabled()){ - return; - } - int i = 0; - int j = 0; - - for(int k = 0; k < craftingInventory.getSize(); ++k) { - ItemStack itemStack = craftingInventory.getStackInSlot(k); - if (!itemStack.isEmpty()) { - if (Block.getBlockFromItem(itemStack.getItem()) instanceof ShulkerBoxBlock) { - ++i; - } else { - if (!(DyeHelper.isDyeableItem(itemStack.getItem()))) { - infoReturnable.setReturnValue(false); - return; - } - ++j; - } - - if (j > 1 || i > 1) { - infoReturnable.setReturnValue(false); - return; - } - } - } - infoReturnable.setReturnValue(i == 1 && j == 1); - } - @Inject(method = "craft(Lnet/minecraft/recipe/input/CraftingRecipeInput;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;", at=@At("HEAD"),cancellable = true) - public void craft(CraftingRecipeInput craftingInventory, RegistryWrapper.WrapperLookup wrapperLookup, CallbackInfoReturnable cir) { - if(!Bedrockify.getInstance().settings.isBedrockRecipesEnabled()){ - return; - } - ItemStack itemStack = ItemStack.EMPTY; - DyeItem dyeItem = (DyeItem)Items.WHITE_DYE; - - for(int i = 0; i < craftingInventory.getSize(); ++i) { - ItemStack itemStack2 = craftingInventory.getStackInSlot(i); - if (!itemStack2.isEmpty()) { - Item item = itemStack2.getItem(); - if (Block.getBlockFromItem(item) instanceof ShulkerBoxBlock) { - itemStack = itemStack2; - } else if (DyeHelper.isDyeableItem(item)) { - dyeItem = DyeHelper.getDyeItem(item); - } - } - } - - Block block = ShulkerBoxBlock.get(dyeItem.getColor()); - cir.setReturnValue(itemStack.copyComponentsToNewStack(block, 1)); - } -} diff --git a/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level1.json b/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level1.json index b49e0c6e..f751b5f0 100644 --- a/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level1.json +++ b/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level1.json @@ -146,7 +146,7 @@ }, { "from": [ 2, 4, 2 ], - "to": [ 14, 7, 14 ], + "to": [ 14, 6.5, 14 ], "faces": { "up": { "texture": "#content", "tintindex": 0 } } diff --git a/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level3.json b/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level3.json index 222d42f6..56d6ff3c 100644 --- a/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level3.json +++ b/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level3.json @@ -146,7 +146,7 @@ }, { "from": [ 2, 4, 2 ], - "to": [ 14, 11, 14 ], + "to": [ 14, 10.5, 14 ], "faces": { "up": { "texture": "#content", "tintindex": 0 } } diff --git a/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level5.json b/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level5.json index 7055b1bc..49ae67f1 100644 --- a/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level5.json +++ b/src/main/resources/assets/bedrockify/models/block/template_cauldron_6_level5.json @@ -146,7 +146,7 @@ }, { "from": [ 2, 4, 2 ], - "to": [ 14, 14, 14 ], + "to": [ 14, 13.5, 14 ], "faces": { "up": { "texture": "#content", "tintindex": 0 } } diff --git a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level1.json b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level1.json index 15d2fb9e..a38d2684 100644 --- a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level1.json +++ b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level1.json @@ -146,7 +146,7 @@ }, { "from": [ 2, 4, 2 ], - "to": [ 14, 8, 14 ], + "to": [ 14, 5.375, 14 ], "faces": { "up": { "texture": "#content", "tintindex": 0 } } diff --git a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level2.json b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level2.json index f0ad0c43..9456eca2 100644 --- a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level2.json +++ b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level2.json @@ -146,7 +146,7 @@ }, { "from": [ 2, 4, 2 ], - "to": [ 14, 9, 14 ], + "to": [ 14, 6.75, 14 ], "faces": { "up": { "texture": "#content", "tintindex": 0 } } diff --git a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level3.json b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level3.json index 33af8046..4ed6e37c 100644 --- a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level3.json +++ b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level3.json @@ -146,7 +146,7 @@ }, { "from": [ 2, 4, 2 ], - "to": [ 14, 10, 14 ], + "to": [ 14, 8.125, 14 ], "faces": { "up": { "texture": "#content", "tintindex": 0 } } diff --git a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level4.json b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level4.json index 222d42f6..84928933 100644 --- a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level4.json +++ b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level4.json @@ -146,7 +146,7 @@ }, { "from": [ 2, 4, 2 ], - "to": [ 14, 11, 14 ], + "to": [ 14, 9.5, 14 ], "faces": { "up": { "texture": "#content", "tintindex": 0 } } diff --git a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level5.json b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level5.json index 3b4d877e..a3ecc403 100644 --- a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level5.json +++ b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level5.json @@ -146,7 +146,7 @@ }, { "from": [ 2, 4, 2 ], - "to": [ 14, 12, 14 ], + "to": [ 14, 10.875, 14 ], "faces": { "up": { "texture": "#content", "tintindex": 0 } } diff --git a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level6.json b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level6.json index 9e376da0..f9c1aac1 100644 --- a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level6.json +++ b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level6.json @@ -146,7 +146,7 @@ }, { "from": [ 2, 4, 2 ], - "to": [ 14, 13, 14 ], + "to": [ 14, 12.25, 14 ], "faces": { "up": { "texture": "#content", "tintindex": 0 } } diff --git a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level7.json b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level7.json index 7055b1bc..1d78f363 100644 --- a/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level7.json +++ b/src/main/resources/assets/bedrockify/models/block/template_cauldron_8_level7.json @@ -146,7 +146,7 @@ }, { "from": [ 2, 4, 2 ], - "to": [ 14, 14, 14 ], + "to": [ 14, 13.625, 14 ], "faces": { "up": { "texture": "#content", "tintindex": 0 } } diff --git a/src/main/resources/bedrockify.accesswidener b/src/main/resources/bedrockify.accesswidener index 364d5fd5..59a969a6 100644 --- a/src/main/resources/bedrockify.accesswidener +++ b/src/main/resources/bedrockify.accesswidener @@ -1,3 +1,4 @@ accessWidener v1 named -accessible method net/minecraft/world/gen/treedecorator/TreeDecoratorType register (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lnet/minecraft/world/gen/treedecorator/TreeDecoratorType; \ No newline at end of file +accessible method net/minecraft/world/gen/treedecorator/TreeDecoratorType register (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lnet/minecraft/world/gen/treedecorator/TreeDecoratorType; +accessible method net/minecraft/block/CandleCakeBlock isHittingCandle (Lnet/minecraft/util/hit/BlockHitResult;)Z \ No newline at end of file diff --git a/src/main/resources/bedrockify.mixins.json b/src/main/resources/bedrockify.mixins.json index 3ce56937..096598fa 100644 --- a/src/main/resources/bedrockify.mixins.json +++ b/src/main/resources/bedrockify.mixins.json @@ -7,16 +7,18 @@ "client": [ "client.core.bedrockIfyButton.OptionsScreenMixin", "client.core.clientRenderTimer.MinecraftClientMixin", - "client.features.babyVillagerHeads.SinglePartEntityModelMixin", "client.features.babyVillagerHeads.VillagerResemblingModelMixin", "client.features.bedrockShading.lightBlock.AbstractQuadRendererMixin", "client.features.bedrockShading.lightBlock.BlockModelRendererMixin", "client.features.bedrockShading.lightBlock.FluidRendererMixin", "client.features.bedrockShading.sunGlare.ClientWorldMixin", + "client.features.bedrockShading.sunGlare.SkyRenderingMixin", "client.features.bedrockShading.sunGlare.WorldRendererMixin", "client.features.biggerDraggingItem.HandledScreenMixin", "client.features.chat.ChatHudMixin", "client.features.eatingAnimations.PlayerEntityModelMixin", + "client.features.eatingAnimations.PlayerEntityRendererMixin", + "client.features.eatingAnimations.PlayerEntityRenderStateMixin", "client.features.editionBranding.LogoDrawerMixin", "client.features.fishingBobber.FishingBobberEntityRendererMixin", "client.features.heldItemTooltips.ItemTooltipsMixin", @@ -67,7 +69,6 @@ "common.features.recipes.FireworkStarFadeRecipeMixin", "common.features.recipes.FireworkStarRecipeMixin", "common.features.recipes.RecipeManagerMixin", - "common.features.recipes.ShulkerBoxColoringRecipeMixin", "common.features.worldGeneration.TreeConfiguredFeaturesInvoker", "common.workaround.cauldron.TagGroupLoaderMixin" ], diff --git a/src/main/resources/data/bedrockify/recipe/acacia_boat.json b/src/main/resources/data/bedrockify/recipe/acacia_boat.json index 54cb3b55..6a7b6bbc 100644 --- a/src/main/resources/data/bedrockify/recipe/acacia_boat.json +++ b/src/main/resources/data/bedrockify/recipe/acacia_boat.json @@ -6,14 +6,11 @@ "###" ], "key": { - "#": { - "item": "minecraft:acacia_planks" - }, - "S": { - "item": "minecraft:wooden_shovel" - } + "#": "minecraft:acacia_planks", + "S": "minecraft:wooden_shovel" }, "result": { - "id": "minecraft:acacia_boat" + "id": "minecraft:acacia_boat", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/bamboo_raft.json b/src/main/resources/data/bedrockify/recipe/bamboo_raft.json index 8553d0e3..c601ab17 100644 --- a/src/main/resources/data/bedrockify/recipe/bamboo_raft.json +++ b/src/main/resources/data/bedrockify/recipe/bamboo_raft.json @@ -7,15 +7,12 @@ "###" ], "key": { - "#": { - "item": "minecraft:bamboo_planks" - }, - "S": { - "item": "minecraft:wooden_shovel" - } + "#": "minecraft:bamboo_planks", + "S": "minecraft:wooden_shovel" }, "result": { - "id": "minecraft:bamboo_raft" + "id": "minecraft:bamboo_raft", + "count": 1 }, "show_notification": true } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/barrel.json b/src/main/resources/data/bedrockify/recipe/barrel.json index 8a941a11..e99d1341 100644 --- a/src/main/resources/data/bedrockify/recipe/barrel.json +++ b/src/main/resources/data/bedrockify/recipe/barrel.json @@ -6,14 +6,11 @@ "PSP" ], "key": { - "P": { - "item": "minecraft:stick" - }, - "S": { - "tag": "minecraft:wooden_slabs" - } + "P": "minecraft:stick", + "S": "#minecraft:wooden_slabs" }, "result": { - "id": "minecraft:barrel" + "id": "minecraft:barrel", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/birch_boat.json b/src/main/resources/data/bedrockify/recipe/birch_boat.json index be7589c3..c18ef3b6 100644 --- a/src/main/resources/data/bedrockify/recipe/birch_boat.json +++ b/src/main/resources/data/bedrockify/recipe/birch_boat.json @@ -6,14 +6,11 @@ "###" ], "key": { - "#": { - "item": "minecraft:birch_planks" - }, - "S": { - "item": "minecraft:wooden_shovel" - } + "#": "minecraft:birch_planks", + "S": "minecraft:wooden_shovel" }, "result": { - "id": "minecraft:birch_boat" + "id": "minecraft:birch_boat", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/black_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/black_bed_from_white_bed.json index 657de4c3..6712f940 100644 --- a/src/main/resources/data/bedrockify/recipe/black_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/black_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:black_dye" - } + "#minecraft:beds", + "minecraft:black_dye" ], "result": { - "id": "minecraft:black_bed" + "id": "minecraft:black_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/black_bed_from_white_bed_ink_sac.json b/src/main/resources/data/bedrockify/recipe/black_bed_from_white_bed_ink_sac.json index b59b19c8..b67b32ee 100644 --- a/src/main/resources/data/bedrockify/recipe/black_bed_from_white_bed_ink_sac.json +++ b/src/main/resources/data/bedrockify/recipe/black_bed_from_white_bed_ink_sac.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:ink_sac" - } + "#minecraft:beds", + "minecraft:ink_sac" ], "result": { - "id": "minecraft:black_bed" + "id": "minecraft:black_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/black_bundle_ink_sac.json b/src/main/resources/data/bedrockify/recipe/black_bundle_ink_sac.json new file mode 100644 index 00000000..569ddf9f --- /dev/null +++ b/src/main/resources/data/bedrockify/recipe/black_bundle_ink_sac.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:crafting_transmute", + "category": "equipment", + "group": "bundle_dye", + "input": "#minecraft:bundles", + "material": "minecraft:ink_sac", + "result": "minecraft:black_bundle" +} \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/black_carpet_from_white_carpet_ink_sac.json b/src/main/resources/data/bedrockify/recipe/black_carpet_from_white_carpet_ink_sac.json index 9be82ac4..d76e533f 100644 --- a/src/main/resources/data/bedrockify/recipe/black_carpet_from_white_carpet_ink_sac.json +++ b/src/main/resources/data/bedrockify/recipe/black_carpet_from_white_carpet_ink_sac.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:white_carpet" - }, - "$": { - "item": "minecraft:ink_sac" - } + "#": "minecraft:white_carpet", + "$": "minecraft:ink_sac" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/black_concrete_powder_ink_sac.json b/src/main/resources/data/bedrockify/recipe/black_concrete_powder_ink_sac.json index aaaf39b6..be89a772 100644 --- a/src/main/resources/data/bedrockify/recipe/black_concrete_powder_ink_sac.json +++ b/src/main/resources/data/bedrockify/recipe/black_concrete_powder_ink_sac.json @@ -2,33 +2,15 @@ "type": "minecraft:crafting_shapeless", "group": "concrete_powder", "ingredients": [ - { - "item": "minecraft:ink_sac" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - } + "minecraft:ink_sac", + "minecraft:sand", + "minecraft:sand", + "minecraft:sand", + "minecraft:sand", + "minecraft:gravel", + "minecraft:gravel", + "minecraft:gravel", + "minecraft:gravel" ], "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/black_shulker_box_ink_sac.json b/src/main/resources/data/bedrockify/recipe/black_shulker_box_ink_sac.json new file mode 100644 index 00000000..75faf573 --- /dev/null +++ b/src/main/resources/data/bedrockify/recipe/black_shulker_box_ink_sac.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:crafting_transmute", + "category": "misc", + "group": "shulker_box_dye", + "input": "#minecraft:shulker_boxes", + "material": "minecraft:ink_sac", + "result": "minecraft:black_shulker_box" +} \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/black_stained_glass_ink_sac.json b/src/main/resources/data/bedrockify/recipe/black_stained_glass_ink_sac.json index 7bd7b6f9..142480d5 100644 --- a/src/main/resources/data/bedrockify/recipe/black_stained_glass_ink_sac.json +++ b/src/main/resources/data/bedrockify/recipe/black_stained_glass_ink_sac.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:glass" - }, - "X": { - "item": "minecraft:ink_sac" - } + "#": "minecraft:glass", + "X": "minecraft:ink_sac" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/black_stained_glass_pane_from_glass_pane_ink_sac.json b/src/main/resources/data/bedrockify/recipe/black_stained_glass_pane_from_glass_pane_ink_sac.json index ccbeabd9..9e50e380 100644 --- a/src/main/resources/data/bedrockify/recipe/black_stained_glass_pane_from_glass_pane_ink_sac.json +++ b/src/main/resources/data/bedrockify/recipe/black_stained_glass_pane_from_glass_pane_ink_sac.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:glass_pane" - }, - "$": { - "item": "minecraft:ink_sac" - } + "#": "minecraft:glass_pane", + "$": "minecraft:ink_sac" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/black_terracotta_ink_sac.json b/src/main/resources/data/bedrockify/recipe/black_terracotta_ink_sac.json index e55ef3c8..0ffc6254 100644 --- a/src/main/resources/data/bedrockify/recipe/black_terracotta_ink_sac.json +++ b/src/main/resources/data/bedrockify/recipe/black_terracotta_ink_sac.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:terracotta" - }, - "X": { - "item": "minecraft:ink_sac" - } + "#": "minecraft:terracotta", + "X": "minecraft:ink_sac" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/black_wool.json b/src/main/resources/data/bedrockify/recipe/black_wool.json index 92e722b9..4515f7be 100644 --- a/src/main/resources/data/bedrockify/recipe/black_wool.json +++ b/src/main/resources/data/bedrockify/recipe/black_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:black_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:black_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:black_wool" + "id": "minecraft:black_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/black_wool_ink_sac.json b/src/main/resources/data/bedrockify/recipe/black_wool_ink_sac.json index cc619c7d..77ec09bb 100644 --- a/src/main/resources/data/bedrockify/recipe/black_wool_ink_sac.json +++ b/src/main/resources/data/bedrockify/recipe/black_wool_ink_sac.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:ink_sac" - }, - { - "tag": "minecraft:wool" - } + "minecraft:ink_sac", + "#minecraft:wool" ], "result": { - "id": "minecraft:black_wool" + "id": "minecraft:black_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/blue_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/blue_bed_from_white_bed.json index ee39bcf3..6a8119de 100644 --- a/src/main/resources/data/bedrockify/recipe/blue_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/blue_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:blue_dye" - } + "#minecraft:beds", + "minecraft:blue_dye" ], "result": { - "id": "minecraft:blue_bed" + "id": "minecraft:blue_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/blue_bed_from_white_bed_lapis_lazuli.json b/src/main/resources/data/bedrockify/recipe/blue_bed_from_white_bed_lapis_lazuli.json index 2f20afcf..9fd411d3 100644 --- a/src/main/resources/data/bedrockify/recipe/blue_bed_from_white_bed_lapis_lazuli.json +++ b/src/main/resources/data/bedrockify/recipe/blue_bed_from_white_bed_lapis_lazuli.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:lapis_lazuli" - } + "#minecraft:beds", + "minecraft:lapis_lazuli" ], "result": { - "id": "minecraft:blue_bed" + "id": "minecraft:blue_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/blue_bundle_lapis_lazuli.json b/src/main/resources/data/bedrockify/recipe/blue_bundle_lapis_lazuli.json new file mode 100644 index 00000000..ee5a6aa3 --- /dev/null +++ b/src/main/resources/data/bedrockify/recipe/blue_bundle_lapis_lazuli.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:crafting_transmute", + "category": "equipment", + "group": "bundle_dye", + "input": "#minecraft:bundles", + "material": "minecraft:lapis_lazuli", + "result": "minecraft:blue_bundle" +} \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/blue_carpet_from_white_carpet.json b/src/main/resources/data/bedrockify/recipe/blue_carpet_from_white_carpet.json index 5d5220c7..1091788d 100644 --- a/src/main/resources/data/bedrockify/recipe/blue_carpet_from_white_carpet.json +++ b/src/main/resources/data/bedrockify/recipe/blue_carpet_from_white_carpet.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:white_carpet" - }, - "$": { - "item": "minecraft:lapis_lazuli" - } + "#": "minecraft:white_carpet", + "$": "minecraft:lapis_lazuli" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/blue_concrete_powder_lapis_lazuli.json b/src/main/resources/data/bedrockify/recipe/blue_concrete_powder_lapis_lazuli.json index 38bccf09..0b413780 100644 --- a/src/main/resources/data/bedrockify/recipe/blue_concrete_powder_lapis_lazuli.json +++ b/src/main/resources/data/bedrockify/recipe/blue_concrete_powder_lapis_lazuli.json @@ -2,33 +2,15 @@ "type": "minecraft:crafting_shapeless", "group": "concrete_powder", "ingredients": [ - { - "item": "minecraft:lapis_lazuli" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - } + "minecraft:lapis_lazuli", + "minecraft:sand", + "minecraft:sand", + "minecraft:sand", + "minecraft:sand", + "minecraft:gravel", + "minecraft:gravel", + "minecraft:gravel", + "minecraft:gravel" ], "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/blue_shulker_box_lapis_lazuli.json b/src/main/resources/data/bedrockify/recipe/blue_shulker_box_lapis_lazuli.json new file mode 100644 index 00000000..5ef3ea72 --- /dev/null +++ b/src/main/resources/data/bedrockify/recipe/blue_shulker_box_lapis_lazuli.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:crafting_transmute", + "category": "misc", + "group": "shulker_box_dye", + "input": "#minecraft:shulker_boxes", + "material": "minecraft:lapis_lazuli", + "result": "minecraft:blue_shulker_box" +} \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/blue_stained_glass_lapis_lazuli.json b/src/main/resources/data/bedrockify/recipe/blue_stained_glass_lapis_lazuli.json index 47f1e27f..990800be 100644 --- a/src/main/resources/data/bedrockify/recipe/blue_stained_glass_lapis_lazuli.json +++ b/src/main/resources/data/bedrockify/recipe/blue_stained_glass_lapis_lazuli.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:glass" - }, - "X": { - "item": "minecraft:lapis_lazuli" - } + "#": "minecraft:glass", + "X": "minecraft:lapis_lazuli" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/blue_stained_glass_pane_from_glass_pane_lapis_lazuli.json b/src/main/resources/data/bedrockify/recipe/blue_stained_glass_pane_from_glass_pane_lapis_lazuli.json index e9e9cc17..9c9a1d40 100644 --- a/src/main/resources/data/bedrockify/recipe/blue_stained_glass_pane_from_glass_pane_lapis_lazuli.json +++ b/src/main/resources/data/bedrockify/recipe/blue_stained_glass_pane_from_glass_pane_lapis_lazuli.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:glass_pane" - }, - "$": { - "item": "minecraft:lapis_lazuli" - } + "#": "minecraft:glass_pane", + "$": "minecraft:lapis_lazuli" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/blue_terracotta_lapis_lazuli.json b/src/main/resources/data/bedrockify/recipe/blue_terracotta_lapis_lazuli.json index dcf5be5f..a2f22d3b 100644 --- a/src/main/resources/data/bedrockify/recipe/blue_terracotta_lapis_lazuli.json +++ b/src/main/resources/data/bedrockify/recipe/blue_terracotta_lapis_lazuli.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:terracotta" - }, - "X": { - "item": "minecraft:lapis_lazuli" - } + "#": "minecraft:terracotta", + "X": "minecraft:lapis_lazuli" }, "result": { "id": "minecraft:blue_terracotta", diff --git a/src/main/resources/data/bedrockify/recipe/blue_wool.json b/src/main/resources/data/bedrockify/recipe/blue_wool.json index bfc33800..37d15e3f 100644 --- a/src/main/resources/data/bedrockify/recipe/blue_wool.json +++ b/src/main/resources/data/bedrockify/recipe/blue_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:blue_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:blue_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:blue_wool" + "id": "minecraft:blue_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/blue_wool_lapis_lazuli.json b/src/main/resources/data/bedrockify/recipe/blue_wool_lapis_lazuli.json index 8d722db9..d392d442 100644 --- a/src/main/resources/data/bedrockify/recipe/blue_wool_lapis_lazuli.json +++ b/src/main/resources/data/bedrockify/recipe/blue_wool_lapis_lazuli.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:lapis_lazuli" - }, - { - "tag": "minecraft:wool" - } + "minecraft:lapis_lazuli", + "#minecraft:wool" ], "result": { - "id": "minecraft:blue_wool" + "id": "minecraft:blue_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/brown_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/brown_bed_from_white_bed.json index 0207d888..7d42adc8 100644 --- a/src/main/resources/data/bedrockify/recipe/brown_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/brown_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:brown_dye" - } + "#minecraft:beds", + "minecraft:brown_dye" ], "result": { - "id": "minecraft:brown_bed" + "id": "minecraft:brown_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/brown_bed_from_white_bed_cocoa_beans.json b/src/main/resources/data/bedrockify/recipe/brown_bed_from_white_bed_cocoa_beans.json index d1d24b02..c6073cf9 100644 --- a/src/main/resources/data/bedrockify/recipe/brown_bed_from_white_bed_cocoa_beans.json +++ b/src/main/resources/data/bedrockify/recipe/brown_bed_from_white_bed_cocoa_beans.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:cocoa_beans" - } + "#minecraft:beds", + "minecraft:cocoa_beans" ], "result": { - "id": "minecraft:brown_bed" + "id": "minecraft:brown_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/brown_bundle_cocoa_beans.json b/src/main/resources/data/bedrockify/recipe/brown_bundle_cocoa_beans.json new file mode 100644 index 00000000..5d75cd10 --- /dev/null +++ b/src/main/resources/data/bedrockify/recipe/brown_bundle_cocoa_beans.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:crafting_transmute", + "category": "equipment", + "group": "bundle_dye", + "input": "#minecraft:bundles", + "material": "minecraft:cocoa_beans", + "result": "minecraft:brown_bundle" +} \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/brown_carpet_from_white_carpet_cocoa_beans.json b/src/main/resources/data/bedrockify/recipe/brown_carpet_from_white_carpet_cocoa_beans.json index 58b3d487..a485dce0 100644 --- a/src/main/resources/data/bedrockify/recipe/brown_carpet_from_white_carpet_cocoa_beans.json +++ b/src/main/resources/data/bedrockify/recipe/brown_carpet_from_white_carpet_cocoa_beans.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:white_carpet" - }, - "$": { - "item": "minecraft:cocoa_beans" - } + "#": "minecraft:white_carpet", + "$": "minecraft:cocoa_beans" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/brown_concrete_powder_cocoa_beans.json b/src/main/resources/data/bedrockify/recipe/brown_concrete_powder_cocoa_beans.json index a2f55e2f..0d560121 100644 --- a/src/main/resources/data/bedrockify/recipe/brown_concrete_powder_cocoa_beans.json +++ b/src/main/resources/data/bedrockify/recipe/brown_concrete_powder_cocoa_beans.json @@ -2,33 +2,15 @@ "type": "minecraft:crafting_shapeless", "group": "concrete_powder", "ingredients": [ - { - "item": "minecraft:cocoa_beans" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - } + "minecraft:cocoa_beans", + "minecraft:sand", + "minecraft:sand", + "minecraft:sand", + "minecraft:sand", + "minecraft:gravel", + "minecraft:gravel", + "minecraft:gravel", + "minecraft:gravel" ], "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/brown_shulker_box_cocoa_beans.json b/src/main/resources/data/bedrockify/recipe/brown_shulker_box_cocoa_beans.json new file mode 100644 index 00000000..36071ab5 --- /dev/null +++ b/src/main/resources/data/bedrockify/recipe/brown_shulker_box_cocoa_beans.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:crafting_transmute", + "category": "misc", + "group": "shulker_box_dye", + "input": "#minecraft:shulker_boxes", + "material": "minecraft:cocoa_beans", + "result": "minecraft:brown_shulker_box" +} \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/brown_stained_glass_cocoa_beans.json b/src/main/resources/data/bedrockify/recipe/brown_stained_glass_cocoa_beans.json index 89cdf52d..eff497cf 100644 --- a/src/main/resources/data/bedrockify/recipe/brown_stained_glass_cocoa_beans.json +++ b/src/main/resources/data/bedrockify/recipe/brown_stained_glass_cocoa_beans.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:glass" - }, - "X": { - "item": "minecraft:cocoa_beans" - } + "#": "minecraft:glass", + "X": "minecraft:cocoa_beans" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/brown_stained_glass_pane_from_glass_pane_cocoa_beans.json b/src/main/resources/data/bedrockify/recipe/brown_stained_glass_pane_from_glass_pane_cocoa_beans.json index 22eeaed7..9cb4aa7d 100644 --- a/src/main/resources/data/bedrockify/recipe/brown_stained_glass_pane_from_glass_pane_cocoa_beans.json +++ b/src/main/resources/data/bedrockify/recipe/brown_stained_glass_pane_from_glass_pane_cocoa_beans.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:glass_pane" - }, - "$": { - "item": "minecraft:cocoa_beans" - } + "#": "minecraft:glass_pane", + "$": "minecraft:cocoa_beans" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/brown_terracotta_cocoa_beans.json b/src/main/resources/data/bedrockify/recipe/brown_terracotta_cocoa_beans.json index f5868136..2ba4e584 100644 --- a/src/main/resources/data/bedrockify/recipe/brown_terracotta_cocoa_beans.json +++ b/src/main/resources/data/bedrockify/recipe/brown_terracotta_cocoa_beans.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:terracotta" - }, - "X": { - "item": "minecraft:cocoa_beans" - } + "#": "minecraft:terracotta", + "X": "minecraft:cocoa_beans" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/brown_wool.json b/src/main/resources/data/bedrockify/recipe/brown_wool.json index 4e647e7f..82e9e865 100644 --- a/src/main/resources/data/bedrockify/recipe/brown_wool.json +++ b/src/main/resources/data/bedrockify/recipe/brown_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:brown_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:brown_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:brown_wool" + "id": "minecraft:brown_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/brown_wool_cocoa_beans.json b/src/main/resources/data/bedrockify/recipe/brown_wool_cocoa_beans.json index 97a78c69..2b7f8abc 100644 --- a/src/main/resources/data/bedrockify/recipe/brown_wool_cocoa_beans.json +++ b/src/main/resources/data/bedrockify/recipe/brown_wool_cocoa_beans.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:cocoa_beans" - }, - { - "tag": "minecraft:wool" - } + "minecraft:cocoa_beans", + "#minecraft:wool" ], "result": { - "id": "minecraft:brown_wool" + "id": "minecraft:brown_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/carrot_on_a_stick.json b/src/main/resources/data/bedrockify/recipe/carrot_on_a_stick.json index 0cab320b..1b750e0a 100644 --- a/src/main/resources/data/bedrockify/recipe/carrot_on_a_stick.json +++ b/src/main/resources/data/bedrockify/recipe/carrot_on_a_stick.json @@ -4,14 +4,11 @@ "#X" ], "key": { - "#": { - "item": "minecraft:fishing_rod" - }, - "X": { - "item": "minecraft:carrot" - } + "#": "minecraft:fishing_rod", + "X": "minecraft:carrot" }, "result": { - "id": "minecraft:carrot_on_a_stick" + "id": "minecraft:carrot_on_a_stick", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/cherry_boat.json b/src/main/resources/data/bedrockify/recipe/cherry_boat.json index 4f8aae8c..928a2af6 100644 --- a/src/main/resources/data/bedrockify/recipe/cherry_boat.json +++ b/src/main/resources/data/bedrockify/recipe/cherry_boat.json @@ -7,15 +7,12 @@ "###" ], "key": { - "#": { - "item": "minecraft:cherry_planks" - }, - "S": { - "item": "minecraft:wooden_shovel" - } + "#": "minecraft:cherry_planks", + "S": "minecraft:wooden_shovel" }, "result": { - "id": "minecraft:cherry_boat" + "id": "minecraft:cherry_boat", + "count": 1 }, "show_notification": true } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/cyan_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/cyan_bed_from_white_bed.json index 47a9d48a..232d2ff4 100644 --- a/src/main/resources/data/bedrockify/recipe/cyan_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/cyan_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:cyan_dye" - } + "#minecraft:beds", + "minecraft:cyan_dye" ], "result": { - "id": "minecraft:cyan_bed" + "id": "minecraft:cyan_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/cyan_dye_from_lapis_lazuli.json b/src/main/resources/data/bedrockify/recipe/cyan_dye_from_lapis_lazuli.json index 35f9ccf0..1794cc58 100644 --- a/src/main/resources/data/bedrockify/recipe/cyan_dye_from_lapis_lazuli.json +++ b/src/main/resources/data/bedrockify/recipe/cyan_dye_from_lapis_lazuli.json @@ -1,12 +1,8 @@ { "type": "minecraft:crafting_shapeless", "ingredients": [ - { - "item": "minecraft:lapis_lazuli" - }, - { - "item": "minecraft:green_dye" - } + "minecraft:lapis_lazuli", + "minecraft:green_dye" ], "result": { "count": 2, diff --git a/src/main/resources/data/bedrockify/recipe/cyan_wool.json b/src/main/resources/data/bedrockify/recipe/cyan_wool.json index dba04bc9..254ace31 100644 --- a/src/main/resources/data/bedrockify/recipe/cyan_wool.json +++ b/src/main/resources/data/bedrockify/recipe/cyan_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:cyan_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:cyan_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:cyan_wool" + "id": "minecraft:cyan_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/dark_oak_boat.json b/src/main/resources/data/bedrockify/recipe/dark_oak_boat.json index 7c91900f..da34a372 100644 --- a/src/main/resources/data/bedrockify/recipe/dark_oak_boat.json +++ b/src/main/resources/data/bedrockify/recipe/dark_oak_boat.json @@ -6,14 +6,11 @@ "###" ], "key": { - "#": { - "item": "minecraft:dark_oak_planks" - }, - "S": { - "item": "minecraft:wooden_shovel" - } + "#": "minecraft:dark_oak_planks", + "S": "minecraft:wooden_shovel" }, "result": { - "id": "minecraft:dark_oak_boat" + "id": "minecraft:dark_oak_boat", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/dark_prismarine.json b/src/main/resources/data/bedrockify/recipe/dark_prismarine.json index 0f36bb6f..d6cf5883 100644 --- a/src/main/resources/data/bedrockify/recipe/dark_prismarine.json +++ b/src/main/resources/data/bedrockify/recipe/dark_prismarine.json @@ -7,14 +7,11 @@ "SSS" ], "key": { - "S": { - "item": "minecraft:prismarine_shard" - }, - "I": { - "item": "minecraft:black_dye" - } + "S": "minecraft:prismarine_shard", + "I": "minecraft:black_dye" }, "result": { - "id": "minecraft:dark_prismarine" + "id": "minecraft:dark_prismarine", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/dark_prismarine_extra.json b/src/main/resources/data/bedrockify/recipe/dark_prismarine_extra.json index 6de6378f..b71f4086 100644 --- a/src/main/resources/data/bedrockify/recipe/dark_prismarine_extra.json +++ b/src/main/resources/data/bedrockify/recipe/dark_prismarine_extra.json @@ -7,14 +7,11 @@ "SSS" ], "key": { - "S": { - "item": "minecraft:prismarine_shard" - }, - "I": { - "item": "minecraft:ink_sac" - } + "S": "minecraft:prismarine_shard", + "I": "minecraft:ink_sac" }, "result": { - "id": "minecraft:dark_prismarine" + "id": "minecraft:dark_prismarine", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/gray_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/gray_bed_from_white_bed.json index 52cc82a0..a8040aba 100644 --- a/src/main/resources/data/bedrockify/recipe/gray_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/gray_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:gray_dye" - } + "#minecraft:beds", + "minecraft:gray_dye" ], "result": { - "id": "minecraft:gray_bed" + "id": "minecraft:gray_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/gray_dye_bone_meal.json b/src/main/resources/data/bedrockify/recipe/gray_dye_bone_meal.json index f0133e5f..ff8a5d78 100644 --- a/src/main/resources/data/bedrockify/recipe/gray_dye_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/gray_dye_bone_meal.json @@ -1,12 +1,8 @@ { "type": "minecraft:crafting_shapeless", "ingredients": [ - { - "item": "minecraft:black_dye" - }, - { - "item": "minecraft:bone_meal" - } + "minecraft:black_dye", + "minecraft:bone_meal" ], "result": { "count": 2, diff --git a/src/main/resources/data/bedrockify/recipe/gray_dye_ink_sac.json b/src/main/resources/data/bedrockify/recipe/gray_dye_ink_sac.json index b3cceaba..638ca75f 100644 --- a/src/main/resources/data/bedrockify/recipe/gray_dye_ink_sac.json +++ b/src/main/resources/data/bedrockify/recipe/gray_dye_ink_sac.json @@ -1,12 +1,8 @@ { "type": "minecraft:crafting_shapeless", "ingredients": [ - { - "item": "minecraft:ink_sac" - }, - { - "item": "minecraft:white_dye" - } + "minecraft:ink_sac", + "minecraft:white_dye" ], "result": { "count": 2, diff --git a/src/main/resources/data/bedrockify/recipe/gray_dye_ink_sac_bone_meal.json b/src/main/resources/data/bedrockify/recipe/gray_dye_ink_sac_bone_meal.json index 28eab959..bf9f3d21 100644 --- a/src/main/resources/data/bedrockify/recipe/gray_dye_ink_sac_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/gray_dye_ink_sac_bone_meal.json @@ -1,12 +1,8 @@ { "type": "minecraft:crafting_shapeless", "ingredients": [ - { - "item": "minecraft:ink_sac" - }, - { - "item": "minecraft:bone_meal" - } + "minecraft:ink_sac", + "minecraft:bone_meal" ], "result": { "count": 2, diff --git a/src/main/resources/data/bedrockify/recipe/gray_wool.json b/src/main/resources/data/bedrockify/recipe/gray_wool.json index bbfe273c..8529461d 100644 --- a/src/main/resources/data/bedrockify/recipe/gray_wool.json +++ b/src/main/resources/data/bedrockify/recipe/gray_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:gray_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:gray_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:gray_wool" + "id": "minecraft:gray_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/green_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/green_bed_from_white_bed.json index 0e0e6220..52eac581 100644 --- a/src/main/resources/data/bedrockify/recipe/green_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/green_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:green_dye" - } + "#minecraft:beds", + "minecraft:green_dye" ], "result": { - "id": "minecraft:green_bed" + "id": "minecraft:green_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/green_wool.json b/src/main/resources/data/bedrockify/recipe/green_wool.json index 4adc7329..26a8cdbf 100644 --- a/src/main/resources/data/bedrockify/recipe/green_wool.json +++ b/src/main/resources/data/bedrockify/recipe/green_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:green_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:green_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:green_wool" + "id": "minecraft:green_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/jungle_boat.json b/src/main/resources/data/bedrockify/recipe/jungle_boat.json index 12288cdd..0f6f3f49 100644 --- a/src/main/resources/data/bedrockify/recipe/jungle_boat.json +++ b/src/main/resources/data/bedrockify/recipe/jungle_boat.json @@ -6,14 +6,11 @@ "###" ], "key": { - "#": { - "item": "minecraft:jungle_planks" - }, - "S": { - "item": "minecraft:wooden_shovel" - } + "#": "minecraft:jungle_planks", + "S": "minecraft:wooden_shovel" }, "result": { - "id": "minecraft:jungle_boat" + "id": "minecraft:jungle_boat", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/light_blue_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/light_blue_bed_from_white_bed.json index 7111b8c2..1f0153f0 100644 --- a/src/main/resources/data/bedrockify/recipe/light_blue_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/light_blue_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:light_blue_dye" - } + "#minecraft:beds", + "minecraft:light_blue_dye" ], "result": { - "id": "minecraft:light_blue_bed" + "id": "minecraft:light_blue_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_blue_dye_bone_meal.json b/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_blue_dye_bone_meal.json index 5848087e..0cb85654 100644 --- a/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_blue_dye_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_blue_dye_bone_meal.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "group": "light_blue_dye", "ingredients": [ - { - "item": "minecraft:blue_dye" - }, - { - "item": "minecraft:bone_meal" - } + "minecraft:blue_dye", + "minecraft:bone_meal" ], "result": { "count": 2, diff --git a/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_lapis_lazuli_bone_meal.json b/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_lapis_lazuli_bone_meal.json index 9285dab1..f78f66e7 100644 --- a/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_lapis_lazuli_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_lapis_lazuli_bone_meal.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "group": "light_blue_dye", "ingredients": [ - { - "item": "minecraft:lapis_lazuli" - }, - { - "item": "minecraft:bone_meal" - } + "minecraft:lapis_lazuli", + "minecraft:bone_meal" ], "result": { "count": 2, diff --git a/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_lapis_lazuli_white_dye.json b/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_lapis_lazuli_white_dye.json index 5345884a..3f947786 100644 --- a/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_lapis_lazuli_white_dye.json +++ b/src/main/resources/data/bedrockify/recipe/light_blue_dye_from_lapis_lazuli_white_dye.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "group": "light_blue_dye", "ingredients": [ - { - "item": "minecraft:lapis_lazuli" - }, - { - "item": "minecraft:white_dye" - } + "minecraft:lapis_lazuli", + "minecraft:white_dye" ], "result": { "count": 2, diff --git a/src/main/resources/data/bedrockify/recipe/light_blue_wool.json b/src/main/resources/data/bedrockify/recipe/light_blue_wool.json index 94d308ae..b34b7d6d 100644 --- a/src/main/resources/data/bedrockify/recipe/light_blue_wool.json +++ b/src/main/resources/data/bedrockify/recipe/light_blue_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:light_blue_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:light_blue_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:light_blue_wool" + "id": "minecraft:light_blue_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/light_gray_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/light_gray_bed_from_white_bed.json index fcefa8e0..ba3d2bf6 100644 --- a/src/main/resources/data/bedrockify/recipe/light_gray_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/light_gray_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:light_gray_dye" - } + "#minecraft:beds", + "minecraft:light_gray_dye" ], "result": { - "id": "minecraft:light_gray_bed" + "id": "minecraft:light_gray_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/light_gray_dye_from_black_dye_bone_meal.json b/src/main/resources/data/bedrockify/recipe/light_gray_dye_from_black_dye_bone_meal.json index a97be45b..7da46f66 100644 --- a/src/main/resources/data/bedrockify/recipe/light_gray_dye_from_black_dye_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/light_gray_dye_from_black_dye_bone_meal.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shapeless", "group": "light_gray_dye", "ingredients": [ - { - "item": "minecraft:black_dye" - }, - { - "item": "minecraft:bone_meal" - }, - { - "item": "minecraft:bone_meal" - } + "minecraft:black_dye", + "minecraft:bone_meal", + "minecraft:bone_meal" ], "result": { "count": 3, diff --git a/src/main/resources/data/bedrockify/recipe/light_gray_dye_from_gray_dye_bone_meal.json b/src/main/resources/data/bedrockify/recipe/light_gray_dye_from_gray_dye_bone_meal.json index 79211cce..278778b4 100644 --- a/src/main/resources/data/bedrockify/recipe/light_gray_dye_from_gray_dye_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/light_gray_dye_from_gray_dye_bone_meal.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "group": "light_gray_dye", "ingredients": [ - { - "item": "minecraft:gray_dye" - }, - { - "item": "minecraft:bone_meal" - } + "minecraft:gray_dye", + "minecraft:bone_meal" ], "result": { "count": 2, diff --git a/src/main/resources/data/bedrockify/recipe/light_gray_wool.json b/src/main/resources/data/bedrockify/recipe/light_gray_wool.json index 9fa5e4c3..4dfb2eb9 100644 --- a/src/main/resources/data/bedrockify/recipe/light_gray_wool.json +++ b/src/main/resources/data/bedrockify/recipe/light_gray_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:light_gray_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:light_gray_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:light_gray_wool" + "id": "minecraft:light_gray_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/lime_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/lime_bed_from_white_bed.json index c46507ff..2b149d23 100644 --- a/src/main/resources/data/bedrockify/recipe/lime_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/lime_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:lime_dye" - } + "#minecraft:beds", + "minecraft:lime_dye" ], "result": { - "id": "minecraft:lime_bed" + "id": "minecraft:lime_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/lime_dye_with_bone_meal.json b/src/main/resources/data/bedrockify/recipe/lime_dye_with_bone_meal.json index 1c20afab..d4ccc0cb 100644 --- a/src/main/resources/data/bedrockify/recipe/lime_dye_with_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/lime_dye_with_bone_meal.json @@ -1,12 +1,8 @@ { "type": "minecraft:crafting_shapeless", "ingredients": [ - { - "item": "minecraft:green_dye" - }, - { - "item": "minecraft:bone_meal" - } + "minecraft:green_dye", + "minecraft:bone_meal" ], "result": { "count": 2, diff --git a/src/main/resources/data/bedrockify/recipe/lime_wool.json b/src/main/resources/data/bedrockify/recipe/lime_wool.json index 2acb4364..b4841345 100644 --- a/src/main/resources/data/bedrockify/recipe/lime_wool.json +++ b/src/main/resources/data/bedrockify/recipe/lime_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:lime_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:lime_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:lime_wool" + "id": "minecraft:lime_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/magenta_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/magenta_bed_from_white_bed.json index d3129b9a..de97b280 100644 --- a/src/main/resources/data/bedrockify/recipe/magenta_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/magenta_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:magenta_dye" - } + "#minecraft:beds", + "minecraft:magenta_dye" ], "result": { - "id": "minecraft:magenta_bed" + "id": "minecraft:magenta_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/magenta_dye_from_blue_red_bone_meal_dye.json b/src/main/resources/data/bedrockify/recipe/magenta_dye_from_blue_red_bone_meal_dye.json index 35133215..4eabf9da 100644 --- a/src/main/resources/data/bedrockify/recipe/magenta_dye_from_blue_red_bone_meal_dye.json +++ b/src/main/resources/data/bedrockify/recipe/magenta_dye_from_blue_red_bone_meal_dye.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shapeless", "group": "magenta_dye", "ingredients": [ - { - "item": "minecraft:blue_dye" - }, - { - "item": "minecraft:red_dye" - }, - { - "item": "minecraft:red_dye" - }, - { - "item": "minecraft:bone_meal" - } + "minecraft:blue_dye", + "minecraft:red_dye", + "minecraft:red_dye", + "minecraft:bone_meal" ], "result": { "count": 4, diff --git a/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_bone_meal_dye.json b/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_bone_meal_dye.json index bff7bd19..9d99d3d6 100644 --- a/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_bone_meal_dye.json +++ b/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_bone_meal_dye.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shapeless", "group": "magenta_dye", "ingredients": [ - { - "item": "minecraft:lapis_lazuli" - }, - { - "item": "minecraft:red_dye" - }, - { - "item": "minecraft:red_dye" - }, - { - "item": "minecraft:bone_meal" - } + "minecraft:lapis_lazuli", + "minecraft:red_dye", + "minecraft:red_dye", + "minecraft:bone_meal" ], "result": { "count": 4, diff --git a/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_pink.json b/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_pink.json index 1f48274e..4c6dd5da 100644 --- a/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_pink.json +++ b/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_pink.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shapeless", "group": "magenta_dye", "ingredients": [ - { - "item": "minecraft:lapis_lazuli" - }, - { - "item": "minecraft:red_dye" - }, - { - "item": "minecraft:pink_dye" - } + "minecraft:lapis_lazuli", + "minecraft:red_dye", + "minecraft:pink_dye" ], "result": { "count": 3, diff --git a/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_white_dye.json b/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_white_dye.json index a6229b4f..c8be2226 100644 --- a/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_white_dye.json +++ b/src/main/resources/data/bedrockify/recipe/magenta_dye_from_lapis_lazuli_red_white_dye.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shapeless", "group": "magenta_dye", "ingredients": [ - { - "item": "minecraft:lapis_lazuli" - }, - { - "item": "minecraft:red_dye" - }, - { - "item": "minecraft:red_dye" - }, - { - "item": "minecraft:white_dye" - } + "minecraft:lapis_lazuli", + "minecraft:red_dye", + "minecraft:red_dye", + "minecraft:white_dye" ], "result": { "count": 4, diff --git a/src/main/resources/data/bedrockify/recipe/magenta_wool.json b/src/main/resources/data/bedrockify/recipe/magenta_wool.json index ccf221f3..9de82ddc 100644 --- a/src/main/resources/data/bedrockify/recipe/magenta_wool.json +++ b/src/main/resources/data/bedrockify/recipe/magenta_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:magenta_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:magenta_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:magenta_wool" + "id": "minecraft:magenta_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/mangrove_boat.json b/src/main/resources/data/bedrockify/recipe/mangrove_boat.json index 7d836d20..9ae60555 100644 --- a/src/main/resources/data/bedrockify/recipe/mangrove_boat.json +++ b/src/main/resources/data/bedrockify/recipe/mangrove_boat.json @@ -3,18 +3,15 @@ "category": "misc", "group": "boat", "key": { - "#": { - "item": "minecraft:mangrove_planks" - }, - "S": { - "item": "minecraft:wooden_shovel" - } + "#": "minecraft:mangrove_planks", + "S": "minecraft:wooden_shovel" }, "pattern": [ "#S#", "###" ], "result": { - "id": "minecraft:mangrove_boat" + "id": "minecraft:mangrove_boat", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/oak_boat.json b/src/main/resources/data/bedrockify/recipe/oak_boat.json index 64caf011..d85b2c7d 100644 --- a/src/main/resources/data/bedrockify/recipe/oak_boat.json +++ b/src/main/resources/data/bedrockify/recipe/oak_boat.json @@ -6,14 +6,11 @@ "###" ], "key": { - "#": { - "item": "minecraft:oak_planks" - }, - "S": { - "item": "minecraft:wooden_shovel" - } + "#": "minecraft:oak_planks", + "S": "minecraft:wooden_shovel" }, "result": { - "id": "minecraft:oak_boat" + "id": "minecraft:oak_boat", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/orange_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/orange_bed_from_white_bed.json index 66e5ee0a..b3f51aa2 100644 --- a/src/main/resources/data/bedrockify/recipe/orange_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/orange_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:orange_dye" - } + "#minecraft:beds", + "minecraft:orange_dye" ], "result": { - "id": "minecraft:orange_bed" + "id": "minecraft:orange_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/orange_wool.json b/src/main/resources/data/bedrockify/recipe/orange_wool.json index f342af91..951b0284 100644 --- a/src/main/resources/data/bedrockify/recipe/orange_wool.json +++ b/src/main/resources/data/bedrockify/recipe/orange_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:orange_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:orange_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:orange_wool" + "id": "minecraft:orange_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/pink_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/pink_bed_from_white_bed.json index bc5ce41d..ba66f7c7 100644 --- a/src/main/resources/data/bedrockify/recipe/pink_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/pink_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:pink_dye" - } + "#minecraft:beds", + "minecraft:pink_dye" ], "result": { - "id": "minecraft:pink_bed" + "id": "minecraft:pink_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/pink_dye_from_red_dye_bone_meal.json b/src/main/resources/data/bedrockify/recipe/pink_dye_from_red_dye_bone_meal.json index 41d6cecb..1474691f 100644 --- a/src/main/resources/data/bedrockify/recipe/pink_dye_from_red_dye_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/pink_dye_from_red_dye_bone_meal.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "group": "pink_dye", "ingredients": [ - { - "item": "minecraft:red_dye" - }, - { - "item": "minecraft:bone_meal" - } + "minecraft:red_dye", + "minecraft:bone_meal" ], "result": { "count": 2, diff --git a/src/main/resources/data/bedrockify/recipe/pink_wool.json b/src/main/resources/data/bedrockify/recipe/pink_wool.json index 0ad58099..02d973df 100644 --- a/src/main/resources/data/bedrockify/recipe/pink_wool.json +++ b/src/main/resources/data/bedrockify/recipe/pink_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:pink_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:pink_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:pink_wool" + "id": "minecraft:pink_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/purple_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/purple_bed_from_white_bed.json index 4e1fda99..7237e258 100644 --- a/src/main/resources/data/bedrockify/recipe/purple_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/purple_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:purple_dye" - } + "#minecraft:beds", + "minecraft:purple_dye" ], "result": { - "id": "minecraft:purple_bed" + "id": "minecraft:purple_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/purple_dye_from_lapis_lazuli.json b/src/main/resources/data/bedrockify/recipe/purple_dye_from_lapis_lazuli.json index 185ffad9..7592b1e7 100644 --- a/src/main/resources/data/bedrockify/recipe/purple_dye_from_lapis_lazuli.json +++ b/src/main/resources/data/bedrockify/recipe/purple_dye_from_lapis_lazuli.json @@ -1,12 +1,8 @@ { "type": "minecraft:crafting_shapeless", "ingredients": [ - { - "item": "minecraft:lapis_lazuli" - }, - { - "item": "minecraft:red_dye" - } + "minecraft:lapis_lazuli", + "minecraft:red_dye" ], "result": { "count": 2, diff --git a/src/main/resources/data/bedrockify/recipe/purple_wool.json b/src/main/resources/data/bedrockify/recipe/purple_wool.json index 8cf3a7f2..97d0ab48 100644 --- a/src/main/resources/data/bedrockify/recipe/purple_wool.json +++ b/src/main/resources/data/bedrockify/recipe/purple_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:purple_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:purple_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:purple_wool" + "id": "minecraft:purple_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/red_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/red_bed_from_white_bed.json index 510dedb6..63a36c65 100644 --- a/src/main/resources/data/bedrockify/recipe/red_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/red_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:red_dye" - } + "#minecraft:beds", + "minecraft:red_dye" ], "result": { - "id": "minecraft:red_bed" + "id": "minecraft:red_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/red_wool.json b/src/main/resources/data/bedrockify/recipe/red_wool.json index d8e234fc..51a75661 100644 --- a/src/main/resources/data/bedrockify/recipe/red_wool.json +++ b/src/main/resources/data/bedrockify/recipe/red_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:red_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:red_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:red_wool" + "id": "minecraft:red_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/spruce_boat.json b/src/main/resources/data/bedrockify/recipe/spruce_boat.json index 0d406457..037e3198 100644 --- a/src/main/resources/data/bedrockify/recipe/spruce_boat.json +++ b/src/main/resources/data/bedrockify/recipe/spruce_boat.json @@ -6,14 +6,11 @@ "###" ], "key": { - "#": { - "item": "minecraft:spruce_planks" - }, - "S": { - "item": "minecraft:wooden_shovel" - } + "#": "minecraft:spruce_planks", + "S": "minecraft:wooden_shovel" }, "result": { - "id": "minecraft:spruce_boat" + "id": "minecraft:spruce_boat", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/string_from_cobweb.json b/src/main/resources/data/bedrockify/recipe/string_from_cobweb.json index ac9eb760..58be7bbc 100644 --- a/src/main/resources/data/bedrockify/recipe/string_from_cobweb.json +++ b/src/main/resources/data/bedrockify/recipe/string_from_cobweb.json @@ -1,9 +1,7 @@ { "type": "minecraft:crafting_shapeless", "ingredients": [ - { - "item": "minecraft:cobweb" - } + "minecraft:cobweb" ], "result": { "count": 9, diff --git a/src/main/resources/data/bedrockify/recipe/white_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/white_bed_from_white_bed.json index bf5aa162..55b0aa66 100644 --- a/src/main/resources/data/bedrockify/recipe/white_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/white_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:white_dye" - } + "#minecraft:beds", + "minecraft:white_dye" ], "result": { - "id": "minecraft:white_bed" + "id": "minecraft:white_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/white_bed_from_white_bed_bone_meal.json b/src/main/resources/data/bedrockify/recipe/white_bed_from_white_bed_bone_meal.json index b7939443..e259a486 100644 --- a/src/main/resources/data/bedrockify/recipe/white_bed_from_white_bed_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/white_bed_from_white_bed_bone_meal.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:bone_meal" - } + "#minecraft:beds", + "minecraft:bone_meal" ], "result": { - "id": "minecraft:white_bed" + "id": "minecraft:white_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/white_bundle_bone_meal.json b/src/main/resources/data/bedrockify/recipe/white_bundle_bone_meal.json new file mode 100644 index 00000000..7a7f7022 --- /dev/null +++ b/src/main/resources/data/bedrockify/recipe/white_bundle_bone_meal.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:crafting_transmute", + "category": "equipment", + "group": "bundle_dye", + "input": "#minecraft:bundles", + "material": "minecraft:bone_meal", + "result": "minecraft:white_bundle" +} \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/white_concrete_powder_bone_meal.json b/src/main/resources/data/bedrockify/recipe/white_concrete_powder_bone_meal.json index a9688c37..33a8c46e 100644 --- a/src/main/resources/data/bedrockify/recipe/white_concrete_powder_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/white_concrete_powder_bone_meal.json @@ -2,33 +2,15 @@ "type": "minecraft:crafting_shapeless", "group": "concrete_powder", "ingredients": [ - { - "item": "minecraft:bone_meal" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - }, - { - "item": "minecraft:gravel" - } + "minecraft:bone_meal", + "minecraft:sand", + "minecraft:sand", + "minecraft:sand", + "minecraft:sand", + "minecraft:gravel", + "minecraft:gravel", + "minecraft:gravel", + "minecraft:gravel" ], "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/white_shulker_box_bone_meal.json b/src/main/resources/data/bedrockify/recipe/white_shulker_box_bone_meal.json new file mode 100644 index 00000000..4d0de085 --- /dev/null +++ b/src/main/resources/data/bedrockify/recipe/white_shulker_box_bone_meal.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:crafting_transmute", + "category": "misc", + "group": "shulker_box_dye", + "input": "#minecraft:shulker_boxes", + "material": "minecraft:bone_meal", + "result": "minecraft:white_shulker_box" +} \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/white_stained_glass_bone_meal.json b/src/main/resources/data/bedrockify/recipe/white_stained_glass_bone_meal.json index 4e1143fb..9eb79ef3 100644 --- a/src/main/resources/data/bedrockify/recipe/white_stained_glass_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/white_stained_glass_bone_meal.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:glass" - }, - "X": { - "item": "minecraft:bone_meal" - } + "#": "minecraft:glass", + "X": "minecraft:bone_meal" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/white_stained_glass_pane_from_glass_pane_bone_meal.json b/src/main/resources/data/bedrockify/recipe/white_stained_glass_pane_from_glass_pane_bone_meal.json index e3e3ce19..fd2bf282 100644 --- a/src/main/resources/data/bedrockify/recipe/white_stained_glass_pane_from_glass_pane_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/white_stained_glass_pane_from_glass_pane_bone_meal.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:glass_pane" - }, - "$": { - "item": "minecraft:bone_meal" - } + "#": "minecraft:glass_pane", + "$": "minecraft:bone_meal" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/white_terracotta_bone_meal.json b/src/main/resources/data/bedrockify/recipe/white_terracotta_bone_meal.json index 45120afc..9ff0c749 100644 --- a/src/main/resources/data/bedrockify/recipe/white_terracotta_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/white_terracotta_bone_meal.json @@ -7,12 +7,8 @@ "###" ], "key": { - "#": { - "item": "minecraft:terracotta" - }, - "X": { - "item": "minecraft:bone_meal" - } + "#": "minecraft:terracotta", + "X": "minecraft:bone_meal" }, "result": { "count": 8, diff --git a/src/main/resources/data/bedrockify/recipe/white_wool_bone_meal.json b/src/main/resources/data/bedrockify/recipe/white_wool_bone_meal.json index 17358c31..8a4998e1 100644 --- a/src/main/resources/data/bedrockify/recipe/white_wool_bone_meal.json +++ b/src/main/resources/data/bedrockify/recipe/white_wool_bone_meal.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:bone_meal" - }, - { - "tag": "minecraft:wool" - } + "minecraft:bone_meal", + "#minecraft:wool" ], "result": { - "id": "minecraft:white_wool" + "id": "minecraft:white_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/white_wool_from_colored.json b/src/main/resources/data/bedrockify/recipe/white_wool_from_colored.json index 9d35ac9e..18451568 100644 --- a/src/main/resources/data/bedrockify/recipe/white_wool_from_colored.json +++ b/src/main/resources/data/bedrockify/recipe/white_wool_from_colored.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:white_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:white_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:white_wool" + "id": "minecraft:white_wool", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/yellow_bed_from_white_bed.json b/src/main/resources/data/bedrockify/recipe/yellow_bed_from_white_bed.json index 95be243f..aeae2865 100644 --- a/src/main/resources/data/bedrockify/recipe/yellow_bed_from_white_bed.json +++ b/src/main/resources/data/bedrockify/recipe/yellow_bed_from_white_bed.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "dyed_bed", "ingredients": [ - { - "tag": "minecraft:beds" - }, - { - "item": "minecraft:yellow_dye" - } + "#minecraft:beds", + "minecraft:yellow_dye" ], "result": { - "id": "minecraft:yellow_bed" + "id": "minecraft:yellow_bed", + "count": 1 } } \ No newline at end of file diff --git a/src/main/resources/data/bedrockify/recipe/yellow_wool.json b/src/main/resources/data/bedrockify/recipe/yellow_wool.json index 9b8dfe87..f5c65dc4 100644 --- a/src/main/resources/data/bedrockify/recipe/yellow_wool.json +++ b/src/main/resources/data/bedrockify/recipe/yellow_wool.json @@ -2,14 +2,11 @@ "type": "minecraft:crafting_shapeless", "group": "wool", "ingredients": [ - { - "item": "minecraft:yellow_dye" - }, - { - "tag": "minecraft:wool" - } + "minecraft:yellow_dye", + "#minecraft:wool" ], "result": { - "id": "minecraft:yellow_wool" + "id": "minecraft:yellow_wool", + "count": 1 } } \ No newline at end of file