mirror of
https://github.com/TeamMidnightDust/Celestria.git
synced 2025-12-15 23:35:09 +01:00
Celestria 2.0.0 - Improved Everything
- Port to 1.21 - Neoforge support - Multiple shooting stars at the same time - Stellar nights based on moon phase -> Increased shooting star rate - Stars now move linearly instead of rotating - Serverside-mode using Polymer
This commit is contained in:
103
fabric/build.gradle
Normal file
103
fabric/build.gradle
Normal file
@@ -0,0 +1,103 @@
|
||||
plugins {
|
||||
id 'com.github.johnrengelman.shadow'
|
||||
id "me.shedaniel.unified-publishing"
|
||||
}
|
||||
|
||||
architectury {
|
||||
platformSetupLoomIde()
|
||||
fabric()
|
||||
}
|
||||
|
||||
loom {
|
||||
}
|
||||
|
||||
configurations {
|
||||
common
|
||||
shadowCommon // Don't use shadow from the shadow plugin since it *excludes* files.
|
||||
compileClasspath.extendsFrom common
|
||||
runtimeClasspath.extendsFrom common
|
||||
developmentFabric.extendsFrom common
|
||||
archivesBaseName = rootProject.archives_base_name + "-fabric"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
|
||||
modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}"
|
||||
modImplementation include ("maven.modrinth:midnightlib:${rootProject.midnightlib_version}-fabric")
|
||||
modImplementation ("eu.pb4:polymer-core:${polymer_version}")
|
||||
|
||||
common(project(path: ":common", configuration: "namedElements")) { transitive false }
|
||||
shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false }
|
||||
}
|
||||
|
||||
processResources {
|
||||
inputs.property "version", project.version
|
||||
|
||||
filesMatching("fabric.mod.json") {
|
||||
expand "version": project.version
|
||||
}
|
||||
}
|
||||
|
||||
shadowJar {
|
||||
exclude "architectury.common.json"
|
||||
|
||||
configurations = [project.configurations.shadowCommon]
|
||||
archiveClassifier = "dev-shadow"
|
||||
}
|
||||
|
||||
remapJar {
|
||||
input.set shadowJar.archiveFile
|
||||
dependsOn shadowJar
|
||||
}
|
||||
|
||||
sourcesJar {
|
||||
def commonSources = project(":common").sourcesJar
|
||||
dependsOn commonSources
|
||||
from commonSources.archiveFile.map { zipTree(it) }
|
||||
}
|
||||
|
||||
components.java {
|
||||
withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) {
|
||||
skip()
|
||||
}
|
||||
}
|
||||
|
||||
unifiedPublishing {
|
||||
project {
|
||||
displayName = "Celestria $project.version - Fabric $project.minecraft_version"
|
||||
releaseType = "$project.release_type"
|
||||
changelog = releaseChangelog()
|
||||
gameVersions = []
|
||||
gameLoaders = ["fabric","quilt"]
|
||||
mainPublication remapJar
|
||||
relations {
|
||||
depends {
|
||||
curseforge = "fabric-api"
|
||||
modrinth = "fabric-api"
|
||||
}
|
||||
includes {
|
||||
curseforge = "midnightlib"
|
||||
modrinth = "midnightlib"
|
||||
}
|
||||
}
|
||||
|
||||
var CURSEFORGE_TOKEN = project.findProperty("CURSEFORGE_TOKEN") ?: System.getenv("CURSEFORGE_TOKEN")
|
||||
if (CURSEFORGE_TOKEN != null) {
|
||||
curseforge {
|
||||
token = CURSEFORGE_TOKEN
|
||||
id = rootProject.curseforge_id
|
||||
gameVersions.addAll "Java 21", project.minecraft_version, project.supported_versions
|
||||
}
|
||||
}
|
||||
|
||||
var MODRINTH_TOKEN = project.findProperty("MODRINTH_TOKEN") ?: System.getenv("MODRINTH_TOKEN")
|
||||
if (MODRINTH_TOKEN != null) {
|
||||
modrinth {
|
||||
token = MODRINTH_TOKEN
|
||||
id = rootProject.modrinth_id
|
||||
version = "$project.version-$project.name"
|
||||
gameVersions.addAll project.minecraft_version, project.supported_versions
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
18
fabric/src/main/java/eu/midnightdust/celestria/fabric/CelestriaFabric.java
Executable file
18
fabric/src/main/java/eu/midnightdust/celestria/fabric/CelestriaFabric.java
Executable file
@@ -0,0 +1,18 @@
|
||||
package eu.midnightdust.celestria.fabric;
|
||||
|
||||
import eu.midnightdust.celestria.Celestria;
|
||||
import eu.midnightdust.celestria.CelestriaClient;
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
|
||||
public class CelestriaFabric implements ModInitializer, ClientModInitializer {
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
Celestria.init();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
CelestriaClient.init();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package eu.midnightdust.celestria.util.fabric;
|
||||
|
||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
|
||||
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
|
||||
import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import static eu.midnightdust.celestria.Celestria.MOD_ID;
|
||||
|
||||
public class ClientUtilsImpl {
|
||||
public static void registerBuiltinResourcePack(Identifier id) {
|
||||
FabricLoader.getInstance().getModContainer(MOD_ID).ifPresent(container -> {
|
||||
ResourceManagerHelper.registerBuiltinResourcePack(id, container, ResourcePackActivationType.NORMAL);
|
||||
});
|
||||
}
|
||||
public static void registerClientTick(boolean endTick, Consumer<MinecraftClient> code) {
|
||||
if (endTick) ClientTickEvents.END_CLIENT_TICK.register(code::accept);
|
||||
else ClientTickEvents.START_CLIENT_TICK.register(code::accept);
|
||||
}
|
||||
public static void registerDisconnectEvent(BiConsumer<ClientPlayNetworkHandler, MinecraftClient> code) {
|
||||
ClientPlayConnectionEvents.DISCONNECT.register(code::accept);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package eu.midnightdust.celestria.util.fabric;
|
||||
|
||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class CommonUtilsImpl {
|
||||
public static void registerWorldTickEvent(boolean endTick, Consumer<World> code) {
|
||||
if (endTick) ServerTickEvents.END_WORLD_TICK.register(code::accept);
|
||||
else ServerTickEvents.START_WORLD_TICK.register(code::accept);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package eu.midnightdust.celestria.util.fabric;
|
||||
|
||||
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
|
||||
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
|
||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.network.RegistryByteBuf;
|
||||
import net.minecraft.network.codec.PacketCodec;
|
||||
import net.minecraft.network.packet.CustomPayload;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
public class PacketUtilsImpl {
|
||||
// Common
|
||||
public static <T extends CustomPayload> void registerPayloadCommon(CustomPayload.Id<T> id, PacketCodec<RegistryByteBuf, T> codec) {
|
||||
PayloadTypeRegistry.playC2S().register(id, codec);
|
||||
PayloadTypeRegistry.playS2C().register(id, codec);
|
||||
}
|
||||
|
||||
// Server
|
||||
public static <T extends CustomPayload> void registerPayloadS2C(CustomPayload.Id<T> id, PacketCodec<RegistryByteBuf, T> codec) {
|
||||
PayloadTypeRegistry.playS2C().register(id, codec);
|
||||
}
|
||||
public static void sendPlayPayloadS2C(ServerPlayerEntity player, CustomPayload payload) {
|
||||
ServerPlayNetworking.send(player, payload);
|
||||
}
|
||||
public static void registerServerGlobalReceiver(CustomPayload.Id<?> type, BiConsumer<CustomPayload, PlayerEntity> code) {
|
||||
ServerPlayNetworking.registerGlobalReceiver(type, (payload, context) -> code.accept(payload, context.player()));
|
||||
}
|
||||
|
||||
// Client
|
||||
public static <T extends CustomPayload> void registerPayloadC2S(CustomPayload.Id<T> id, PacketCodec<RegistryByteBuf, T> codec) {
|
||||
PayloadTypeRegistry.playC2S().register(id, codec);
|
||||
}
|
||||
public static void sendPlayPayloadC2S(CustomPayload payload) {
|
||||
ClientPlayNetworking.send(payload);
|
||||
}
|
||||
public static void registerClientGlobalReceiver(CustomPayload.Id<?> type, BiConsumer<CustomPayload, PlayerEntity> code) {
|
||||
ClientPlayNetworking.registerGlobalReceiver(type, (payload, context) -> code.accept(payload, context.player()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package eu.midnightdust.celestria.util.fabric;
|
||||
|
||||
import eu.midnightdust.celestria.Celestria;
|
||||
import eu.midnightdust.celestria.effect.InsomniaStatusEffect;
|
||||
import eu.midnightdust.lib.util.MidnightColorUtil;
|
||||
import eu.pb4.polymer.core.api.other.PolymerStatusEffect;
|
||||
import net.minecraft.entity.effect.StatusEffect;
|
||||
import net.minecraft.entity.effect.StatusEffectCategory;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class PolymerUtilsImpl {
|
||||
public static StatusEffect initInsomnia() {
|
||||
return new PolymerInsomniaStatusEffect(StatusEffectCategory.HARMFUL, MidnightColorUtil.hex2Rgb("88A9C8").getRGB());
|
||||
}
|
||||
private static class PolymerInsomniaStatusEffect extends InsomniaStatusEffect implements PolymerStatusEffect {
|
||||
public PolymerInsomniaStatusEffect(StatusEffectCategory statusEffectCategory, int color) {
|
||||
super(statusEffectCategory, color);
|
||||
}
|
||||
public @Nullable StatusEffect getPolymerReplacement(ServerPlayerEntity player) {
|
||||
if (Celestria.playersWithMod.contains(player.getUuid())) return this;
|
||||
else return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
34
fabric/src/main/resources/fabric.mod.json
Normal file
34
fabric/src/main/resources/fabric.mod.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "celestria",
|
||||
"version": "${version}",
|
||||
|
||||
"name": "Celestria",
|
||||
"description": "Adds celestrial events, such as shooting stars and occasional insomnia from full moon.",
|
||||
"authors": [
|
||||
"Motschen",
|
||||
"TeamMidnightDust"
|
||||
],
|
||||
"contact": {
|
||||
"homepage": "https://www.midnightdust.eu/",
|
||||
"sources": "https://github.com/TeamMidnightDust/Celestria",
|
||||
"issues": "https://github.com/TeamMidnightDust/Celestria/issues"
|
||||
},
|
||||
|
||||
"license": "MIT",
|
||||
"icon": "assets/celestria/icon.png",
|
||||
|
||||
"environment": "*",
|
||||
"entrypoints": {
|
||||
"main": [
|
||||
"eu.midnightdust.celestria.fabric.CelestriaFabric"
|
||||
],
|
||||
"client": [
|
||||
"eu.midnightdust.celestria.fabric.CelestriaFabric"
|
||||
]
|
||||
},
|
||||
|
||||
"mixins": [
|
||||
"celestria.mixins.json"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user