From 918d0bc9b9e0f3ab575294f13c834b2836940f4f Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Tue, 7 Apr 2020 22:03:06 -0400 Subject: [PATCH] 1.0.10 Allow Dilating Random Tick Speed --- CHANGELOG.md | 3 +++ gradle.properties | 2 +- .../reliccraft/item/TimeDilaterItem.java | 15 +++++++++++ .../mixin/MixinServerChunkManager.java | 26 +++++++++++++++++++ .../reliccraft/mixin/MixinWorld.java | 13 +--------- src/main/resources/reliccraft.mixins.json | 1 + 6 files changed, 47 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/thebrokenrail/reliccraft/mixin/MixinServerChunkManager.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 8002bf9..650f45a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +**1.0.10** +* Allow Dilating Random Tick Speed + **1.0.9** * Fix Structure Generation Bug with Modded Biomes diff --git a/gradle.properties b/gradle.properties index e39fc9d..45b35f0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ org.gradle.jvmargs = -Xmx1G fabric_loader_version = 0.7.10+build.191 # Mod Properties - mod_version = 1.0.9 + mod_version = 1.0.10 maven_group = com.thebrokenrail archives_base_name = reliccraft diff --git a/src/main/java/com/thebrokenrail/reliccraft/item/TimeDilaterItem.java b/src/main/java/com/thebrokenrail/reliccraft/item/TimeDilaterItem.java index fc89788..2994913 100644 --- a/src/main/java/com/thebrokenrail/reliccraft/item/TimeDilaterItem.java +++ b/src/main/java/com/thebrokenrail/reliccraft/item/TimeDilaterItem.java @@ -89,4 +89,19 @@ public class TimeDilaterItem extends Item { tag.putByte("Artificial", (byte) 2); } } + + public static long getTimeDilationFactor(TimeSpeed speed) { + switch (speed) { + case FAST: { + return 4L; + } + case VERY_FAST: { + return 8L; + } + default: + case NORMAL: { + return 1L; + } + } + } } diff --git a/src/main/java/com/thebrokenrail/reliccraft/mixin/MixinServerChunkManager.java b/src/main/java/com/thebrokenrail/reliccraft/mixin/MixinServerChunkManager.java new file mode 100644 index 0000000..f08a1d3 --- /dev/null +++ b/src/main/java/com/thebrokenrail/reliccraft/mixin/MixinServerChunkManager.java @@ -0,0 +1,26 @@ +package com.thebrokenrail.reliccraft.mixin; + +import com.thebrokenrail.reliccraft.item.TimeDilaterItem; +import net.minecraft.server.world.ServerChunkManager; +import net.minecraft.world.GameRules; +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.Redirect; + +@SuppressWarnings("unused") +@Mixin(ServerChunkManager.class) +public abstract class MixinServerChunkManager { + @Shadow + public abstract World getWorld(); + + @Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/GameRules;getInt(Lnet/minecraft/world/GameRules$RuleKey;)I"), method = "tickChunks") + public int adjustRandomTickSpeed(GameRules gameRules, GameRules.RuleKey rule) { + if (rule.equals(GameRules.RANDOM_TICK_SPEED)) { + return (int) (gameRules.getInt(rule) * TimeDilaterItem.getTimeDilationFactor(((TimeDilaterItem.DilatedWorld) getWorld()).getTimeSpeed())); + } else { + return gameRules.getInt(rule); + } + } +} diff --git a/src/main/java/com/thebrokenrail/reliccraft/mixin/MixinWorld.java b/src/main/java/com/thebrokenrail/reliccraft/mixin/MixinWorld.java index bf43952..94af625 100644 --- a/src/main/java/com/thebrokenrail/reliccraft/mixin/MixinWorld.java +++ b/src/main/java/com/thebrokenrail/reliccraft/mixin/MixinWorld.java @@ -24,18 +24,7 @@ public abstract class MixinWorld implements TimeDilaterItem.DilatedWorld { @ModifyConstant(constant = @Constant(longValue = 1L), method = "tickTime") public long tickTime(long value) { - switch (getTimeSpeed()) { - case FAST: { - return value * 4L; - } - case VERY_FAST: { - return value * 8L; - } - default: - case NORMAL: { - return value; - } - } + return value * TimeDilaterItem.getTimeDilationFactor(getTimeSpeed()); } @Override diff --git a/src/main/resources/reliccraft.mixins.json b/src/main/resources/reliccraft.mixins.json index e7008b1..f915779 100644 --- a/src/main/resources/reliccraft.mixins.json +++ b/src/main/resources/reliccraft.mixins.json @@ -18,6 +18,7 @@ "MixinLivingEntity", "MixinLocateCommand", "MixinNetherStarItem", + "MixinServerChunkManager", "MixinServerWorld", "MixinThrownEnderpearlEntity", "MixinWorld"