fixed server only issues, properly separated client / server logic in common class.
This commit is contained in:
1 parent
c6f52b3293
commit
b744956777
12 files changed
+58
-65
No files matched your search
@@ -1,8 +0,0 @@
|
|||||||
package carpet.fakes;
|
|
||||||
|
|
||||||
import carpet.helpers.TickRateManager;
|
|
||||||
|
|
||||||
public interface ClientLevelInterface
|
|
||||||
{
|
|
||||||
TickRateManager getTickRateManager();
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package carpet.fakes;
|
package carpet.fakes;
|
||||||
|
|
||||||
|
import carpet.helpers.TickRateManager;
|
||||||
import net.minecraft.world.level.redstone.NeighborUpdater;
|
import net.minecraft.world.level.redstone.NeighborUpdater;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@@ -22,4 +23,6 @@ public interface LevelInterface
|
|||||||
List<Entity> getOtherEntitiesLimited(@Nullable Entity except, AABB box, Predicate<? super Entity> predicate, int limit);
|
List<Entity> getOtherEntitiesLimited(@Nullable Entity except, AABB box, Predicate<? super Entity> predicate, int limit);
|
||||||
|
|
||||||
NeighborUpdater getNeighborUpdater();
|
NeighborUpdater getNeighborUpdater();
|
||||||
|
|
||||||
|
TickRateManager tickRateManager();
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,8 @@ import net.minecraft.commands.Commands;
|
|||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -33,6 +35,13 @@ public class ServerTickRateManager extends TickRateManager
|
|||||||
return tickWarpStartTime != 0;
|
return tickWarpStartTime != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldEntityTick(Entity e)
|
||||||
|
{
|
||||||
|
return (runsNormally() || (e instanceof Player));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether or not the game is deeply frozen.
|
* Whether or not the game is deeply frozen.
|
||||||
* This can be used for things that you may not normally want
|
* This can be used for things that you may not normally want
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
package carpet.helpers;
|
package carpet.helpers;
|
||||||
|
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
|
||||||
public class TickRateManager
|
public class TickRateManager
|
||||||
{
|
{
|
||||||
public static final int PLAYER_GRACE = 2;
|
public static final int PLAYER_GRACE = 2;
|
||||||
@@ -93,4 +96,10 @@ public class TickRateManager
|
|||||||
runGameElements = true;
|
runGameElements = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean shouldEntityTick(Entity e)
|
||||||
|
{
|
||||||
|
// client
|
||||||
|
return (runsNormally() || (e instanceof Player) || isSuperHot() && e.getControllingPassenger() instanceof Player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,9 @@
|
|||||||
package carpet.mixins;
|
package carpet.mixins;
|
||||||
|
|
||||||
import carpet.fakes.ClientLevelInterface;
|
import carpet.fakes.LevelInterface;
|
||||||
import carpet.fakes.MinecraftServerInterface;
|
|
||||||
import carpet.helpers.TickRateManager;
|
import carpet.helpers.TickRateManager;
|
||||||
import carpet.helpers.ServerTickRateManager;
|
|
||||||
import carpet.utils.CarpetProfiler;
|
import carpet.utils.CarpetProfiler;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityTicker;
|
import net.minecraft.world.level.block.entity.BlockEntityTicker;
|
||||||
@@ -38,16 +35,10 @@ public class BoundTickingBlockEntity_tickMixin<T extends BlockEntity>
|
|||||||
))
|
))
|
||||||
private void checkProcessBEs(BlockEntityTicker<T> blockEntityTicker, Level world, BlockPos pos, BlockState state, T blockEntity)
|
private void checkProcessBEs(BlockEntityTicker<T> blockEntityTicker, Level world, BlockPos pos, BlockState state, T blockEntity)
|
||||||
{
|
{
|
||||||
// these two branches are identical, but we need to check the world type and inferfaces
|
TickRateManager tickRateManager = ((LevelInterface)world).tickRateManager();
|
||||||
if (world.isClientSide()) {
|
if (tickRateManager.runsNormally())
|
||||||
// client
|
{
|
||||||
TickRateManager tickRateManager = ((ClientLevelInterface)world).getTickRateManager();
|
blockEntityTicker.tick(world, pos, state, blockEntity);
|
||||||
if (tickRateManager.runsNormally()) blockEntityTicker.tick(world, pos, state, blockEntity);
|
|
||||||
} else {
|
|
||||||
// server
|
|
||||||
ServerLevel serverWorld = (ServerLevel) world;
|
|
||||||
ServerTickRateManager serverTickRateManager = ((MinecraftServerInterface)serverWorld.getServer()).getTickRateManager();
|
|
||||||
if (serverTickRateManager.runsNormally()) blockEntityTicker.tick(world, pos, state, blockEntity);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package carpet.mixins;
|
package carpet.mixins;
|
||||||
|
|
||||||
import carpet.fakes.ClientLevelInterface;
|
import carpet.fakes.LevelInterface;
|
||||||
import carpet.helpers.TickRateManager;
|
import carpet.helpers.TickRateManager;
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
@@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
|||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
@Mixin(ClientLevel.class)
|
@Mixin(ClientLevel.class)
|
||||||
public class ClientLevel_tickSpeedMixin implements ClientLevelInterface
|
public abstract class ClientLevel_tickSpeedMixin implements LevelInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
private TickRateManager tickRateManager;
|
private TickRateManager tickRateManager;
|
||||||
@@ -21,7 +21,7 @@ public class ClientLevel_tickSpeedMixin implements ClientLevelInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TickRateManager getTickRateManager()
|
public TickRateManager tickRateManager()
|
||||||
{
|
{
|
||||||
return tickRateManager;
|
return tickRateManager;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package carpet.mixins;
|
package carpet.mixins;
|
||||||
|
|
||||||
import carpet.fakes.ClientLevelInterface;
|
import carpet.fakes.LevelInterface;
|
||||||
import carpet.fakes.MinecraftClientInferface;
|
import carpet.fakes.MinecraftClientInferface;
|
||||||
import carpet.helpers.TickRateManager;
|
import carpet.helpers.TickRateManager;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
@@ -28,7 +28,7 @@ public class LevelRenderer_pausedShakeMixin
|
|||||||
private float changeTickPhase(float previous)
|
private float changeTickPhase(float previous)
|
||||||
{
|
{
|
||||||
initial = previous;
|
initial = previous;
|
||||||
TickRateManager trm = ((ClientLevelInterface)level).getTickRateManager();
|
TickRateManager trm = ((LevelInterface)level).tickRateManager();
|
||||||
if (!trm.runsNormally())
|
if (!trm.runsNormally())
|
||||||
return ((MinecraftClientInferface)minecraft).getPausedTickDelta();
|
return ((MinecraftClientInferface)minecraft).getPausedTickDelta();
|
||||||
return previous;
|
return previous;
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ public abstract class Level_movableBEMixin implements LevelInterface, LevelAcces
|
|||||||
/**
|
/**
|
||||||
* @author 2No2Name
|
* @author 2No2Name
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public boolean setBlockStateWithBlockEntity(BlockPos blockPos_1, BlockState blockState_1, BlockEntity newBlockEntity, int int_1)
|
public boolean setBlockStateWithBlockEntity(BlockPos blockPos_1, BlockState blockState_1, BlockEntity newBlockEntity, int int_1)
|
||||||
{
|
{
|
||||||
if (isOutsideBuildHeight(blockPos_1) || !this.isClientSide && isDebug()) return false;
|
if (isOutsideBuildHeight(blockPos_1) || !this.isClientSide && isDebug()) return false;
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
package carpet.mixins;
|
package carpet.mixins;
|
||||||
|
|
||||||
import carpet.fakes.ClientLevelInterface;
|
|
||||||
import carpet.fakes.LevelInterface;
|
import carpet.fakes.LevelInterface;
|
||||||
import carpet.fakes.MinecraftServerInterface;
|
|
||||||
import carpet.helpers.TickRateManager;
|
import carpet.helpers.TickRateManager;
|
||||||
import carpet.helpers.ServerTickRateManager;
|
|
||||||
import carpet.utils.CarpetProfiler;
|
import carpet.utils.CarpetProfiler;
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
|
||||||
import net.minecraft.server.level.ServerLevel;
|
|
||||||
import net.minecraft.world.level.redstone.NeighborUpdater;
|
import net.minecraft.world.level.redstone.NeighborUpdater;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
@@ -22,7 +17,6 @@ import java.util.Map;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
import net.minecraft.world.entity.player.Player;
|
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
|
||||||
@Mixin(Level.class)
|
@Mixin(Level.class)
|
||||||
@@ -41,6 +35,7 @@ public abstract class Level_tickMixin implements LevelInterface
|
|||||||
return this.neighborUpdater;
|
return this.neighborUpdater;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Map<EntityType<?>, Entity> getPrecookedMobs()
|
public Map<EntityType<?>, Entity> getPrecookedMobs()
|
||||||
{
|
{
|
||||||
return precookedMobs;
|
return precookedMobs;
|
||||||
@@ -59,26 +54,12 @@ public abstract class Level_tickMixin implements LevelInterface
|
|||||||
@Inject(method = "guardEntityTick", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "guardEntityTick", at = @At("HEAD"), cancellable = true)
|
||||||
private void startEntity(Consumer<Entity> consumer_1, Entity e, CallbackInfo ci)
|
private void startEntity(Consumer<Entity> consumer_1, Entity e, CallbackInfo ci)
|
||||||
{
|
{
|
||||||
// this shows that probably tick speed controller needs to be accessible through level referring to servers on server and client on clientLevel
|
TickRateManager trm = tickRateManager();
|
||||||
// these two branches could also be merged into one generic for cloent and server
|
if (!trm.shouldEntityTick(e))
|
||||||
if (!isClientSide)
|
|
||||||
{
|
|
||||||
ServerLevel serverLevel = (ServerLevel) (Object) this;
|
|
||||||
ServerTickRateManager trm = ((MinecraftServerInterface)serverLevel.getServer()).getTickRateManager();
|
|
||||||
if (!(trm.runsNormally() || (e instanceof Player)))
|
|
||||||
{
|
{
|
||||||
ci.cancel();
|
ci.cancel();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ClientLevel clientLevel = (ClientLevel) (Object) this;
|
|
||||||
TickRateManager trm = ((ClientLevelInterface)clientLevel).getTickRateManager();
|
|
||||||
if (!(trm.runsNormally() || (e instanceof Player) || trm.isSuperHot() && e.getControllingPassenger() instanceof Player))
|
|
||||||
{
|
|
||||||
ci.cancel();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
entitySection = CarpetProfiler.start_entity_section((Level) (Object) this, e, CarpetProfiler.TYPE.ENTITY);
|
entitySection = CarpetProfiler.start_entity_section((Level) (Object) this, e, CarpetProfiler.TYPE.ENTITY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package carpet.mixins;
|
package carpet.mixins;
|
||||||
|
|
||||||
import carpet.CarpetServer;
|
import carpet.fakes.LevelInterface;
|
||||||
import carpet.fakes.ClientLevelInterface;
|
|
||||||
import carpet.helpers.TickRateManager;
|
import carpet.helpers.TickRateManager;
|
||||||
import carpet.fakes.MinecraftInterface;
|
import carpet.fakes.MinecraftInterface;
|
||||||
import carpet.network.CarpetClient;
|
import carpet.network.CarpetClient;
|
||||||
@@ -41,7 +40,7 @@ public class MinecraftMixin implements MinecraftInterface
|
|||||||
public Optional<TickRateManager> getTickRateManager()
|
public Optional<TickRateManager> getTickRateManager()
|
||||||
{
|
{
|
||||||
if (this.level != null) {
|
if (this.level != null) {
|
||||||
return Optional.of(((ClientLevelInterface)this.level).getTickRateManager());
|
return Optional.of(((LevelInterface)this.level).tickRateManager());
|
||||||
}
|
}
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package carpet.mixins;
|
package carpet.mixins;
|
||||||
|
|
||||||
|
import carpet.fakes.LevelInterface;
|
||||||
import carpet.fakes.MinecraftServerInterface;
|
import carpet.fakes.MinecraftServerInterface;
|
||||||
|
import carpet.helpers.TickRateManager;
|
||||||
import carpet.utils.CarpetProfiler;
|
import carpet.utils.CarpetProfiler;
|
||||||
import net.minecraft.core.Holder;
|
import net.minecraft.core.Holder;
|
||||||
import net.minecraft.core.RegistryAccess;
|
import net.minecraft.core.RegistryAccess;
|
||||||
@@ -23,13 +25,19 @@ import net.minecraft.world.level.dimension.DimensionType;
|
|||||||
import net.minecraft.world.level.storage.WritableLevelData;
|
import net.minecraft.world.level.storage.WritableLevelData;
|
||||||
|
|
||||||
@Mixin(ServerLevel.class)
|
@Mixin(ServerLevel.class)
|
||||||
public abstract class ServerLevel_tickMixin extends Level
|
public abstract class ServerLevel_tickMixin extends Level implements LevelInterface
|
||||||
{
|
{
|
||||||
protected ServerLevel_tickMixin(final WritableLevelData writableLevelData, final ResourceKey<Level> resourceKey, final RegistryAccess registryAccess, final Holder<DimensionType> holder, final Supplier<ProfilerFiller> supplier, final boolean bl, final boolean bl2, final long l, final int i)
|
protected ServerLevel_tickMixin(final WritableLevelData writableLevelData, final ResourceKey<Level> resourceKey, final RegistryAccess registryAccess, final Holder<DimensionType> holder, final Supplier<ProfilerFiller> supplier, final boolean bl, final boolean bl2, final long l, final int i)
|
||||||
{
|
{
|
||||||
super(writableLevelData, resourceKey, registryAccess, holder, supplier, bl, bl2, l, i);
|
super(writableLevelData, resourceKey, registryAccess, holder, supplier, bl, bl2, l, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TickRateManager tickRateManager()
|
||||||
|
{
|
||||||
|
return ((MinecraftServerInterface)getServer()).getTickRateManager();
|
||||||
|
}
|
||||||
|
|
||||||
@Shadow protected abstract void runBlockEvents();
|
@Shadow protected abstract void runBlockEvents();
|
||||||
|
|
||||||
@Shadow protected abstract void tickTime();
|
@Shadow protected abstract void tickTime();
|
||||||
@@ -159,13 +167,13 @@ public abstract class ServerLevel_tickMixin extends Level
|
|||||||
))
|
))
|
||||||
private void tickWorldBorder(WorldBorder worldBorder)
|
private void tickWorldBorder(WorldBorder worldBorder)
|
||||||
{
|
{
|
||||||
if (((MinecraftServerInterface)getServer()).getTickRateManager().runsNormally()) worldBorder.tick();
|
if (tickRateManager().runsNormally()) worldBorder.tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "advanceWeatherCycle", cancellable = true, at = @At("HEAD"))
|
@Inject(method = "advanceWeatherCycle", cancellable = true, at = @At("HEAD"))
|
||||||
private void tickWeather(CallbackInfo ci)
|
private void tickWeather(CallbackInfo ci)
|
||||||
{
|
{
|
||||||
if (!((MinecraftServerInterface)getServer()).getTickRateManager().runsNormally()) ci.cancel();
|
if (!tickRateManager().runsNormally()) ci.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Redirect(method = "tick", at = @At(
|
@Redirect(method = "tick", at = @At(
|
||||||
@@ -174,7 +182,7 @@ public abstract class ServerLevel_tickMixin extends Level
|
|||||||
))
|
))
|
||||||
private void tickTimeConditionally(ServerLevel serverWorld)
|
private void tickTimeConditionally(ServerLevel serverWorld)
|
||||||
{
|
{
|
||||||
if (((MinecraftServerInterface)getServer()).getTickRateManager().runsNormally()) tickTime();
|
if (tickRateManager().runsNormally()) tickTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Redirect(method = "tick", at = @At(
|
@Redirect(method = "tick", at = @At(
|
||||||
@@ -183,7 +191,7 @@ public abstract class ServerLevel_tickMixin extends Level
|
|||||||
))
|
))
|
||||||
private boolean tickPendingBlocks(ServerLevel serverWorld)
|
private boolean tickPendingBlocks(ServerLevel serverWorld)
|
||||||
{
|
{
|
||||||
if (!((MinecraftServerInterface)getServer()).getTickRateManager().runsNormally()) return true;
|
if (!tickRateManager().runsNormally()) return true;
|
||||||
return serverWorld.isDebug(); // isDebug()
|
return serverWorld.isDebug(); // isDebug()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,7 +201,7 @@ public abstract class ServerLevel_tickMixin extends Level
|
|||||||
))
|
))
|
||||||
private void tickConditionally(Raids raidManager)
|
private void tickConditionally(Raids raidManager)
|
||||||
{
|
{
|
||||||
if (((MinecraftServerInterface)getServer()).getTickRateManager().runsNormally()) raidManager.tick();
|
if (tickRateManager().runsNormally()) raidManager.tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Redirect(method = "tick", at = @At(
|
@Redirect(method = "tick", at = @At(
|
||||||
@@ -202,6 +210,6 @@ public abstract class ServerLevel_tickMixin extends Level
|
|||||||
))
|
))
|
||||||
private void tickConditionally(ServerLevel serverWorld)
|
private void tickConditionally(ServerLevel serverWorld)
|
||||||
{
|
{
|
||||||
if (((MinecraftServerInterface)getServer()).getTickRateManager().runsNormally()) runBlockEvents();
|
if (tickRateManager().runsNormally()) runBlockEvents();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ import carpet.CarpetExtension;
|
|||||||
import carpet.CarpetSettings;
|
import carpet.CarpetSettings;
|
||||||
import carpet.api.settings.CarpetRule;
|
import carpet.api.settings.CarpetRule;
|
||||||
import carpet.api.settings.InvalidRuleValueException;
|
import carpet.api.settings.InvalidRuleValueException;
|
||||||
import carpet.fakes.ClientLevelInterface;
|
import carpet.fakes.LevelInterface;
|
||||||
import carpet.helpers.TickRateManager;
|
import carpet.helpers.TickRateManager;
|
||||||
import carpet.api.settings.SettingsManager;
|
import carpet.api.settings.SettingsManager;
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
@@ -67,20 +67,20 @@ public class ClientNetworkHandler
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
dataHandlers.put("TickRate", (p, t) -> {
|
dataHandlers.put("TickRate", (p, t) -> {
|
||||||
TickRateManager tickRateManager = ((ClientLevelInterface)p.clientLevel).getTickRateManager();
|
TickRateManager tickRateManager = ((LevelInterface)p.clientLevel).tickRateManager();
|
||||||
tickRateManager.setTickRate(((NumericTag) t).getAsFloat());
|
tickRateManager.setTickRate(((NumericTag) t).getAsFloat());
|
||||||
});
|
});
|
||||||
dataHandlers.put("TickingState", (p, t) -> {
|
dataHandlers.put("TickingState", (p, t) -> {
|
||||||
CompoundTag tickingState = (CompoundTag)t;
|
CompoundTag tickingState = (CompoundTag)t;
|
||||||
TickRateManager tickRateManager = ((ClientLevelInterface)p.clientLevel).getTickRateManager();
|
TickRateManager tickRateManager = ((LevelInterface)p.clientLevel).tickRateManager();
|
||||||
tickRateManager.setFrozenState(tickingState.getBoolean("is_paused"), tickingState.getBoolean("deepFreeze"));
|
tickRateManager.setFrozenState(tickingState.getBoolean("is_paused"), tickingState.getBoolean("deepFreeze"));
|
||||||
});
|
});
|
||||||
dataHandlers.put("SuperHotState", (p, t) -> {
|
dataHandlers.put("SuperHotState", (p, t) -> {
|
||||||
TickRateManager tickRateManager = ((ClientLevelInterface)p.clientLevel).getTickRateManager();
|
TickRateManager tickRateManager = ((LevelInterface)p.clientLevel).tickRateManager();
|
||||||
tickRateManager.setSuperHot(((ByteTag) t).equals(ByteTag.ONE));
|
tickRateManager.setSuperHot(((ByteTag) t).equals(ByteTag.ONE));
|
||||||
});
|
});
|
||||||
dataHandlers.put("TickPlayerActiveTimeout", (p, t) -> {
|
dataHandlers.put("TickPlayerActiveTimeout", (p, t) -> {
|
||||||
TickRateManager tickRateManager = ((ClientLevelInterface)p.clientLevel).getTickRateManager();
|
TickRateManager tickRateManager = ((LevelInterface)p.clientLevel).tickRateManager();
|
||||||
tickRateManager.setPlayerActiveTimeout(((NumericTag) t).getAsInt());
|
tickRateManager.setPlayerActiveTimeout(((NumericTag) t).getAsInt());
|
||||||
});
|
});
|
||||||
dataHandlers.put("scShape", (p, t) -> { // deprecated // and unused // should remove for 1.17
|
dataHandlers.put("scShape", (p, t) -> { // deprecated // and unused // should remove for 1.17
|
||||||
|
|||||||
Reference in new issue
Block a user