From cdaae63d78ef9a3bfacbabec6cbd448b9b221c51 Mon Sep 17 00:00:00 2001 From: JoakimThorsen Date: Tue, 26 Dec 2023 13:13:31 +0100 Subject: [PATCH] 1.17.x-1.20.x support --- build.gradle | 2 +- gradle.properties | 2 +- .../com/joacarpet/HelloWorldTemplate.java | 14 +++--- .../java/com/joacarpet/InsaneBehaviors.java | 12 ++--- src/main/java/com/joacarpet/JoaCarpetMod.java | 49 ++++++++++++++++--- .../java/com/joacarpet/JoaCarpetSettings.java | 46 ++++++++++++++--- .../commands/InsaneBehaviorsCommand.java | 16 ++++-- .../mixin/blockTickling/ItemMixin.java | 18 +++++-- .../DefaultDispenseItemBehaviorMixin.java | 10 +--- .../insaneBehaviors/PistonBaseBlockMixin.java | 6 ++- .../insaneBehaviors/ProjectileMixin.java | 2 +- versions/1.20.2/gradle.properties | 2 +- versions/mainProject | 2 +- 13 files changed, 130 insertions(+), 51 deletions(-) diff --git a/build.gradle b/build.gradle index 7dc411d..ef6e57a 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ preprocess { def mc117 = createNode('1.17.1' , 1_17_01, 'yarn') def mc118 = createNode('1.18.2' , 1_18_02, 'yarn') def mc119 = createNode('1.19.4' , 1_19_04, 'yarn') - def mc120 = createNode('1.20.2' , 1_20_04, 'yarn') + def mc120 = createNode('1.20.2' , 1_20_02, 'yarn') mc115.link(mc114, null) mc115.link(mc116, null) diff --git a/gradle.properties b/gradle.properties index 438e503..8809119 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ # Mod Properties mod_id=joacarpet mod_name=JoaCarpet - mod_version=1.0.0 + mod_version=2.0.0 maven_group=me.fallenbreath archives_base_name=joacarpet diff --git a/src/main/java/com/joacarpet/HelloWorldTemplate.java b/src/main/java/com/joacarpet/HelloWorldTemplate.java index 3023c1b..150cf3a 100644 --- a/src/main/java/com/joacarpet/HelloWorldTemplate.java +++ b/src/main/java/com/joacarpet/HelloWorldTemplate.java @@ -25,24 +25,24 @@ import net.fabricmc.loader.api.metadata.ModMetadata; //#if MC >= 11800 -import com.mojang.logging.LogUtils; -import org.slf4j.Logger; +//$$ import com.mojang.logging.LogUtils; +//$$ import org.slf4j.Logger; //#else -//$$ import org.apache.logging.log4j.LogManager; -//$$ import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; //#endif public class HelloWorldTemplate implements ModInitializer { public static final Logger LOGGER = //#if MC >= 11800 - LogUtils.getLogger(); + //$$ LogUtils.getLogger(); //#else - //$$ LogManager.getLogger(); + LogManager.getLogger(); //#endif public static final String MOD_ID = "com/joacarpet"; - public static String MOD_VERSION = "b2.0.0"; + public static String MOD_VERSION = "2.0.0"; public static String MOD_NAME = "JoaCarpet"; @Override diff --git a/src/main/java/com/joacarpet/InsaneBehaviors.java b/src/main/java/com/joacarpet/InsaneBehaviors.java index 1c5271e..53c8797 100644 --- a/src/main/java/com/joacarpet/InsaneBehaviors.java +++ b/src/main/java/com/joacarpet/InsaneBehaviors.java @@ -56,23 +56,17 @@ public static Vec3 mapUnitVelocityToVec3(ArrayList velocity, int factor, public static int resetCounterAndResolution(CommandSourceStack c) { counter = 0; resolution = 2; - if(c.getPlayer() != null) { - Messenger.m(c.getPlayer(), "w Reset."); - } + JoaCarpetMod.messagePlayerIfExists(c, "w Reset."); return 1; } public static int getState(CommandSourceStack c) { - if(c.getPlayer() != null) { - Messenger.m(c.getPlayer(), "w Current state: Resolution=" + resolution + ", Counter=" + counter); - } + JoaCarpetMod.messagePlayerIfExists(c, "w Current state: Resolution=" + resolution + ", Counter=" + counter); return 1; } public static int setState(CommandSourceStack c, int _resolution, int _counter) { resolution = _resolution; counter = _counter; - if(c.getPlayer() != null) { - Messenger.m(c.getPlayer(), "w Updated resolution and counter: Resolution=" + resolution + ", Counter=" + counter); - } + JoaCarpetMod.messagePlayerIfExists(c, "w Updated resolution and counter: Resolution=" + resolution + ", Counter=" + counter); return 1; } } diff --git a/src/main/java/com/joacarpet/JoaCarpetMod.java b/src/main/java/com/joacarpet/JoaCarpetMod.java index 1281c19..f69a29e 100644 --- a/src/main/java/com/joacarpet/JoaCarpetMod.java +++ b/src/main/java/com/joacarpet/JoaCarpetMod.java @@ -22,19 +22,38 @@ import carpet.CarpetExtension; import carpet.CarpetServer; +import carpet.utils.Messenger; import carpet.utils.Translations; import com.joacarpet.commands.InsaneBehaviorsCommand; import com.mojang.brigadier.CommandDispatcher; import net.fabricmc.api.ModInitializer; -import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; import java.util.Map; + + +//#if MC >= 11900 +//$$ import net.minecraft.commands.CommandBuildContext; +//#endif +//#if MC >= 11800 +//$$ import org.slf4j.Logger; +//$$ import org.slf4j.LoggerFactory; +//#else +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +//#endif + + public class JoaCarpetMod implements ModInitializer, CarpetExtension { - public static final Logger LOGGER = LoggerFactory.getLogger("joacarpet"); + public static final Logger LOGGER = + //#if MC >= 11800 +//$$ LoggerFactory.getLogger("joacarpet"); + //#else + LogManager.getLogger("joacarpet"); + //#endif + @Override public void onInitialize() {} @@ -44,8 +63,11 @@ public void onInitialize() {} } @Override - public void registerCommands(CommandDispatcher dispatcher, - final CommandBuildContext commandBuildContext) { + public void registerCommands(CommandDispatcher dispatcher + //#if MC >= 11900 +//$$ , final CommandBuildContext commandBuildContext + //#endif + ) { InsaneBehaviorsCommand.register(dispatcher); } @@ -63,4 +85,17 @@ public String version() { public Map canHasTranslations(String lang) { return Translations.getTranslationFromResourcePath(String.format("assets/joacarpet/lang/%s.json", lang)); } + + public static void messagePlayerIfExists(CommandSourceStack c, String message) { + + //#if MC >= 11900 +//$$ if(c.getPlayer() != null) { +//$$ Messenger.m(c.getPlayer(), message); +//$$ } + //#else + if(c.getEntity() instanceof ServerPlayer) { + Messenger.m((Player) c.getEntity(), message); + } + //#endif + } } diff --git a/src/main/java/com/joacarpet/JoaCarpetSettings.java b/src/main/java/com/joacarpet/JoaCarpetSettings.java index c05f562..57364e2 100644 --- a/src/main/java/com/joacarpet/JoaCarpetSettings.java +++ b/src/main/java/com/joacarpet/JoaCarpetSettings.java @@ -20,20 +20,54 @@ package com.joacarpet; -import carpet.api.settings.Rule; +//#if MC >= 11900 +//$$ import carpet.api.settings.Rule; +//#else +import carpet.settings.Rule; +//#endif + +//#if MC >= 11900 +//$$ import static carpet.api.settings.RuleCategory.COMMAND; +//$$ import static carpet.api.settings.RuleCategory.CREATIVE; +//#else +import static carpet.settings.RuleCategory.COMMAND; +import static carpet.settings.RuleCategory.CREATIVE; +//#endif -import static carpet.api.settings.RuleCategory.COMMAND; -import static carpet.api.settings.RuleCategory.CREATIVE; public class JoaCarpetSettings { public static final String JOA = "JoaCarpet"; - @Rule(categories = {CREATIVE, JOA}, options = {"extreme", "sensible", "off"}) + @Rule( + //#if MC >= 11900 +//$$ categories = {CREATIVE, JOA}, + //#else + category = {CREATIVE, JOA}, + desc="Makes the random velocities of droppers and projectiles (as well as both the position and velocity of blocks broken by pistons) systematically iterate through the most extreme values possible, and then repeatedly iterate through all the halfway points in between, in a sense attempting every point in a 3d/5d \"grid\" that slowly increases in resolution.\nFor droppers and projectiles, this setting determines whether the max value corresponds to the old gaussian randomness limits (\"extreme\"), or the limits of the triangular randomness introduced in 1.19 (\"sensible\"). Both settings function the same for blocks being broken by pistons.\nFor the `/insanebehaviors ` command, see `/carpet commandInsaneBehaviors`.\nDo note that insaneBehaviors works on a global iterator: any triggering event will step through an iteration from all other insaneBehaviors events, too.", + //#endif + options = {"extreme", "sensible", "off"} + ) public static String insaneBehaviors = "off"; - @Rule(categories = {COMMAND, CREATIVE, JOA}, options = {"true", "ops", "false", "0", "1", "2", "3", "4"}) + @Rule( + //#if MC >= 11900 +//$$ categories = {COMMAND, CREATIVE, JOA}, + //#else + category = {COMMAND, CREATIVE, JOA}, + desc="The command used for the `insaneBehaviors` rule.\n\"reset\" sets the `resolution` and `counter` back to the default values. \"getstate\" and \"setstate\" are used to manually read and write the current iteration state.", + //#endif + options = {"true", "ops", "false", "0", "1", "2", "3", "4"} + ) public static String commandInsaneBehaviors = "ops"; - @Rule(categories = {CREATIVE, JOA}, options = {"off", "blockupdates", "shapeupdates", "both"}) + @Rule( + //#if MC >= 11900 +//$$ categories = {CREATIVE, JOA}, + //#else + category = {CREATIVE, JOA}, + desc="Lets you send manual block and/or shape updates to blocks using a feather item. Updates are sent from the block in front of the face you're clicking on. Useful if you're working with update interations off or with budded blocks.", + //#endif + options = {"off", "blockupdates", "shapeupdates", "both"} + ) public static String blockTickling = "off"; } diff --git a/src/main/java/com/joacarpet/commands/InsaneBehaviorsCommand.java b/src/main/java/com/joacarpet/commands/InsaneBehaviorsCommand.java index b8a5da1..7eca08f 100644 --- a/src/main/java/com/joacarpet/commands/InsaneBehaviorsCommand.java +++ b/src/main/java/com/joacarpet/commands/InsaneBehaviorsCommand.java @@ -20,16 +20,20 @@ package com.joacarpet.commands; -import carpet.utils.CommandHelper; import com.joacarpet.InsaneBehaviors; import com.joacarpet.JoaCarpetMod; import com.joacarpet.JoaCarpetSettings; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.IntegerArgumentType; import net.minecraft.commands.CommandSourceStack; - import java.util.Objects; +//#if MC >= 11900 +//$$ import carpet.utils.CommandHelper; +//#else +import carpet.settings.SettingsManager; +//#endif + import static net.minecraft.commands.Commands.argument; import static net.minecraft.commands.Commands.literal; @@ -38,7 +42,13 @@ public static void register(CommandDispatcher dispatcher) { dispatcher.register( literal("insanebehaviors") .requires(c -> !Objects.equals(JoaCarpetSettings.insaneBehaviors, "normal") && - CommandHelper.canUseCommand(c, JoaCarpetSettings.commandInsaneBehaviors)) + //#if MC >= 11900 +//$$ CommandHelper.canUseCommand(c, JoaCarpetSettings.commandInsaneBehaviors)) + //#else + SettingsManager.canUseCommand(c, JoaCarpetSettings.commandInsaneBehaviors)) + //#endif + + .executes(c -> 1) .then( literal("reset") diff --git a/src/main/java/com/joacarpet/mixin/blockTickling/ItemMixin.java b/src/main/java/com/joacarpet/mixin/blockTickling/ItemMixin.java index e864496..4c9c677 100644 --- a/src/main/java/com/joacarpet/mixin/blockTickling/ItemMixin.java +++ b/src/main/java/com/joacarpet/mixin/blockTickling/ItemMixin.java @@ -20,6 +20,7 @@ package com.joacarpet.mixin.blockTickling; +import com.joacarpet.JoaCarpetMod; import com.joacarpet.JoaCarpetSettings; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionResult; @@ -27,6 +28,7 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -44,15 +46,23 @@ public void useOn(UseOnContext useOnContext, CallbackInfoReturnable= 11900 +//$$ level.neighborShapeChanged(useOnContext.getClickedFace(), neighborBlockState, clickedPos, neighborPos, 2, 512); + //#else + BlockState clickedBlockState = level.getBlockState(clickedPos); + BlockState newState = clickedBlockState.updateShape(useOnContext.getClickedFace(), neighborBlockState, level, clickedPos, neighborPos); + Block.updateOrDestroy(clickedBlockState, newState, level, clickedPos, 2, 512); + //#endif } cir.setReturnValue(InteractionResult.SUCCESS); } diff --git a/src/main/java/com/joacarpet/mixin/insaneBehaviors/DefaultDispenseItemBehaviorMixin.java b/src/main/java/com/joacarpet/mixin/insaneBehaviors/DefaultDispenseItemBehaviorMixin.java index e44d478..471ca37 100644 --- a/src/main/java/com/joacarpet/mixin/insaneBehaviors/DefaultDispenseItemBehaviorMixin.java +++ b/src/main/java/com/joacarpet/mixin/insaneBehaviors/DefaultDispenseItemBehaviorMixin.java @@ -41,7 +41,7 @@ public class DefaultDispenseItemBehaviorMixin { @Redirect(method = "spawnItem", at = @At( value = "INVOKE", - target = "net/minecraft/world/entity/item/ItemEntity.setDeltaMovement (DDD)V" + target = "Lnet/minecraft/world/entity/item/ItemEntity;setDeltaMovement(DDD)V" )) private static void setDeltaMovement(ItemEntity itemEntity, double d, double e, double f, Level _level, ItemStack _itemStack, int i, Direction direction, Position _position) { if (JoaCarpetSettings.insaneBehaviors.equals("off")) { @@ -70,12 +70,4 @@ private static void setDeltaMovement(ItemEntity itemEntity, double d, double e, }; itemEntity.setDeltaMovement(velocity); } - -// @Redirect(method = "spawnItem", expect = 3, at = @At( -// value = "INVOKE", -// target = "net/minecraft/util/RandomSource.triangle (DD)D" -// )) -// private static double triangle(RandomSource randomSource, double d, double e) { -// return d + e * (randomSource.nextDouble() - randomSource.nextDouble()) + 1; -// } } diff --git a/src/main/java/com/joacarpet/mixin/insaneBehaviors/PistonBaseBlockMixin.java b/src/main/java/com/joacarpet/mixin/insaneBehaviors/PistonBaseBlockMixin.java index 821a11b..1e394fd 100644 --- a/src/main/java/com/joacarpet/mixin/insaneBehaviors/PistonBaseBlockMixin.java +++ b/src/main/java/com/joacarpet/mixin/insaneBehaviors/PistonBaseBlockMixin.java @@ -59,7 +59,11 @@ private void dropResources(BlockState blockState, LevelAccessor levelAccessor, B customPopResource(level, blockPos, itemStack); } }); - blockState.spawnAfterBreak((ServerLevel)levelAccessor, blockPos, ItemStack.EMPTY, true); + //#if MC >= 11900 +//$$ blockState.spawnAfterBreak((ServerLevel)levelAccessor, blockPos, ItemStack.EMPTY, true); + //#else + blockState.spawnAfterBreak((ServerLevel)levelAccessor, blockPos, ItemStack.EMPTY); + //#endif } } diff --git a/src/main/java/com/joacarpet/mixin/insaneBehaviors/ProjectileMixin.java b/src/main/java/com/joacarpet/mixin/insaneBehaviors/ProjectileMixin.java index deb17ab..38739b0 100644 --- a/src/main/java/com/joacarpet/mixin/insaneBehaviors/ProjectileMixin.java +++ b/src/main/java/com/joacarpet/mixin/insaneBehaviors/ProjectileMixin.java @@ -36,7 +36,7 @@ public class ProjectileMixin { @Redirect(method = "shoot", at = @At( value = "INVOKE", - target = "net/minecraft/world/phys/Vec3.add (DDD)Lnet/minecraft/world/phys/Vec3;" + target = "Lnet/minecraft/world/phys/Vec3;add(DDD)Lnet/minecraft/world/phys/Vec3;" )) private Vec3 add(Vec3 vec3, double d, double e, double f, double deltaMovementX, double deltaMovementY, double deltaMovementZ, float deltaMovementMultiplier, float divergence) { if (JoaCarpetSettings.insaneBehaviors.equals("off")) { diff --git a/versions/1.20.2/gradle.properties b/versions/1.20.2/gradle.properties index 889759c..e4d07fc 100644 --- a/versions/1.20.2/gradle.properties +++ b/versions/1.20.2/gradle.properties @@ -8,7 +8,7 @@ # Build Information # The target mc versions for the mod during mod publishing, separated with \n - game_versions=1.20.2 + game_versions=1.20.2\n1.20.1 # Dependencies # fabric_api_version=0.91.3+1.20.4 diff --git a/versions/mainProject b/versions/mainProject index d63a25a..507266b 100644 --- a/versions/mainProject +++ b/versions/mainProject @@ -1 +1 @@ -1.19.4 \ No newline at end of file +1.17.1 \ No newline at end of file