mirror of
https://github.com/TeamMidnightDust/MidnightLib.git
synced 2025-12-15 17:05:09 +01:00
MidnightLib 1.3.0 - No more hats
- Re-enable Quilt and Forge support - Completely remove unnecessary bloat (Hat cosmetics) - File size is now just around 55KB for the Fabric & Quilt version, 60KB for Forge
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package eu.midnightdust.core;
|
package eu.midnightdust.core;
|
||||||
|
|
||||||
import eu.midnightdust.core.config.MidnightLibConfig;
|
import eu.midnightdust.core.config.MidnightLibConfig;
|
||||||
import eu.midnightdust.hats.web.HatLoader;
|
|
||||||
import eu.midnightdust.lib.config.MidnightConfig;
|
import eu.midnightdust.lib.config.MidnightConfig;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -10,11 +9,7 @@ import java.util.List;
|
|||||||
public class MidnightLibClient {
|
public class MidnightLibClient {
|
||||||
public static List<String> hiddenMods = new ArrayList<>();
|
public static List<String> hiddenMods = new ArrayList<>();
|
||||||
|
|
||||||
public static final String MOD_ID = "midnightlib";
|
|
||||||
|
|
||||||
public static void onInitializeClient() {
|
public static void onInitializeClient() {
|
||||||
MidnightConfig.init("midnightlib", MidnightLibConfig.class);
|
MidnightConfig.init("midnightlib", MidnightLibConfig.class);
|
||||||
|
|
||||||
if (MidnightLibConfig.special_hats) HatLoader.init();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,12 +4,8 @@ import eu.midnightdust.lib.config.MidnightConfig;
|
|||||||
import eu.midnightdust.lib.util.PlatformFunctions;
|
import eu.midnightdust.lib.util.PlatformFunctions;
|
||||||
|
|
||||||
public class MidnightLibConfig extends MidnightConfig {
|
public class MidnightLibConfig extends MidnightConfig {
|
||||||
@Comment(centered = true) public static Comment midnightlib_description;
|
|
||||||
@Entry // Enable or disable the MidnightConfig overview screen button
|
@Entry // Enable or disable the MidnightConfig overview screen button
|
||||||
public static ConfigButton config_screen_list = PlatformFunctions.isModLoaded("modmenu") ? ConfigButton.MODMENU : ConfigButton.TRUE;
|
public static ConfigButton config_screen_list = PlatformFunctions.isModLoaded("modmenu") ? ConfigButton.MODMENU : ConfigButton.TRUE;
|
||||||
@Comment(centered = true) public static Comment midnighthats_description;
|
|
||||||
@Entry // Enable or disable hats for contributors, friends and donors.
|
|
||||||
public static boolean special_hats = true;
|
|
||||||
|
|
||||||
public enum ConfigButton {
|
public enum ConfigButton {
|
||||||
TRUE,FALSE,MODMENU
|
TRUE,FALSE,MODMENU
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
package eu.midnightdust.core.mixin;
|
|
||||||
|
|
||||||
import eu.midnightdust.hats.witch.WitchHatFeatureRenderer;
|
|
||||||
import net.minecraft.client.network.AbstractClientPlayerEntity;
|
|
||||||
import net.minecraft.client.render.entity.EntityRendererFactory;
|
|
||||||
import net.minecraft.client.render.entity.LivingEntityRenderer;
|
|
||||||
import net.minecraft.client.render.entity.PlayerEntityRenderer;
|
|
||||||
import net.minecraft.client.render.entity.model.PlayerEntityModel;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
@Mixin(PlayerEntityRenderer.class)
|
|
||||||
public abstract class MixinPlayerEntityRenderer extends LivingEntityRenderer<AbstractClientPlayerEntity, PlayerEntityModel<AbstractClientPlayerEntity>> {
|
|
||||||
public MixinPlayerEntityRenderer(EntityRendererFactory.Context ctx, PlayerEntityModel<AbstractClientPlayerEntity> model, float shadowSize) {
|
|
||||||
super(ctx, model, shadowSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject(at = @At("TAIL"), method = "<init>")
|
|
||||||
public void addFeatures(EntityRendererFactory.Context ctx, boolean slim, CallbackInfo ci) {
|
|
||||||
this.addFeature(new WitchHatFeatureRenderer<>(this, ctx.getModelLoader()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -37,7 +37,7 @@ public class MidnightConfigOverviewScreen extends Screen {
|
|||||||
sortedMods.forEach((modid) -> {
|
sortedMods.forEach((modid) -> {
|
||||||
if (!MidnightLibClient.hiddenMods.contains(modid)) {
|
if (!MidnightLibClient.hiddenMods.contains(modid)) {
|
||||||
list.addButton(ButtonWidget.builder(Text.translatable(modid +".midnightconfig.title"), (button) ->
|
list.addButton(ButtonWidget.builder(Text.translatable(modid +".midnightconfig.title"), (button) ->
|
||||||
Objects.requireNonNull(client).setScreen(MidnightConfig.getScreen(this,modid))).dimensions(this.width / 2 - 100, this.height - 28, 200, 20).build());
|
Objects.requireNonNull(client).setScreen(MidnightConfig.getScreen(this,modid))).dimensions(this.width / 2 - 125, this.height - 28, 250, 20).build());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
super.init();
|
super.init();
|
||||||
@@ -59,7 +59,7 @@ public class MidnightConfigOverviewScreen extends Screen {
|
|||||||
textRenderer = minecraftClient.textRenderer;
|
textRenderer = minecraftClient.textRenderer;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public int getScrollbarPositionX() {return this.width -7;}
|
public int getScrollbarPositionX() {return this.width-7;}
|
||||||
|
|
||||||
public void addButton(ClickableWidget button) {
|
public void addButton(ClickableWidget button) {
|
||||||
this.addEntry(OverviewButtonEntry.create(button));
|
this.addEntry(OverviewButtonEntry.create(button));
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
package eu.midnightdust.hats.web;
|
|
||||||
|
|
||||||
import com.google.common.reflect.TypeToken;
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.google.gson.GsonBuilder;
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.Reader;
|
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
@SuppressWarnings("UnstableApiUsage")
|
|
||||||
public class HatLoader {
|
|
||||||
public static final System.Logger logger = System.getLogger("MidnightLib");
|
|
||||||
private final static String HATS_URL = "https://raw.githubusercontent.com/TeamMidnightDust/MidnightHats/master/hats.json";
|
|
||||||
public static final Type HAT_TYPE = new TypeToken<Map<UUID, PlayerHatData>>(){}.getType();
|
|
||||||
public static Map<UUID, PlayerHatData> PLAYER_HATS;
|
|
||||||
private static final Gson GSON = new GsonBuilder().create();
|
|
||||||
|
|
||||||
|
|
||||||
public static void init() {
|
|
||||||
CompletableFuture.supplyAsync(() -> {
|
|
||||||
try (Reader reader = new InputStreamReader(new URL(HATS_URL).openStream())) {
|
|
||||||
return GSON.<Map<UUID, PlayerHatData>>fromJson(reader, HAT_TYPE);
|
|
||||||
} catch (MalformedURLException error) {
|
|
||||||
logger.log(System.Logger.Level.ERROR, "Unable to load player hats because of connection problems: " + error.getMessage());
|
|
||||||
} catch (IOException error) {
|
|
||||||
logger.log(System.Logger.Level.ERROR, "Unable to load player hats because of an I/O Exception: " + error.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}).thenAcceptAsync(playerData -> {
|
|
||||||
if (playerData != null) {
|
|
||||||
PLAYER_HATS = playerData;
|
|
||||||
System.out.println("(MidnightLib) Player hats successfully loaded!");
|
|
||||||
} else {
|
|
||||||
PLAYER_HATS = Collections.emptyMap();
|
|
||||||
logger.log(System.Logger.Level.WARNING, "A problem with the database occurred, the hats could not be initialized.");
|
|
||||||
}
|
|
||||||
}, MinecraftClient.getInstance());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
package eu.midnightdust.hats.web;
|
|
||||||
|
|
||||||
public class PlayerHatData {
|
|
||||||
private final String hat;
|
|
||||||
|
|
||||||
public PlayerHatData(String hat) {
|
|
||||||
this.hat = hat;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHatType() {
|
|
||||||
return hat;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
package eu.midnightdust.hats.witch;
|
|
||||||
|
|
||||||
import eu.midnightdust.hats.web.HatLoader;
|
|
||||||
import eu.midnightdust.lib.util.MidnightColorUtil;
|
|
||||||
import net.fabricmc.api.EnvType;
|
|
||||||
import net.fabricmc.api.Environment;
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
|
||||||
import net.minecraft.client.model.TexturedModelData;
|
|
||||||
import net.minecraft.client.render.*;
|
|
||||||
import net.minecraft.client.render.entity.feature.FeatureRenderer;
|
|
||||||
import net.minecraft.client.render.entity.feature.FeatureRendererContext;
|
|
||||||
import net.minecraft.client.render.entity.model.EntityModel;
|
|
||||||
import net.minecraft.client.render.entity.model.EntityModelLayer;
|
|
||||||
import net.minecraft.client.render.entity.model.EntityModelLoader;
|
|
||||||
import net.minecraft.client.render.entity.model.ModelWithHead;
|
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
|
||||||
import net.minecraft.util.Identifier;
|
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import static eu.midnightdust.core.MidnightLibClient.MOD_ID;
|
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
|
||||||
public class WitchHatFeatureRenderer<T extends LivingEntity, M extends EntityModel<T>> extends FeatureRenderer<T, M> {
|
|
||||||
public static final EntityModelLayer WITCH_HAT_MODEL_LAYER = new EntityModelLayer(new Identifier("midnight-hats","witch_hat"), "main");
|
|
||||||
private static final UUID MOTSCHEN = UUID.fromString("a44c2660-630f-478f-946a-e518669fcf0c");
|
|
||||||
|
|
||||||
private static final Identifier WITCH = new Identifier("textures/entity/witch.png");
|
|
||||||
private static final Identifier OVERLAY = new Identifier(MOD_ID,"textures/hats/overlay.png");
|
|
||||||
private static final Color MOTSCHEN_COLOR = MidnightColorUtil.radialRainbow(1,1);
|
|
||||||
private static final Color ADOPTER_COLOR = MidnightColorUtil.hex2Rgb("ffffff");
|
|
||||||
private static final Color MODDER_COLOR = MidnightColorUtil.hex2Rgb("7825b4");
|
|
||||||
private static final Color FRIEND_COLOR = MidnightColorUtil.hex2Rgb("ff0234");
|
|
||||||
private static final Color DONOR_COLOR = MidnightColorUtil.hex2Rgb("ff6c00");
|
|
||||||
private static final Color SOCIAL_COLOR = MidnightColorUtil.hex2Rgb("238a9d");
|
|
||||||
private final WitchHatModel<T> witchHat;
|
|
||||||
private final MinecraftClient client = MinecraftClient.getInstance();
|
|
||||||
|
|
||||||
public WitchHatFeatureRenderer(FeatureRendererContext<T, M> featureRendererContext, EntityModelLoader entityModelLoader) {
|
|
||||||
super(featureRendererContext);
|
|
||||||
this.witchHat = new WitchHatModel<>(entityModelLoader.getModelPart(WITCH_HAT_MODEL_LAYER));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static TexturedModelData getTexturedModelData() {
|
|
||||||
return TexturedModelData.of(WitchHatModel.getModelData(), 64, 128);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void render(MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, T livingEntity, float f, float g, float h, float j, float k, float l) {
|
|
||||||
Color hat_type = getHat(livingEntity.getUuid());
|
|
||||||
|
|
||||||
if (hat_type != null && !livingEntity.isInvisibleTo(client.player)) {
|
|
||||||
if (hat_type == MOTSCHEN_COLOR) hat_type = MidnightColorUtil.radialRainbow(1,1);
|
|
||||||
matrixStack.push();
|
|
||||||
|
|
||||||
((ModelWithHead) this.getContextModel()).getHead().rotate(matrixStack);
|
|
||||||
VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(RenderLayer.getEntityCutoutNoCull(WITCH));
|
|
||||||
this.witchHat.render(matrixStack, vertexConsumer, i, OverlayTexture.DEFAULT_UV,1f,1f,1f,1);
|
|
||||||
VertexConsumer glow = vertexConsumerProvider.getBuffer(RenderLayer.getBeaconBeam(OVERLAY,true));
|
|
||||||
matrixStack.translate(0,0,-0.001f);
|
|
||||||
this.witchHat.render(matrixStack, glow, 230, OverlayTexture.DEFAULT_UV, hat_type.getRed() / 255f, hat_type.getGreen() / 255f, hat_type.getBlue() / 255f, 1.0F);
|
|
||||||
|
|
||||||
matrixStack.pop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private Color getHat(UUID uuid) {
|
|
||||||
if (uuid.equals(MOTSCHEN)) {
|
|
||||||
return MOTSCHEN_COLOR;
|
|
||||||
} else if (HatLoader.PLAYER_HATS != null && HatLoader.PLAYER_HATS.containsKey(uuid)) {
|
|
||||||
return switch (HatLoader.PLAYER_HATS.get(uuid).getHatType()) {
|
|
||||||
case "adopter" -> ADOPTER_COLOR;
|
|
||||||
case "contributer", "modder" -> MODDER_COLOR;
|
|
||||||
case "friend" -> FRIEND_COLOR;
|
|
||||||
case "donator", "donor" -> DONOR_COLOR;
|
|
||||||
case "social" -> SOCIAL_COLOR;
|
|
||||||
default -> MidnightColorUtil.hex2Rgb(HatLoader.PLAYER_HATS.get(uuid).getHatType());
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
package eu.midnightdust.hats.witch;
|
|
||||||
|
|
||||||
import net.minecraft.client.model.*;
|
|
||||||
import net.minecraft.client.render.VertexConsumer;
|
|
||||||
import net.minecraft.client.render.entity.model.SinglePartEntityModel;
|
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
|
||||||
|
|
||||||
public class WitchHatModel<T extends LivingEntity> extends SinglePartEntityModel<T> {
|
|
||||||
private final ModelPart headwear;
|
|
||||||
|
|
||||||
public WitchHatModel(ModelPart root) {
|
|
||||||
headwear = root;
|
|
||||||
root.setPivot(5.0F, -9.0F, -5.0F);
|
|
||||||
|
|
||||||
ModelPart bone = headwear.getChild("bone");
|
|
||||||
bone.setPivot(-8.5F, -0.1F, 1.5F);
|
|
||||||
setRotationAngle(bone, -0.0524F, 0.0F, 0.0349F);
|
|
||||||
|
|
||||||
ModelPart bone2 = bone.getChild("bone2");
|
|
||||||
bone2.setPivot(1.5F, -4.0F, 1.5F);
|
|
||||||
setRotationAngle(bone2, -0.1222F, 0.0F, 0.0698F);
|
|
||||||
|
|
||||||
ModelPart bone3 = bone2.getChild("bone3");
|
|
||||||
bone3.setPivot(1.5F, -4.0F, 1.5F);
|
|
||||||
setRotationAngle(bone3, -0.2618F, 0.0F, 0.1047F);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ModelData getModelData(){
|
|
||||||
ModelData modelData = new ModelData();
|
|
||||||
ModelPartData modelPartData = modelData.getRoot();
|
|
||||||
modelPartData.addChild("headwear", ModelPartBuilder.create().uv(0, 64).cuboid(-10.0F, -0.1F, 0.0F, 10.0F, 2.0F, 10.0F), ModelTransform.NONE);
|
|
||||||
ModelPartData modelPartData2 = modelPartData.addChild("bone", ModelPartBuilder.create().uv(0, 76).cuboid(0.0F, -4.0F, 0.0F, 7.0F, 4.0F, 7.0F), ModelTransform.rotation(-0.0524F, 0.0F, 0.0349F));
|
|
||||||
ModelPartData modelPartData3 = modelPartData2.addChild("bone2", ModelPartBuilder.create().uv(0, 87).cuboid(0.0F, -4.0F, 0.0F, 4.0F, 4.0F, 4.0F), ModelTransform.rotation(-0.1222F, 0.0F, 0.0698F));
|
|
||||||
modelPartData3.addChild("bone3", ModelPartBuilder.create().uv(0, 95).cuboid(0.0F, -2.0F, 0.0F, 1.0F, 2.0F, 1.0F), ModelTransform.rotation(-0.2618F, 0.0F, 0.1047F));
|
|
||||||
|
|
||||||
return modelData;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setAngles(T entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void render(MatrixStack matrixStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){
|
|
||||||
headwear.render(matrixStack, buffer, packedLight, packedOverlay, red, green, blue, alpha);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ModelPart getPart() {
|
|
||||||
return headwear;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRotationAngle(ModelPart bone, float x, float y, float z) {
|
|
||||||
bone.pitch = x;
|
|
||||||
bone.yaw = y;
|
|
||||||
bone.roll = z;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -83,8 +83,8 @@ public abstract class MidnightConfig {
|
|||||||
|
|
||||||
for (Field field : config.getFields()) {
|
for (Field field : config.getFields()) {
|
||||||
EntryInfo info = new EntryInfo();
|
EntryInfo info = new EntryInfo();
|
||||||
if ((field.isAnnotationPresent(Entry.class) || field.isAnnotationPresent(Comment.class)) && !field.isAnnotationPresent(Server.class) && !field.isAnnotationPresent(Hidden.class))
|
if ((field.isAnnotationPresent(Entry.class) || field.isAnnotationPresent(Comment.class)) && !field.isAnnotationPresent(Server.class) && !field.isAnnotationPresent(Hidden.class) && PlatformFunctions.isClientEnv())
|
||||||
if (PlatformFunctions.isClientEnv()) initClient(modid, field, info);
|
initClient(modid, field, info);
|
||||||
if (field.isAnnotationPresent(Comment.class)) info.centered = field.getAnnotation(Comment.class).centered();
|
if (field.isAnnotationPresent(Comment.class)) info.centered = field.getAnnotation(Comment.class).centered();
|
||||||
if (field.isAnnotationPresent(Entry.class))
|
if (field.isAnnotationPresent(Entry.class))
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
{
|
{
|
||||||
"midnightlib.overview.title":"MidnightConfig Übersicht",
|
"midnightlib.overview.title":"MidnightConfig Übersicht",
|
||||||
"midnightlib.midnightconfig.title":"MidnightLib Konfiguration",
|
"midnightlib.midnightconfig.title":"MidnightLib Konfiguration",
|
||||||
"midnightlib.midnightconfig.midnightlib_description":"§nMidnightLib",
|
|
||||||
"midnightlib.midnightconfig.config_screen_list":"Konfigurationsübersicht",
|
"midnightlib.midnightconfig.config_screen_list":"Konfigurationsübersicht",
|
||||||
"midnightlib.midnightconfig.background_texture":"Textur der Konfigurationsbildschirme",
|
"midnightlib.midnightconfig.background_texture":"Textur der Konfigurationsbildschirme",
|
||||||
"midnightlib.midnightconfig.midnighthats_description":"§nMidnightHats",
|
|
||||||
"midnightlib.midnightconfig.special_hats":"Unterstützer-Hüte",
|
|
||||||
"modmenu.descriptionTranslation.midnightlib": "Code-Bibliothek für Mods von MidnightDust.\nStellt eine Konfigurationsschnittstelle, automatische Kompatibilität, oft genutzten Code und Hüte für Unterstützer bereit.",
|
"modmenu.descriptionTranslation.midnightlib": "Code-Bibliothek für Mods von MidnightDust.\nStellt eine Konfigurationsschnittstelle, automatische Kompatibilität, oft genutzten Code und Hüte für Unterstützer bereit.",
|
||||||
"modmenu.summaryTranslation.midnightlib": "Code-Bibliothek für Mods von MidnightDust."
|
"modmenu.summaryTranslation.midnightlib": "Code-Bibliothek für Mods von MidnightDust."
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,11 @@
|
|||||||
{
|
{
|
||||||
"midnightlib.overview.title":"MidnightConfig Overview",
|
"midnightlib.overview.title":"MidnightConfig Overview",
|
||||||
"midnightlib.midnightconfig.title":"MidnightLib Config",
|
"midnightlib.midnightconfig.title":"MidnightLib Config",
|
||||||
"midnightlib.midnightconfig.midnightlib_description":"§nMidnightLib",
|
|
||||||
"midnightlib.midnightconfig.config_screen_list":"Enable Config Screen List",
|
"midnightlib.midnightconfig.config_screen_list":"Enable Config Screen List",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.TRUE":"§aYes",
|
"midnightlib.midnightconfig.enum.ConfigButton.TRUE":"§aYes",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.FALSE":"§cNo",
|
"midnightlib.midnightconfig.enum.ConfigButton.FALSE":"§cNo",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.MODMENU":"§bModMenu",
|
"midnightlib.midnightconfig.enum.ConfigButton.MODMENU":"§bModMenu",
|
||||||
"midnightlib.midnightconfig.background_texture":"Texture of config screen backgrounds",
|
"midnightlib.midnightconfig.background_texture":"Texture of config screen backgrounds",
|
||||||
"midnightlib.midnightconfig.midnighthats_description":"§nMidnightHats",
|
|
||||||
"midnightlib.midnightconfig.special_hats":"Enable Supporter Hats",
|
|
||||||
"midnightlib.modrinth":"Modrinth",
|
"midnightlib.modrinth":"Modrinth",
|
||||||
"midnightlib.curseforge":"CurseForge",
|
"midnightlib.curseforge":"CurseForge",
|
||||||
"midnightlib.wiki":"Wiki",
|
"midnightlib.wiki":"Wiki",
|
||||||
|
|||||||
@@ -1,17 +1,10 @@
|
|||||||
{
|
{
|
||||||
"midnightlib.overview.title":"Vue d'ensemble de MidnightConfig",
|
"midnightlib.overview.title":"Vue d'ensemble de MidnightConfig",
|
||||||
"midnightlib.midnightconfig.title":"Configuration de MidnightLib",
|
"midnightlib.midnightconfig.title":"Configuration de MidnightLib",
|
||||||
"midnightlib.midnightconfig.midnightlib_description":"§nMidnightLib",
|
|
||||||
"midnightlib.midnightconfig.config_screen_list":"Activer la liste de l'écran de configuration",
|
"midnightlib.midnightconfig.config_screen_list":"Activer la liste de l'écran de configuration",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.TRUE":"§aOui",
|
"midnightlib.midnightconfig.enum.ConfigButton.TRUE":"§aOui",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.FALSE":"§cNon",
|
"midnightlib.midnightconfig.enum.ConfigButton.FALSE":"§cNon",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.MODMENU":"§bModMenu",
|
|
||||||
"midnightlib.midnightconfig.background_texture":"Texture d'arrière-plan de l'écran de configuration",
|
"midnightlib.midnightconfig.background_texture":"Texture d'arrière-plan de l'écran de configuration",
|
||||||
"midnightlib.midnightconfig.midnighthats_description":"§nMidnightHats",
|
|
||||||
"midnightlib.midnightconfig.special_hats":"Activer les chapeaux de fan",
|
|
||||||
"midnightlib.modrinth":"Modrinth",
|
|
||||||
"midnightlib.curseforge":"CurseForge",
|
|
||||||
"midnightlib.wiki":"Wiki",
|
|
||||||
"modmenu.descriptionTranslation.midnightlib": "Bibliothèque commune pour les mods de la Team MidnightDust.\nFournit une API de configuration, une intégration automatique avec d'autres mods, des utilitaires courants et des cosmétiques.",
|
"modmenu.descriptionTranslation.midnightlib": "Bibliothèque commune pour les mods de la Team MidnightDust.\nFournit une API de configuration, une intégration automatique avec d'autres mods, des utilitaires courants et des cosmétiques.",
|
||||||
"modmenu.summaryTranslation.midnightlib": "Bibliothèque commune pour les mods de la Team MidnightDust."
|
"modmenu.summaryTranslation.midnightlib": "Bibliothèque commune pour les mods de la Team MidnightDust."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,10 @@
|
|||||||
{
|
{
|
||||||
"midnightlib.overview.title":"Visão geral do MidnightConfig",
|
"midnightlib.overview.title":"Visão geral do MidnightConfig",
|
||||||
"midnightlib.midnightconfig.title":"Configuração MidnightLib",
|
"midnightlib.midnightconfig.title":"Configuração MidnightLib",
|
||||||
"midnightlib.midnightconfig.midnightlib_description":"§nMidnightLib",
|
|
||||||
"midnightlib.midnightconfig.config_screen_list":"Ativar lista de telas de configuração",
|
"midnightlib.midnightconfig.config_screen_list":"Ativar lista de telas de configuração",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.TRUE":"§aVerdadeiro",
|
"midnightlib.midnightconfig.enum.ConfigButton.TRUE":"§aVerdadeiro",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.FALSE":"§cFalso",
|
"midnightlib.midnightconfig.enum.ConfigButton.FALSE":"§cFalso",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.MODMENU":"§bModMenu",
|
|
||||||
"midnightlib.midnightconfig.background_texture":"Textura dos fundos da tela de configuração",
|
"midnightlib.midnightconfig.background_texture":"Textura dos fundos da tela de configuração",
|
||||||
"midnightlib.midnightconfig.midnighthats_description":"§nMidnightHats",
|
|
||||||
"midnightlib.midnightconfig.special_hats":"Ativar chapéus de torcedor",
|
|
||||||
"midnightlib.modrinth":"Modrinth",
|
|
||||||
"midnightlib.curseforge":"CurseForge",
|
|
||||||
"midnightlib.wiki":"Wiki",
|
|
||||||
"modmenu.descriptionTranslation.midnightlib": "Biblioteca comum para mods do Team MidnightDust.\nFornece uma API de configuração, integração automática com outros mods, utilitários comuns e cosméticos.",
|
"modmenu.descriptionTranslation.midnightlib": "Biblioteca comum para mods do Team MidnightDust.\nFornece uma API de configuração, integração automática com outros mods, utilitários comuns e cosméticos.",
|
||||||
"modmenu.summaryTranslation.midnightlib": "Biblioteca comum para mods do Team MidnightDust."
|
"modmenu.summaryTranslation.midnightlib": "Biblioteca comum para mods do Team MidnightDust."
|
||||||
}
|
}
|
||||||
@@ -1,16 +1,10 @@
|
|||||||
{
|
{
|
||||||
"midnightlib.overview.title":"MidnightConfig күзәтү",
|
"midnightlib.overview.title":"MidnightConfig күзәтү",
|
||||||
"midnightlib.midnightconfig.title":"MidnightLib көйләүләре",
|
"midnightlib.midnightconfig.title":"MidnightLib көйләүләре",
|
||||||
"midnightlib.midnightconfig.midnightlib_description":"§nMidnightLib",
|
|
||||||
"midnightlib.midnightconfig.config_screen_list":"Көйләүләр экранының исемлеген кушу",
|
"midnightlib.midnightconfig.config_screen_list":"Көйләүләр экранының исемлеген кушу",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.TRUE":"§aӘйе",
|
"midnightlib.midnightconfig.enum.ConfigButton.TRUE":"§aӘйе",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.FALSE":"§cЮк",
|
"midnightlib.midnightconfig.enum.ConfigButton.FALSE":"§cЮк",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.MODMENU":"§bModMenu",
|
|
||||||
"midnightlib.midnightconfig.background_texture":"Көйләүләр экранының фонының текстурасы",
|
"midnightlib.midnightconfig.background_texture":"Көйләүләр экранының фонының текстурасы",
|
||||||
"midnightlib.midnightconfig.midnighthats_description":"§nMidnightHats",
|
|
||||||
"midnightlib.midnightconfig.special_hats":"Ярдәмченең эшләпәсен кушу",
|
|
||||||
"midnightlib.modrinth":"Modrinth",
|
|
||||||
"midnightlib.curseforge":"CurseForge",
|
|
||||||
"midnightlib.wiki":"Вики",
|
"midnightlib.wiki":"Вики",
|
||||||
"modmenu.descriptionTranslation.midnightlib": "MidnightDust төркеменең модлары өчен гомуми китапханә.\nКөйләүләр API-ын, башка модлар белән автоматик интеграцияне, гомуми хезмәти программаларны һәм бизәнүләрне тәэмин ителә.",
|
"modmenu.descriptionTranslation.midnightlib": "MidnightDust төркеменең модлары өчен гомуми китапханә.\nКөйләүләр API-ын, башка модлар белән автоматик интеграцияне, гомуми хезмәти программаларны һәм бизәнүләрне тәэмин ителә.",
|
||||||
"modmenu.summaryTranslation.midnightlib": "MidnightDust төркеменең модлары өчен гомуми китапханә."
|
"modmenu.summaryTranslation.midnightlib": "MidnightDust төркеменең модлары өчен гомуми китапханә."
|
||||||
|
|||||||
@@ -1,16 +1,8 @@
|
|||||||
{
|
{
|
||||||
"midnightlib.overview.title":"Огляд MidnightConfig",
|
"midnightlib.overview.title":"Огляд MidnightConfig",
|
||||||
"midnightlib.midnightconfig.title":"Конфігурація MidnightLib",
|
"midnightlib.midnightconfig.title":"Конфігурація MidnightLib",
|
||||||
"midnightlib.midnightconfig.midnightlib_description":"§nMidnightLib",
|
|
||||||
"midnightlib.midnightconfig.config_screen_list":"Увімкнути список екрана конфігурації",
|
"midnightlib.midnightconfig.config_screen_list":"Увімкнути список екрана конфігурації",
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.TRUE":"§aTrue",
|
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.FALSE":"§cFalse",
|
|
||||||
"midnightlib.midnightconfig.enum.ConfigButton.MODMENU":"§bModMenu",
|
|
||||||
"midnightlib.midnightconfig.background_texture":"Текстура фону екрана конфігурації",
|
"midnightlib.midnightconfig.background_texture":"Текстура фону екрана конфігурації",
|
||||||
"midnightlib.midnightconfig.midnighthats_description":"§nMidnightHats",
|
|
||||||
"midnightlib.midnightconfig.special_hats":"Увімкнути капелюхи спонсорів",
|
|
||||||
"midnightlib.modrinth":"Modrinth",
|
|
||||||
"midnightlib.curseforge":"CurseForge",
|
|
||||||
"midnightlib.wiki":"Вікі",
|
"midnightlib.wiki":"Вікі",
|
||||||
"modmenu.descriptionTranslation.midnightlib": "Загальна бібліотека для модів команди MidnightDust.\nНадає конфігураційний API, автоматичну інтеграцію з іншими модами, загальні утиліти та косметику.",
|
"modmenu.descriptionTranslation.midnightlib": "Загальна бібліотека для модів команди MidnightDust.\nНадає конфігураційний API, автоматичну інтеграцію з іншими модами, загальні утиліти та косметику.",
|
||||||
"modmenu.summaryTranslation.midnightlib": "Загальна бібліотека для модів команди MidnightDust."
|
"modmenu.summaryTranslation.midnightlib": "Загальна бібліотека для модів команди MidnightDust."
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 217 B |
@@ -4,8 +4,7 @@
|
|||||||
"package": "eu.midnightdust.core.mixin",
|
"package": "eu.midnightdust.core.mixin",
|
||||||
"compatibilityLevel": "JAVA_17",
|
"compatibilityLevel": "JAVA_17",
|
||||||
"client": [
|
"client": [
|
||||||
"MixinOptionsScreen",
|
"MixinOptionsScreen"
|
||||||
"MixinPlayerEntityRenderer"
|
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
|||||||
@@ -1,16 +1,13 @@
|
|||||||
package eu.midnightdust.fabric.core;
|
package eu.midnightdust.fabric.core;
|
||||||
|
|
||||||
import eu.midnightdust.core.MidnightLibClient;
|
import eu.midnightdust.core.MidnightLibClient;
|
||||||
import eu.midnightdust.hats.witch.WitchHatFeatureRenderer;
|
|
||||||
import eu.midnightdust.lib.util.MidnightColorUtil;
|
import eu.midnightdust.lib.util.MidnightColorUtil;
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||||
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
|
|
||||||
|
|
||||||
public class MidnightLibClientFabric implements ClientModInitializer {
|
public class MidnightLibClientFabric implements ClientModInitializer {
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
EntityModelLayerRegistry.registerModelLayer(WitchHatFeatureRenderer.WITCH_HAT_MODEL_LAYER, WitchHatFeatureRenderer::getTexturedModelData);
|
|
||||||
MidnightLibClient.onInitializeClient();
|
MidnightLibClient.onInitializeClient();
|
||||||
ClientTickEvents.END_CLIENT_TICK.register(
|
ClientTickEvents.END_CLIENT_TICK.register(
|
||||||
client -> MidnightColorUtil.tick()
|
client -> MidnightColorUtil.tick()
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
"depends": {
|
"depends": {
|
||||||
"fabric-models-v0": "*",
|
"fabric-models-v0": "*",
|
||||||
"fabric-resource-loader-v0": "*",
|
"fabric-resource-loader-v0": "*",
|
||||||
"minecraft": ">=1.19.4-rc.1"
|
"minecraft": ">=1.19.4"
|
||||||
},
|
},
|
||||||
|
|
||||||
"mixins": [
|
"mixins": [
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
package eu.midnightdust.forge;
|
package eu.midnightdust.forge;
|
||||||
|
|
||||||
import eu.midnightdust.hats.witch.WitchHatFeatureRenderer;
|
|
||||||
import eu.midnightdust.lib.config.MidnightConfig;
|
import eu.midnightdust.lib.config.MidnightConfig;
|
||||||
import eu.midnightdust.lib.util.MidnightColorUtil;
|
import eu.midnightdust.lib.util.MidnightColorUtil;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.client.ConfigScreenHandler;
|
import net.minecraftforge.client.ConfigScreenHandler;
|
||||||
import net.minecraftforge.client.event.EntityRenderersEvent;
|
|
||||||
import net.minecraftforge.event.TickEvent;
|
import net.minecraftforge.event.TickEvent;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.ModList;
|
import net.minecraftforge.fml.ModList;
|
||||||
@@ -14,10 +12,6 @@ import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent;
|
|||||||
|
|
||||||
@Mod.EventBusSubscriber(modid = "midnightlib", bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
|
@Mod.EventBusSubscriber(modid = "midnightlib", bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
|
||||||
public class MidnightLibClientEvents {
|
public class MidnightLibClientEvents {
|
||||||
@SubscribeEvent
|
|
||||||
public static void registerLayerDefinition(EntityRenderersEvent.RegisterLayerDefinitions event) {
|
|
||||||
event.registerLayerDefinition(WitchHatFeatureRenderer.WITCH_HAT_MODEL_LAYER, WitchHatFeatureRenderer::getTexturedModelData);
|
|
||||||
}
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void registerClientTick(TickEvent.ClientTickEvent event) {
|
public void registerClientTick(TickEvent.ClientTickEvent event) {
|
||||||
MidnightColorUtil.tick();
|
MidnightColorUtil.tick();
|
||||||
|
|||||||
@@ -24,6 +24,6 @@ side = "BOTH"
|
|||||||
[[dependencies.midnightlib]]
|
[[dependencies.midnightlib]]
|
||||||
modId = "minecraft"
|
modId = "minecraft"
|
||||||
mandatory = true
|
mandatory = true
|
||||||
versionRange = "[1.19.2,)"
|
versionRange = "[1.19.4,)"
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
side = "BOTH"
|
side = "BOTH"
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
org.gradle.jvmargs=-Xmx4096M
|
org.gradle.jvmargs=-Xmx4096M
|
||||||
|
|
||||||
minecraft_version=1.19.4-pre4
|
minecraft_version=1.19.4
|
||||||
yarn_mappings=1.19.4-pre4+build.1
|
yarn_mappings=1.19.4+build.1
|
||||||
enabled_platforms=fabric
|
enabled_platforms=quilt,fabric,forge
|
||||||
|
|
||||||
archives_base_name=midnightlib
|
archives_base_name=midnightlib
|
||||||
mod_version=1.2.1
|
mod_version=1.3.0
|
||||||
maven_group=eu.midnightdust
|
maven_group=eu.midnightdust
|
||||||
|
|
||||||
fabric_loader_version=0.14.17
|
fabric_loader_version=0.14.19
|
||||||
fabric_api_version=0.75.3+1.19.4
|
fabric_api_version=0.76.0+1.19.4
|
||||||
|
|
||||||
forge_version=1.19.3-44.0.18
|
forge_version=1.19.4-45.0.40
|
||||||
|
|
||||||
quilt_loader_version=0.18.1-beta.75
|
quilt_loader_version=0.18.6
|
||||||
quilt_fabric_api_version=5.0.0-beta.2+0.68.1-1.19.3
|
quilt_fabric_api_version=6.0.0-beta.2+0.76.0-1.19.4
|
||||||
mod_menu_version = 5.0.2
|
mod_menu_version = 5.0.2
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
package eu.midnightdust.quilt.core;
|
package eu.midnightdust.quilt.core;
|
||||||
|
|
||||||
import eu.midnightdust.core.MidnightLibClient;
|
import eu.midnightdust.core.MidnightLibClient;
|
||||||
import eu.midnightdust.hats.witch.WitchHatFeatureRenderer;
|
|
||||||
import eu.midnightdust.lib.util.MidnightColorUtil;
|
import eu.midnightdust.lib.util.MidnightColorUtil;
|
||||||
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
|
|
||||||
import org.quiltmc.loader.api.ModContainer;
|
import org.quiltmc.loader.api.ModContainer;
|
||||||
import org.quiltmc.qsl.base.api.entrypoint.client.ClientModInitializer;
|
import org.quiltmc.qsl.base.api.entrypoint.client.ClientModInitializer;
|
||||||
import org.quiltmc.qsl.lifecycle.api.client.event.ClientTickEvents;
|
import org.quiltmc.qsl.lifecycle.api.client.event.ClientTickEvents;
|
||||||
@@ -11,7 +9,6 @@ import org.quiltmc.qsl.lifecycle.api.client.event.ClientTickEvents;
|
|||||||
public class MidnightLibClientQuilt implements ClientModInitializer {
|
public class MidnightLibClientQuilt implements ClientModInitializer {
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient(ModContainer mod) {
|
public void onInitializeClient(ModContainer mod) {
|
||||||
EntityModelLayerRegistry.registerModelLayer(WitchHatFeatureRenderer.WITCH_HAT_MODEL_LAYER, WitchHatFeatureRenderer::getTexturedModelData);
|
|
||||||
MidnightLibClient.onInitializeClient();
|
MidnightLibClient.onInitializeClient();
|
||||||
ClientTickEvents.END.register(
|
ClientTickEvents.END.register(
|
||||||
client -> MidnightColorUtil.tick()
|
client -> MidnightColorUtil.tick()
|
||||||
|
|||||||
@@ -38,6 +38,10 @@
|
|||||||
{
|
{
|
||||||
"id": "quilt_base",
|
"id": "quilt_base",
|
||||||
"version": "*"
|
"version": "*"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "minecraft",
|
||||||
|
"version": ">=1.19.4"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ pluginManagement {
|
|||||||
include("common")
|
include("common")
|
||||||
include("fabric-like")
|
include("fabric-like")
|
||||||
include("fabric")
|
include("fabric")
|
||||||
//include("quilt")
|
include("quilt")
|
||||||
//include("forge")
|
include("forge")
|
||||||
|
|
||||||
rootProject.name = "midnightlib"
|
rootProject.name = "midnightlib"
|
||||||
|
|||||||
Reference in New Issue
Block a user