TimeChanger 1.0.0

This commit is contained in:
Motschen
2021-01-15 16:10:08 +01:00
parent 76bd419ce7
commit d186ca0dea
17 changed files with 608 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
package eu.midnightdust.timechanger;
import eu.midnightdust.timechanger.config.TimeChangerConfig;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import me.sargunvohra.mcmods.autoconfig1u.serializer.JanksonConfigSerializer;
import net.fabricmc.api.ClientModInitializer;
public class TimeChangerClient implements ClientModInitializer {
public static TimeChangerConfig TC_CONFIG;
@Override
public void onInitializeClient() {
AutoConfig.register(TimeChangerConfig.class, JanksonConfigSerializer::new);
TC_CONFIG = AutoConfig.getConfigHolder(TimeChangerConfig.class).getConfig();
}
}

View File

@@ -0,0 +1,16 @@
package eu.midnightdust.timechanger.config;
import io.github.prospector.modmenu.api.ConfigScreenFactory;
import io.github.prospector.modmenu.api.ModMenuApi;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@Environment(EnvType.CLIENT)
public class ModMenuIntegration implements ModMenuApi {
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
return parent -> AutoConfig.getConfigScreen(TimeChangerConfig.class, parent).get();
}
}

View File

@@ -0,0 +1,18 @@
package eu.midnightdust.timechanger.config;
import me.sargunvohra.mcmods.autoconfig1u.ConfigData;
import me.sargunvohra.mcmods.autoconfig1u.annotation.Config;
import me.sargunvohra.mcmods.autoconfig1u.shadowed.blue.endless.jankson.Comment;
import java.util.ArrayList;
import java.util.List;
@Config(name = "timechanger")
public class TimeChangerConfig implements ConfigData {
@Comment(value = "Set the Custom Time (-1 to disable)")
public int custom_time = -1;
@Comment(value = "Whitelist/Blacklist servers")
public List<String> whitelist = new ArrayList<>();
public boolean blacklist = false;
}

View File

@@ -0,0 +1,40 @@
package eu.midnightdust.timechanger.mixin;
import eu.midnightdust.timechanger.TimeChangerClient;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.world.ClientWorld;
import org.spongepowered.asm.mixin.Final;
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.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(ClientWorld.class)
public abstract class MixinClientWorld {
@Shadow @Final private ClientWorld.Properties clientWorldProperties;
@Shadow @Final private MinecraftClient client;
@Inject(at = @At("TAIL"), method = "setTimeOfDay", cancellable = true)
@Environment(EnvType.CLIENT)
public void setTimeOfDay(long time, CallbackInfo ci) {
if (client.getCurrentServerEntry() != null) {
if (TimeChangerClient.TC_CONFIG.custom_time >= 0 && TimeChangerClient.TC_CONFIG.whitelist.isEmpty()) {
this.clientWorldProperties.setTimeOfDay(TimeChangerClient.TC_CONFIG.custom_time);
} else if (TimeChangerClient.TC_CONFIG.custom_time >= 0 && client.getCurrentServerEntry().address != null) {
if (!TimeChangerClient.TC_CONFIG.blacklist && TimeChangerClient.TC_CONFIG.whitelist.contains(client.getCurrentServerEntry().address)) {
this.clientWorldProperties.setTimeOfDay(TimeChangerClient.TC_CONFIG.custom_time);
} else if (TimeChangerClient.TC_CONFIG.blacklist && !TimeChangerClient.TC_CONFIG.whitelist.contains(client.getCurrentServerEntry().address)) {
this.clientWorldProperties.setTimeOfDay(TimeChangerClient.TC_CONFIG.custom_time);
}
else {ci.cancel();}
}
else {ci.cancel();}
}
else {ci.cancel();}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -0,0 +1,6 @@
{
"text.autoconfig.timechanger.title":"Time Changer Config",
"text.autoconfig.timechanger.option.custom_time":"Custom Time",
"text.autoconfig.timechanger.option.whitelist":"Server Whitelist",
"text.autoconfig.timechanger.option.blacklist":"Use Whitelist as Blacklist?"
}

View File

@@ -0,0 +1,38 @@
{
"schemaVersion": 1,
"id": "timechanger",
"version": "${version}",
"name": "Time Changer",
"description": "Allows you to change the time completely clientside!",
"authors": [
"Motschen",
"TeamMidnightDust"
],
"contact": {
"homepage": "https://www.midnightdust.eu/",
"sources": "https://github.com/TeamMidnightDust/TimeChanger",
"issues": "https://github.com/TeamMidnightDust/TimeChanger/issues"
},
"license": "MIT",
"icon": "assets/timechanger/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"eu.midnightdust.timechanger.TimeChangerClient"
],
"modmenu": [
"eu.midnightdust.timechanger.config.ModMenuIntegration"
]
},
"mixins": [
"timechanger.mixins.json"
],
"depends": {
"autoconfig1u": "*"
}
}

View File

@@ -0,0 +1,11 @@
{
"required": true,
"package": "eu.midnightdust.timechanger.mixin",
"compatibilityLevel": "JAVA_8",
"client": [
"MixinClientWorld"
],
"injectors": {
"defaultRequire": 1
}
}