[devutil] add two features from mod-fungible

This commit is contained in:
Johannes Frohnmeyer 2023-03-11 17:27:51 +01:00
parent 1d71c3870d
commit a688ae3cb7
Signed by: Johannes
GPG Key ID: E76429612C2929F4
8 changed files with 77 additions and 94 deletions

View File

@ -2,7 +2,6 @@ package io.gitlab.jfronny.libjf.devutil.mixin;
import com.mojang.authlib.minecraft.UserApiService;
import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService;
import io.gitlab.jfronny.libjf.devutil.NoOpUserApi;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.RunArgs;
import org.spongepowered.asm.mixin.Mixin;
@ -16,6 +15,6 @@ public class MinecraftClientMixin {
*/
@Overwrite
private UserApiService createUserApiService(YggdrasilAuthenticationService yggdrasilAuthenticationService, RunArgs runArgs) {
return new NoOpUserApi();
return UserApiService.OFFLINE;
}
}

View File

@ -0,0 +1,27 @@
package io.gitlab.jfronny.libjf.devutil.mixin;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.SplashOverlay;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.resource.ResourceReload;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(SplashOverlay.class)
public class SplashOverlayMixin {
@Shadow @Final private ResourceReload reload;
/**
* Taken from mod-fungible
* @author magistermaks
*/
@Inject(method="render", at=@At("HEAD"), cancellable=true)
public void render(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo info) {
if (reload.isComplete()) {
MinecraftClient.getInstance().setOverlay(null);
info.cancel();
}
}
}

View File

@ -0,0 +1,21 @@
package io.gitlab.jfronny.libjf.devutil.mixin;
import net.minecraft.client.gui.screen.TitleScreen;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(TitleScreen.class)
public class TitleScreenMixin {
@Mutable @Shadow @Final private boolean doBackgroundFade;
/**
* Taken from mod-fungible
* @author magistermaks
*/
@Inject(method="<init>(Z)V", at=@At("TAIL"))
private void init(boolean doBackgroundFade, CallbackInfo ci) {
this.doBackgroundFade = false;
}
}

View File

@ -5,7 +5,9 @@
"compatibilityLevel": "JAVA_16",
"client": [
"MinecraftClientMixin",
"ProfileKeysMixin"
"ProfileKeysMixin",
"SplashOverlayMixin",
"TitleScreenMixin"
],
"injectors": {
"defaultRequire": 1

View File

@ -1,11 +1,15 @@
package io.gitlab.jfronny.libjf.devutil;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.SharedConstants;
public class DevUtilMain implements ModInitializer {
@Override
public void onInitialize() {
if (!FabricLoader.getInstance().isDevelopmentEnvironment()) {
throw new RuntimeException("Devutil MUST NOT BE LOADED IN A NON-DEV ENVIRONMENT! If you are a user seeing this message, please contact JFronny!");
}
SharedConstants.isDevelopment = true;
}
}

View File

@ -1,90 +0,0 @@
package io.gitlab.jfronny.libjf.devutil;
import com.mojang.authlib.minecraft.TelemetryEvent;
import com.mojang.authlib.minecraft.TelemetryPropertyContainer;
import com.mojang.authlib.minecraft.TelemetrySession;
import com.mojang.authlib.minecraft.UserApiService;
import com.mojang.authlib.minecraft.report.AbuseReportLimits;
import com.mojang.authlib.yggdrasil.request.AbuseReportRequest;
import com.mojang.authlib.yggdrasil.response.*;
import org.jetbrains.annotations.*;
import java.util.*;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
public class NoOpUserApi implements UserApiService {
@Override
public UserProperties properties() {
return new UserProperties(Set.of(UserFlag.CHAT_ALLOWED, UserFlag.SERVERS_ALLOWED), Map.of());
}
@Override
public boolean isBlockedPlayer(UUID playerID) {
return false;
}
@Override
public void refreshBlockList() {
}
@Override
public TelemetrySession newTelemetrySession(Executor executor) {
return new TelemetrySession() {
@Override
public boolean isEnabled() {
return false;
}
@Override
public TelemetryEvent createNewEvent(String type) {
return new TelemetryEvent() {
@Override
public void send() {
// ignored
}
@Override
public void addProperty(String id, String value) {
// ignored
}
@Override
public void addProperty(String id, int value) {
// ignored
}
@Override
public void addProperty(String id, boolean value) {
// ignored
}
@Override
public void addNullProperty(String id) {
// ignored
}
};
}
};
}
@Nullable
@Override
public KeyPairResponse getKeyPair() {
return null;
}
@Override
public void reportAbuse(AbuseReportRequest request) {
}
@Override
public boolean canSendReports() {
return false;
}
@Override
public AbuseReportLimits getAbuseReportLimits() {
return new AbuseReportLimits(0, 0, 0, 0, 0);
}
}

View File

@ -0,0 +1,19 @@
package io.gitlab.jfronny.libjf.devutil.mixin;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.WorldGenerationProgressListener;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
@Mixin(MinecraftServer.class)
public class MinecraftServerMixin {
/**
* Taken from mod-fungible
* @author magistermaks
* @reason Skip generating spawn chunks
*/
@Overwrite
private void prepareStartRegion(WorldGenerationProgressListener worldGenerationProgressListener) {
// do nothing
}
}

View File

@ -5,7 +5,8 @@
"compatibilityLevel": "JAVA_16",
"mixins": [
"ArgumentTypesMixin",
"CommandManagerMixin"
"CommandManagerMixin",
"MinecraftServerMixin"
],
"injectors": {
"defaultRequire": 1