diff --git a/gradle.properties b/gradle.properties index 76fc847..7faea92 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ mcVersion=1.21.8 release=2 # 0 for skip release, 1 for pre-release, 2 for release -luminolRef=3abd05f4f668c87eddc44d719561c5ee6f88373e +luminolRef=28b3474018b42c98e210aea107dc3b161079db65 org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/lophine-server/minecraft-patches/features/0013-Leaves-Redstone-Shears-Wrench.patch b/lophine-server/minecraft-patches/features/0013-Leaves-Redstone-Shears-Wrench.patch index 07091eb..8d830ec 100644 --- a/lophine-server/minecraft-patches/features/0013-Leaves-Redstone-Shears-Wrench.patch +++ b/lophine-server/minecraft-patches/features/0013-Leaves-Redstone-Shears-Wrench.patch @@ -7,25 +7,6 @@ Co-authored by: violetc <58360096+s-yh-china@users.noreply.github.com> As a part of : Leaves (https://github.com/LeavesMC/Leaves/blob/79d9ef74c2684eb49060f07e1ab31c827326c9a5/leaves-server/minecraft-patches/features/0009-Redstone-Shears-Wrench.patch) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) -diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java -index 6db566adf2d0df1d26221eda04aa01738df6d3d2..24ebfdf98e343a7892af621d032c35819156deec 100644 ---- a/net/minecraft/world/item/BlockItem.java -+++ b/net/minecraft/world/item/BlockItem.java -@@ -56,6 +56,14 @@ public class BlockItem extends Item { - if (blockPlaceContext == null) { - return InteractionResult.FAIL; - } else { -+ // Leaves start - shears wrench -+ if (org.leavesmc.leaves.util.ShearsWrenchUtil.shouldSkipPlace(context)) { -+ if (context.getPlayer() != null) { -+ context.getPlayer().containerMenu.forceHeldSlot(blockPlaceContext.getHand()); -+ } -+ return InteractionResult.FAIL; -+ } -+ // Leaves end - shears wrench - BlockState placementState = this.getPlacementState(blockPlaceContext); - // CraftBukkit start - special case for handling block placement with water lilies and snow buckets - org.bukkit.block.BlockState bukkitState = null; diff --git a/net/minecraft/world/item/ShearsItem.java b/net/minecraft/world/item/ShearsItem.java index 8cf3e51e12f9cf98836657e722edb23943f9e866..5fd5e9fd4e1a79dd1a9d62a5cf0c308805979420 100644 --- a/net/minecraft/world/item/ShearsItem.java diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ContainerExpansionConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ContainerExpansionConfig.java index 3554c13..1dd9c69 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ContainerExpansionConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ContainerExpansionConfig.java @@ -1,6 +1,7 @@ package fun.bm.lophine.config.modules.function; import me.earthme.luminol.config.IConfigModule; +import me.earthme.luminol.config.flags.CommandSuggestions; import me.earthme.luminol.config.flags.ConfigClassInfo; import me.earthme.luminol.config.flags.ConfigInfo; import me.earthme.luminol.config.flags.TransformedConfig; @@ -9,18 +10,21 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(configAttribution = EnumConfigCategory.FUNCTION, mainName = "container_expansion") public class ContainerExpansionConfig implements IConfigModule { @TransformedConfig(name = "barrel_rows", category = {"misc", "container_expansion"}) + @CommandSuggestions(suggest = {"1", "2", "3", "4", "5", "6"}) @ConfigInfo(baseName = "barrel_rows", comments = """ range: 1~6""") public static int barrelRows = 3; @TransformedConfig(name = "enderchest_rows", category = {"misc", "container_expansion"}) + @CommandSuggestions(suggest = {"1", "2", "3", "4", "5", "6"}) @ConfigInfo(baseName = "enderchest_rows", comments = """ range: 1~6""") public static int enderchestRows = 3; @TransformedConfig(name = "shulker_stackable_count", category = {"misc", "container_expansion"}) + @CommandSuggestions(suggest = {"1", "2", "32", "64"}) @ConfigInfo(baseName = "shulker_stackable_count", comments = """ range: 1~64""") diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/SurvuxProtocolConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/SurvuxProtocolConfig.java index fd478e0..18ae6d6 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/SurvuxProtocolConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/SurvuxProtocolConfig.java @@ -1,6 +1,7 @@ package fun.bm.lophine.config.modules.function; import me.earthme.luminol.config.IConfigModule; +import me.earthme.luminol.config.flags.CommandSuggestions; import me.earthme.luminol.config.flags.ConfigClassInfo; import me.earthme.luminol.config.flags.ConfigInfo; import me.earthme.luminol.config.flags.TransformedConfig; @@ -43,6 +44,7 @@ public class SurvuxProtocolConfig implements IConfigModule { public static boolean litematicsEnabled = false; @TransformedConfig(name = "litematics-max-nbt-size", category = {"misc", "survux-protocol"}) + @CommandSuggestions(suggest = {"-1", "2097152"}) @ConfigInfo(baseName = "litematics-max-nbt-size") public static int litematicsMaxNbtSize = 2097152; } diff --git a/lophine-server/src/main/java/org/leavesmc/leaves/util/ShearsWrenchUtil.java b/lophine-server/src/main/java/org/leavesmc/leaves/util/ShearsWrenchUtil.java index 3b3a830..c2afc92 100644 --- a/lophine-server/src/main/java/org/leavesmc/leaves/util/ShearsWrenchUtil.java +++ b/lophine-server/src/main/java/org/leavesmc/leaves/util/ShearsWrenchUtil.java @@ -1,20 +1,3 @@ -/* - * This file is part of Leaves (https://github.com/LeavesMC/Leaves) - * - * Leaves is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Leaves is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Leaves. If not, see . - */ - package org.leavesmc.leaves.util; import fun.bm.lophine.config.modules.function.RedStoneConfig; @@ -25,8 +8,6 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.*; @@ -47,6 +28,9 @@ public class ShearsWrenchUtil { if (!RedStoneConfig.shears || !(block instanceof ObserverBlock || block instanceof DispenserBlock || block instanceof PistonBaseBlock || block instanceof HopperBlock || block instanceof RepeaterBlock || block instanceof ComparatorBlock || block instanceof CrafterBlock || block instanceof LeverBlock || block instanceof CocoaBlock || block instanceof TrapDoorBlock || block instanceof FenceGateBlock || block instanceof LightningRodBlock || block instanceof CalibratedSculkSensorBlock || block instanceof BaseRailBlock)) { return null; } + if (context.getPlayer() == null || !context.getPlayer().getItemInHand(invert(context.getHand())).isEmpty()) { + return null; + } StateDefinition blockstatelist = block.getStateDefinition(); Property iblockstate; if (block instanceof CrafterBlock) { @@ -106,10 +90,8 @@ public class ShearsWrenchUtil { return InteractionResult.CONSUME; } - public static boolean shouldSkipPlace(BlockPlaceContext context) { - return RedStoneConfig.shears && - context.getPlayer() != null && - context.getPlayer().getItemInHand(InteractionHand.MAIN_HAND).is(Items.SHEARS); + private static InteractionHand invert(InteractionHand original) { + return original == InteractionHand.MAIN_HAND ? InteractionHand.OFF_HAND : InteractionHand.MAIN_HAND; } private static > BlockState cycleState(BlockState state, Property property, boolean inverse) {