From 58d4a691c6bdf75fff6ca687e5666f330190481f Mon Sep 17 00:00:00 2001 From: RatzzFatzz Date: Tue, 30 Nov 2021 18:38:59 +0100 Subject: [PATCH] Add option to disable mod for survival mode --- build.gradle | 4 ++-- .../java/at/pcgf/flymod/gui/FlyModConfig.java | 9 ++++++++- .../at/pcgf/flymod/mixin/PlayerEntityMixin.java | 17 +++++++++++------ .../resources/assets/flymod/lang/de_de.json | 1 + .../resources/assets/flymod/lang/en_us.json | 1 + 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index cd6f94a..89eb703 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,13 @@ plugins { id 'maven-publish' - id 'fabric-loom' version '0.8.17' + id 'fabric-loom' version '0.10.62' } sourceCompatibility = JavaVersion.VERSION_16 targetCompatibility = JavaVersion.VERSION_16 archivesBaseName = 'flymod' -version = '1.7.1' +version = '1.7.2' group = 'at.pcgf.flymod' repositories { diff --git a/src/main/java/at/pcgf/flymod/gui/FlyModConfig.java b/src/main/java/at/pcgf/flymod/gui/FlyModConfig.java index 7816755..5df202a 100644 --- a/src/main/java/at/pcgf/flymod/gui/FlyModConfig.java +++ b/src/main/java/at/pcgf/flymod/gui/FlyModConfig.java @@ -21,11 +21,16 @@ import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.TranslatableText; +import java.io.ObjectInputFilter; + public class FlyModConfig { @Expose public boolean mouseControl = true; + @Expose + public boolean onlyForCreative = false; + @Expose public float flyUpDownBlocks = 0.4f; @@ -50,7 +55,8 @@ static Screen createConfigScreen(Screen parent) { .addEntry(ConfigEntryBuilder.create().startFloatField(ConfigTexts.FLY_SPEED_MULTIPLIER, config.flySpeedMultiplier).setDefaultValue(3f).setSaveConsumer(b -> config.flySpeedMultiplier = b).build()) .addEntry(ConfigEntryBuilder.create().startFloatField(ConfigTexts.RUN_SPEED_MULTIPLIER, config.runSpeedMultiplier).setDefaultValue(2f).setSaveConsumer(b -> config.runSpeedMultiplier = b).build()) .addEntry(ConfigEntryBuilder.create().startBooleanToggle(ConfigTexts.MULTIPLY_UP_DOWN1, config.multiplyUpDown).setDefaultValue(true).setSaveConsumer(b -> config.multiplyUpDown = b).build()) - .addEntry(ConfigEntryBuilder.create().startBooleanToggle(ConfigTexts.FADE_MOVEMENT, config.fadeMovement).setDefaultValue(true).setSaveConsumer(b -> config.fadeMovement = b).build()); + .addEntry(ConfigEntryBuilder.create().startBooleanToggle(ConfigTexts.FADE_MOVEMENT, config.fadeMovement).setDefaultValue(true).setSaveConsumer(b -> config.fadeMovement = b).build()) + .addEntry(ConfigEntryBuilder.create().startBooleanToggle(ConfigTexts.CREATIVE_ONLY, config.onlyForCreative).setDefaultValue(true).setSaveConsumer(b -> config.onlyForCreative = b).build()); builder.setSavingRunnable((FlyModConfigManager::save)); return builder.build(); } @@ -59,6 +65,7 @@ private static class ConfigTexts { static final TranslatableText TITLE = createTranslatableText("text.%s.title"); static final TranslatableText CATEGORY = createTranslatableText("text.%s.category.default"); static final TranslatableText MOUSE_CONTROL = createTranslatableText("text.%s.option.mouseControl"); + static final TranslatableText CREATIVE_ONLY = createTranslatableText("text.%s.option.creativeOnly"); static final TranslatableText FLY_UP_DOWN_BLOCKS = createTranslatableText("text.%s.option.flyUpDownBlocks"); static final TranslatableText FLY_SPEED_MULTIPLIER = createTranslatableText("text.%s.option.flySpeedMultiplier"); static final TranslatableText RUN_SPEED_MULTIPLIER = createTranslatableText("text.%s.option.runSpeedMultiplier"); diff --git a/src/main/java/at/pcgf/flymod/mixin/PlayerEntityMixin.java b/src/main/java/at/pcgf/flymod/mixin/PlayerEntityMixin.java index 52586f4..6a2b167 100644 --- a/src/main/java/at/pcgf/flymod/mixin/PlayerEntityMixin.java +++ b/src/main/java/at/pcgf/flymod/mixin/PlayerEntityMixin.java @@ -20,10 +20,6 @@ import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.entity.MovementType; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.Fluids; -import net.minecraft.tag.Tag; -import net.minecraft.text.Text; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Quaternion; import net.minecraft.util.math.Vec3d; @@ -46,7 +42,7 @@ protected PlayerEntityMixin(World world, BlockPos blockPos, float f, GameProfile public void move(MovementType type, Vec3d vec3d) { toggleFlying(); - if (getAbilities().flying) { + if (getAbilities().flying && isActiveForCurrentGamemode()) { boolean backwards = MinecraftClient.getInstance().options.keyBack.isPressed(); boolean forwards = MinecraftClient.getInstance().options.keyForward.isPressed(); boolean left = MinecraftClient.getInstance().options.keyLeft.isPressed(); @@ -61,7 +57,7 @@ public void move(MovementType type, Vec3d vec3d) { setSprinting(false); super.move(type, vec); - } else if (!getAbilities().flying) { + } else if (!getAbilities().flying && isActiveForCurrentGamemode()) { Vec3d vec = vec3d; if (MinecraftClient.getInstance().options.keySprint.isPressed()) { setSwimming(isSubmergedInWater); @@ -75,6 +71,10 @@ public void move(MovementType type, Vec3d vec3d) { } private void toggleFlying() { + if (!isActiveForCurrentGamemode()) { + return; + } + if (flyingState == FLYING) { getAbilities().flying = true; } else if (flyingState == NEUTRAL) { @@ -83,9 +83,14 @@ private void toggleFlying() { } else if (flyingState == NOT_FLYING && getAbilities().flying) { flyingState = FLYING; } + sendAbilitiesUpdate(); } + private boolean isActiveForCurrentGamemode() { + return !(FlyModConfigManager.getConfig().onlyForCreative && !getAbilities().creativeMode); + } + private Vec3d mouseControlMovement(Vec3d vec3d, boolean backwards, boolean forwards, boolean left, boolean right) { if (FlyModConfigManager.getConfig().mouseControl) { float pitch = prevPitch; diff --git a/src/main/resources/assets/flymod/lang/de_de.json b/src/main/resources/assets/flymod/lang/de_de.json index 49b9224..91dc423 100644 --- a/src/main/resources/assets/flymod/lang/de_de.json +++ b/src/main/resources/assets/flymod/lang/de_de.json @@ -2,6 +2,7 @@ "text.flymod.title": "Fly Mod Einstellungen", "text.flymod.category.default": "Allgemein", "text.flymod.option.mouseControl": "Ein / Aus von Maussteuerung", + "text.flymod.option.creativeOnly": "Nur im Kreativ-Modus verwenden", "text.flymod.option.flyUpDownBlocks": "Anzahl an Blöcken die pro Tick hoch- / runtergeflogen wird", "text.flymod.option.flySpeedMultiplier": "Fluggeschwindigkeitsmultiplikator", "text.flymod.option.runSpeedMultiplier": "Renngeschwindigkeitsmultiplikator", diff --git a/src/main/resources/assets/flymod/lang/en_us.json b/src/main/resources/assets/flymod/lang/en_us.json index 98c4245..5a88f01 100644 --- a/src/main/resources/assets/flymod/lang/en_us.json +++ b/src/main/resources/assets/flymod/lang/en_us.json @@ -2,6 +2,7 @@ "text.flymod.title": "Fly Mod Configuration", "text.flymod.category.default": "Main", "text.flymod.option.mouseControl": "Toggle mouse control", + "text.flymod.option.creativeOnly": "Use only in creative mode", "text.flymod.option.flyUpDownBlocks": "Amount of blocks to fly up or down per tick", "text.flymod.option.flySpeedMultiplier": "Fly speed multiplier", "text.flymod.option.runSpeedMultiplier": "Run speed multiplier",