mirror of
https://github.com/TeamMidnightDust/Celestria.git
synced 2025-12-17 00:05:09 +01:00
First working alpha
This commit is contained in:
56
src/main/java/eu/midnightdust/celestria/CelestriaClient.java
Executable file
56
src/main/java/eu/midnightdust/celestria/CelestriaClient.java
Executable file
@@ -0,0 +1,56 @@
|
||||
package eu.midnightdust.celestria;
|
||||
|
||||
import eu.midnightdust.celestria.config.CelestriaConfig;
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
|
||||
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
|
||||
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
|
||||
import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
public class CelestriaClient implements ClientModInitializer {
|
||||
private static boolean clientOnlyMode = true;
|
||||
public static int shootingStarProgress = 0;
|
||||
public static int shootingStarType = 0;
|
||||
public static int shootingStarX = 0;
|
||||
public static int shootingStarY = 0;
|
||||
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
FabricLoader.getInstance().getModContainer(Celestria.MOD_ID).ifPresent(modContainer -> {
|
||||
ResourceManagerHelper.registerBuiltinResourcePack(new Identifier(Celestria.MOD_ID,"realistic"), modContainer, ResourcePackActivationType.NORMAL);
|
||||
ResourceManagerHelper.registerBuiltinResourcePack(new Identifier(Celestria.MOD_ID,"pixelperfect"), modContainer, ResourcePackActivationType.NORMAL);
|
||||
});
|
||||
ClientPlayNetworking.registerGlobalReceiver(Celestria.SHOOTING_STAR_PACKET,
|
||||
(client, handler, attachedData, packetSender) -> {
|
||||
int[] array = attachedData.readIntArray(3);
|
||||
client.execute(() -> {
|
||||
if (client.world != null) {
|
||||
CelestriaClient.clientOnlyMode = false; // If the welcome packet wasn't received correctly for some reason, disable clientOnlyMode on shooting star occurrence
|
||||
CelestriaClient.shootingStarX = array[0];
|
||||
CelestriaClient.shootingStarY = array[1];
|
||||
CelestriaClient.shootingStarType = array[2];
|
||||
CelestriaClient.shootingStarProgress = 100 + shootingStarType * 10;
|
||||
}
|
||||
});
|
||||
});
|
||||
ClientPlayNetworking.registerGlobalReceiver(Celestria.WELCOME_PACKET,
|
||||
(client, handler, attachedData, packetSender) -> client.execute(() -> CelestriaClient.clientOnlyMode = false));
|
||||
ClientTickEvents.END_CLIENT_TICK.register(client -> {
|
||||
if (shootingStarProgress > 0) --shootingStarProgress;
|
||||
if (CelestriaClient.clientOnlyMode && client.world != null) {
|
||||
if (Celestria.shootingStarCooldown > 0) --Celestria.shootingStarCooldown;
|
||||
if (client.world.isNight() && Celestria.shootingStarCooldown <= 0 && client.world.random.nextInt(CelestriaConfig.shootingStarChance) == 0) {
|
||||
CelestriaClient.shootingStarX = client.world.random.nextBetween(100, 150);
|
||||
CelestriaClient.shootingStarY = client.world.random.nextInt(360);
|
||||
CelestriaClient.shootingStarType = client.world.random.nextInt(3);
|
||||
CelestriaClient.shootingStarProgress = 100 + shootingStarType * 10;
|
||||
Celestria.shootingStarCooldown = CelestriaConfig.shootingStarCooldownLength;
|
||||
}
|
||||
}
|
||||
});
|
||||
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> CelestriaClient.clientOnlyMode = true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user