From 8804fa0abafc9d1c2131e565ea8f40253de46e55 Mon Sep 17 00:00:00 2001 From: Sollace Date: Thu, 1 Feb 2024 21:47:05 +0000 Subject: [PATCH] Added the spectral clock for tracking the zap apple tree's season and make the zap apple tree cyce faster --- assets/spectral_clock_0.xcf | Bin 0 -> 17993 bytes .../unicopia/client/URenderers.java | 1 + .../unicopia/client/UnicopiaClient.java | 15 +++ .../container/SpellbookChapterLoader.java | 2 +- .../minelittlepony/unicopia/item/UItems.java | 1 + .../unicopia/network/Channel.java | 8 +- .../unicopia/network/MsgZapAppleStage.java | 23 +++++ .../handler/ClientNetworkHandlerImpl.java | 7 +- .../server/world/ZapAppleStageStore.java | 90 +++++++++++++----- .../resources/assets/unicopia/lang/en_us.json | 2 + .../unicopia/models/item/spectral_clock.json | 29 ++++++ .../models/item/spectral_clock_1.json | 6 ++ .../models/item/spectral_clock_2.json | 6 ++ .../models/item/spectral_clock_3.json | 6 ++ .../item/spectral_clock_flowering_0.json | 6 ++ .../item/spectral_clock_flowering_1.json | 6 ++ .../item/spectral_clock_flowering_2.json | 6 ++ .../item/spectral_clock_flowering_3.json | 6 ++ .../item/spectral_clock_fruiting_0.json | 6 ++ .../item/spectral_clock_fruiting_1.json | 6 ++ .../item/spectral_clock_fruiting_2.json | 6 ++ .../item/spectral_clock_fruiting_3.json | 6 ++ .../item/spectral_clock_greening_0.json | 6 ++ .../item/spectral_clock_greening_1.json | 6 ++ .../item/spectral_clock_greening_2.json | 6 ++ .../item/spectral_clock_greening_3.json | 6 ++ .../models/item/spectral_clock_ripe_0.json | 6 ++ .../models/item/spectral_clock_ripe_1.json | 6 ++ .../models/item/spectral_clock_ripe_2.json | 6 ++ .../models/item/spectral_clock_ripe_3.json | 6 ++ .../textures/item/spectral_clock_0.png | Bin 0 -> 4695 bytes .../textures/item/spectral_clock_1.png | Bin 0 -> 4697 bytes .../textures/item/spectral_clock_2.png | Bin 0 -> 4703 bytes .../textures/item/spectral_clock_3.png | Bin 0 -> 4697 bytes .../textures/item/spectral_clock_3.xcf | Bin 0 -> 9850 bytes .../item/spectral_clock_flowering_0.png | Bin 0 -> 4711 bytes .../item/spectral_clock_flowering_1.png | Bin 0 -> 4737 bytes .../item/spectral_clock_flowering_2.png | Bin 0 -> 4717 bytes .../item/spectral_clock_flowering_3.png | Bin 0 -> 4716 bytes .../item/spectral_clock_fruiting_0.png | Bin 0 -> 4708 bytes .../item/spectral_clock_fruiting_1.png | Bin 0 -> 4710 bytes .../item/spectral_clock_fruiting_2.png | Bin 0 -> 4714 bytes .../item/spectral_clock_fruiting_3.png | Bin 0 -> 4720 bytes .../item/spectral_clock_greening_0.png | Bin 0 -> 4691 bytes .../item/spectral_clock_greening_1.png | Bin 0 -> 4719 bytes .../item/spectral_clock_greening_2.png | Bin 0 -> 4728 bytes .../item/spectral_clock_greening_3.png | Bin 0 -> 4720 bytes .../textures/item/spectral_clock_ripe_0.png | Bin 0 -> 4711 bytes .../textures/item/spectral_clock_ripe_1.png | Bin 0 -> 4709 bytes .../textures/item/spectral_clock_ripe_2.png | Bin 0 -> 4716 bytes .../textures/item/spectral_clock_ripe_3.png | Bin 0 -> 4686 bytes 51 files changed, 264 insertions(+), 28 deletions(-) create mode 100644 assets/spectral_clock_0.xcf create mode 100644 src/main/java/com/minelittlepony/unicopia/network/MsgZapAppleStage.java create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_1.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_2.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_3.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_0.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_1.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_2.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_3.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_0.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_1.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_2.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_3.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_greening_0.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_greening_1.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_greening_2.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_greening_3.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_0.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_1.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_2.json create mode 100644 src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_3.json create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_0.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_1.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_2.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_3.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_3.xcf create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_0.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_1.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_2.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_3.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_fruiting_0.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_fruiting_1.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_fruiting_2.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_fruiting_3.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_greening_0.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_greening_1.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_greening_2.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_greening_3.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_ripe_0.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_ripe_1.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_ripe_2.png create mode 100644 src/main/resources/assets/unicopia/textures/item/spectral_clock_ripe_3.png diff --git a/assets/spectral_clock_0.xcf b/assets/spectral_clock_0.xcf new file mode 100644 index 0000000000000000000000000000000000000000..5675c5b009949b593b62693167cb109f44927847 GIT binary patch literal 17993 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 ZkXXxLtC>fKVcHSHepmo&nqPSx^WVkvBNG4s literal 0 HcmV?d00001 diff --git a/src/main/java/com/minelittlepony/unicopia/client/URenderers.java b/src/main/java/com/minelittlepony/unicopia/client/URenderers.java index 0d4509bb..ab09e503 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/URenderers.java +++ b/src/main/java/com/minelittlepony/unicopia/client/URenderers.java @@ -116,6 +116,7 @@ public interface URenderers { PolearmRenderer.register(UItems.WOODEN_POLEARM, UItems.STONE_POLEARM, UItems.IRON_POLEARM, UItems.GOLDEN_POLEARM, UItems.DIAMOND_POLEARM, UItems.NETHERITE_POLEARM); ModelPredicateProviderRegistry.register(UItems.GEMSTONE, new Identifier("affinity"), (stack, world, entity, seed) -> EnchantableItem.isEnchanted(stack) ? EnchantableItem.getSpellKey(stack).getAffinity().getAlignment() : 0); ModelPredicateProviderRegistry.register(UItems.ROCK_CANDY, new Identifier("count"), (stack, world, entity, seed) -> stack.getCount() / (float)stack.getMaxCount()); + ModelPredicateProviderRegistry.register(Unicopia.id("zap_cycle"), (stack, world, entity, seed) -> UnicopiaClient.getInstance().getZapStageDelta()); ColorProviderRegistry.BLOCK.register(URenderers::getTintedBlockColor, TintedBlock.REGISTRY.stream().toArray(Block[]::new)); ColorProviderRegistry.ITEM.register((stack, i) -> getTintedBlockColor(Block.getBlockFromItem(stack.getItem()).getDefaultState(), null, null, i), TintedBlock.REGISTRY.stream().map(Block::asItem).filter(i -> i != Items.AIR).toArray(Item[]::new)); diff --git a/src/main/java/com/minelittlepony/unicopia/client/UnicopiaClient.java b/src/main/java/com/minelittlepony/unicopia/client/UnicopiaClient.java index 32b01a8e..9ea6a700 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/UnicopiaClient.java +++ b/src/main/java/com/minelittlepony/unicopia/client/UnicopiaClient.java @@ -22,6 +22,7 @@ import com.minelittlepony.unicopia.entity.player.PlayerCamera; import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.network.handler.ClientNetworkHandlerImpl; import com.minelittlepony.unicopia.server.world.WeatherConditions; +import com.minelittlepony.unicopia.server.world.ZapAppleStageStore; import com.minelittlepony.unicopia.util.Lerp; import net.fabricmc.api.ClientModInitializer; @@ -53,6 +54,9 @@ public class UnicopiaClient implements ClientModInitializer { public final Lerp tangentalSkyAngle = new Lerp(0, true); public final Lerp skyAngle = new Lerp(0, true); + private ZapAppleStageStore.Stage zapAppleStage = ZapAppleStageStore.Stage.HIBERNATING; + private long zapStageTime; + public static Optional getCamera() { PlayerEntity player = MinecraftClient.getInstance().player; @@ -84,6 +88,15 @@ public class UnicopiaClient implements ClientModInitializer { instance = this; } + public void setZapAppleStage(ZapAppleStageStore.Stage stage, long delta) { + zapAppleStage = stage; + zapStageTime = delta; + } + + public float getZapStageDelta() { + return zapAppleStage.getCycleProgress(zapStageTime); + } + public float getSkyAngleDelta(float tickDelta) { if (MinecraftClient.getInstance().world == null) { return 0; @@ -135,6 +148,8 @@ public class UnicopiaClient implements ClientModInitializer { world.setRainGradient(gradient); world.setThunderGradient(gradient); } + + zapStageTime++; } private Float getTargetRainGradient(ClientWorld world, BlockPos pos, float tickDelta) { diff --git a/src/main/java/com/minelittlepony/unicopia/container/SpellbookChapterLoader.java b/src/main/java/com/minelittlepony/unicopia/container/SpellbookChapterLoader.java index 15e0dd3a..d7c7b5dc 100644 --- a/src/main/java/com/minelittlepony/unicopia/container/SpellbookChapterLoader.java +++ b/src/main/java/com/minelittlepony/unicopia/container/SpellbookChapterLoader.java @@ -56,7 +56,7 @@ public class SpellbookChapterLoader extends JsonDataLoader implements Identifiab dirty = false; MsgServerResources msg = new MsgServerResources(); server.getWorlds().forEach(world -> { - Channel.SERVER_RESOURCES_SEND.sendToAllPlayers(msg, world); + Channel.SERVER_RESOURCES.sendToAllPlayers(msg, world); }); } } diff --git a/src/main/java/com/minelittlepony/unicopia/item/UItems.java b/src/main/java/com/minelittlepony/unicopia/item/UItems.java index 3aa1e5ea..cf71cf2a 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/UItems.java +++ b/src/main/java/com/minelittlepony/unicopia/item/UItems.java @@ -164,6 +164,7 @@ public interface UItems { Item PALM_BASKET = register("palm_basket", new BasketItem(AirBalloonEntity.BasketType.of(UWoodTypes.PALM_BOAT_TYPE), new Item.Settings().maxCount(1)), ItemGroups.TOOLS); Item GIANT_BALLOON = register("giant_balloon", new HotAirBalloonItem(new Item.Settings().maxCount(1)), ItemGroups.TOOLS); + Item SPECTRAL_CLOCK = register("spectral_clock", new Item(new Item.Settings()), ItemGroups.TOOLS); Item LIGHT_GRAY_BED_SHEETS = register(CloudBedBlock.SheetPattern.LIGHT_GRAY); Item GRAY_BED_SHEETS = register(CloudBedBlock.SheetPattern.GRAY); diff --git a/src/main/java/com/minelittlepony/unicopia/network/Channel.java b/src/main/java/com/minelittlepony/unicopia/network/Channel.java index 48592fa2..67f56df1 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/Channel.java +++ b/src/main/java/com/minelittlepony/unicopia/network/Channel.java @@ -3,6 +3,7 @@ package com.minelittlepony.unicopia.network; import com.minelittlepony.unicopia.*; import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.server.world.UnicopiaWorldProperties; +import com.minelittlepony.unicopia.server.world.ZapAppleStageStore; import com.sollace.fabwork.api.packets.*; import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; @@ -29,11 +30,12 @@ public interface Channel { S2CPacketType> SERVER_SPELLBOOK_UPDATE = SimpleNetworking.serverToClient(Unicopia.id("server_spellbook_update"), MsgSpellbookStateChanged::new); C2SPacketType> CLIENT_SPELLBOOK_UPDATE = SimpleNetworking.clientToServer(Unicopia.id("client_spellbook_update"), MsgSpellbookStateChanged::new); - S2CPacketType SERVER_RESOURCES_SEND = SimpleNetworking.serverToClient(Unicopia.id("resources_send"), MsgServerResources::new); + S2CPacketType SERVER_RESOURCES = SimpleNetworking.serverToClient(Unicopia.id("resources"), MsgServerResources::new); S2CPacketType SERVER_OTHER_PLAYER_CAPABILITIES = SimpleNetworking.serverToClient(Unicopia.id("other_player_capabilities"), MsgOtherPlayerCapabilities::new); S2CPacketType SERVER_PLAYER_ANIMATION_CHANGE = SimpleNetworking.serverToClient(Unicopia.id("other_player_animation_change"), MsgPlayerAnimationChange::new); S2CPacketType SERVER_SKY_ANGLE = SimpleNetworking.serverToClient(Unicopia.id("sky_angle"), MsgSkyAngle::new); + S2CPacketType SERVER_ZAP_STAGE = SimpleNetworking.serverToClient(Unicopia.id("zap_stage"), MsgZapAppleStage::new); static void bootstrap() { ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> { @@ -50,8 +52,10 @@ public interface Channel { Unicopia.LOGGER.info("Setting {}'s race to {} due to host setting", handler.player.getDisplayName().getString(), Race.REGISTRY.getId(race).toString()); } } - sender.sendPacket(SERVER_RESOURCES_SEND.id(), new MsgServerResources().toBuffer()); + sender.sendPacket(SERVER_RESOURCES.id(), new MsgServerResources().toBuffer()); sender.sendPacket(SERVER_SKY_ANGLE.id(), new MsgSkyAngle(UnicopiaWorldProperties.forWorld(handler.getPlayer().getServerWorld()).getTangentalSkyAngle()).toBuffer()); + ZapAppleStageStore store = ZapAppleStageStore.get(handler.player.getServerWorld()); + sender.sendPacket(SERVER_ZAP_STAGE.id(), new MsgZapAppleStage(store.getStage(), store.getStageDelta()).toBuffer()); }); } } diff --git a/src/main/java/com/minelittlepony/unicopia/network/MsgZapAppleStage.java b/src/main/java/com/minelittlepony/unicopia/network/MsgZapAppleStage.java new file mode 100644 index 00000000..10bad6c1 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/network/MsgZapAppleStage.java @@ -0,0 +1,23 @@ +package com.minelittlepony.unicopia.network; + +import com.minelittlepony.unicopia.server.world.ZapAppleStageStore; +import com.sollace.fabwork.api.packets.Packet; + +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.PacketByteBuf; + +public record MsgZapAppleStage ( + ZapAppleStageStore.Stage stage, + long delta + ) implements Packet { + + public MsgZapAppleStage(PacketByteBuf buffer) { + this(buffer.readEnumConstant(ZapAppleStageStore.Stage.class), buffer.readLong()); + } + + @Override + public void toBuffer(PacketByteBuf buffer) { + buffer.writeEnumConstant(stage); + buffer.writeLong(delta); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/network/handler/ClientNetworkHandlerImpl.java b/src/main/java/com/minelittlepony/unicopia/network/handler/ClientNetworkHandlerImpl.java index d2dd56cd..6082dca9 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/handler/ClientNetworkHandlerImpl.java +++ b/src/main/java/com/minelittlepony/unicopia/network/handler/ClientNetworkHandlerImpl.java @@ -36,8 +36,9 @@ public class ClientNetworkHandlerImpl { Channel.SERVER_BLOCK_DESTRUCTION.receiver().addPersistentListener(this::handleBlockDestruction); Channel.CANCEL_PLAYER_ABILITY.receiver().addPersistentListener(this::handleCancelAbility); Channel.UNLOCK_TRAITS.receiver().addPersistentListener(this::handleUnlockTraits); - Channel.SERVER_RESOURCES_SEND.receiver().addPersistentListener(this::handleServerResources); + Channel.SERVER_RESOURCES.receiver().addPersistentListener(this::handleServerResources); Channel.SERVER_SKY_ANGLE.receiver().addPersistentListener(this::handleSkyAngle); + Channel.SERVER_ZAP_STAGE.receiver().addPersistentListener(this::handleZapStage); Channel.SERVER_PLAYER_ANIMATION_CHANGE.receiver().addPersistentListener(this::handlePlayerAnimation); Channel.SERVER_REQUEST_PLAYER_LOOK.receiver().addPersistentListener(this::handleCasterLookRequest); } @@ -93,6 +94,10 @@ public class ClientNetworkHandlerImpl { UnicopiaClient.getInstance().tangentalSkyAngle.update(packet.tangentalSkyAngle(), 200); } + private void handleZapStage(PlayerEntity sender, MsgZapAppleStage packet) { + UnicopiaClient.getInstance().setZapAppleStage(packet.stage(), packet.delta()); + } + @SuppressWarnings("unchecked") private void handleServerResources(PlayerEntity sender, MsgServerResources packet) { SpellTraits.load(packet.traits()); diff --git a/src/main/java/com/minelittlepony/unicopia/server/world/ZapAppleStageStore.java b/src/main/java/com/minelittlepony/unicopia/server/world/ZapAppleStageStore.java index bb936372..cb27244f 100644 --- a/src/main/java/com/minelittlepony/unicopia/server/world/ZapAppleStageStore.java +++ b/src/main/java/com/minelittlepony/unicopia/server/world/ZapAppleStageStore.java @@ -5,6 +5,8 @@ import java.util.stream.StreamSupport; import com.minelittlepony.unicopia.USounds; import com.minelittlepony.unicopia.Unicopia; +import com.minelittlepony.unicopia.network.Channel; +import com.minelittlepony.unicopia.network.MsgZapAppleStage; import com.minelittlepony.unicopia.particle.LightningBoltParticleEffect; import com.minelittlepony.unicopia.particle.ParticleUtils; import com.minelittlepony.unicopia.util.Tickable; @@ -20,10 +22,13 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.world.PersistentState; import net.minecraft.world.World; +import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.event.GameEvent; public class ZapAppleStageStore extends PersistentState implements Tickable { private static final Identifier ID = Unicopia.id("zap_apple_stage"); + static final long DAY_LENGTH = World.field_30969; + static final long MOON_PHASES = DimensionType.MOON_SIZES.length; public static ZapAppleStageStore get(World world) { return WorldOverlay.getPersistableStorage(world, ID, ZapAppleStageStore::new, ZapAppleStageStore::new); @@ -32,7 +37,9 @@ public class ZapAppleStageStore extends PersistentState implements Tickable { private final World world; private Stage lastStage = Stage.HIBERNATING; - private int countdown; + private long stageDelta; + private long lastTime; + private boolean stageChanged; private boolean playedMoonEffect; private int nextLightningEvent = 1200; @@ -40,8 +47,8 @@ public class ZapAppleStageStore extends PersistentState implements Tickable { ZapAppleStageStore(World world, NbtCompound compound) { this(world); lastStage = Stage.VALUES[Math.max(0, compound.getInt("stage")) % Stage.VALUES.length]; + stageDelta = compound.getLong("stageDelta"); stageChanged = compound.getBoolean("stageChanged"); - countdown = compound.getInt("countdown"); playedMoonEffect = compound.getBoolean("playedMoonEffect"); nextLightningEvent = compound.getInt("nextLightningEvent"); } @@ -55,32 +62,38 @@ public class ZapAppleStageStore extends PersistentState implements Tickable { if (!world.isDay()) { if (nextLightningEvent > 0) { nextLightningEvent--; - markDirty(); } if (!stageChanged && (lastStage != Stage.HIBERNATING || (world.getMoonPhase() == 0))) { stageChanged = true; - if (countDay()) { - lastStage = lastStage.getNext(); - countdown = 1; - playedMoonEffect = false; - markDirty(); - onStageChanged(); - } + lastStage = lastStage.getNext(); + stageDelta = 0; + playedMoonEffect = false; + sendUpdate(); } } else if (stageChanged) { stageChanged = false; - markDirty(); } - } - private boolean countDay() { + long timeOfDay = world.getTimeOfDay(); + if (stageDelta != 0 && (timeOfDay < lastTime || timeOfDay > lastTime + 10)) { + long timeDifference = timeOfDay - lastTime; + Unicopia.LOGGER.info("Times a changing {}!", timeDifference); + while (timeDifference < 0) { + timeDifference += DAY_LENGTH; + } + stageDelta += timeDifference; + sendUpdate(); + } + lastTime = timeOfDay; + + + stageDelta++; markDirty(); - return countdown-- <= 0; } - protected void onStageChanged() { - //world.setRainGradient(0.5F); + protected void sendUpdate() { + Channel.SERVER_ZAP_STAGE.sendToAllPlayers(new MsgZapAppleStage(getStage(), stageDelta), world); } public void playMoonEffect(BlockPos pos) { @@ -112,7 +125,6 @@ public class ZapAppleStageStore extends PersistentState implements Tickable { /** * Returns true during nights that the zap apples must change their states. - * @return */ public boolean hasStageChanged() { return stageChanged; @@ -125,30 +137,60 @@ public class ZapAppleStageStore extends PersistentState implements Tickable { return lastStage; } + public long getStageDelta() { + return stageDelta; + } + + public float getStageProgress() { + return getStage().getStageProgress(getStageDelta()); + } + + public float getCycleProgress() { + return getStage().getCycleProgress(getStageDelta()); + } + @Override public NbtCompound writeNbt(NbtCompound compound) { compound.putInt("stage", lastStage.ordinal()); + compound.putLong("stageDelta", stageDelta); compound.putBoolean("stageChanged", stageChanged); - compound.putInt("countdown", countdown); compound.putBoolean("playedMoonEffect", playedMoonEffect); compound.putInt("nextLightningEvent", nextLightningEvent); return compound; } public enum Stage implements StringIdentifiable { - HIBERNATING, - GREENING, - FLOWERING, - FRUITING, - RIPE; + HIBERNATING(MOON_PHASES * DAY_LENGTH), + GREENING(DAY_LENGTH), + FLOWERING(DAY_LENGTH), + FRUITING(DAY_LENGTH), + RIPE(DAY_LENGTH); - static final long DAY_LENGTH = 24000; static final Stage[] VALUES = values(); + private final long duration; + + Stage(long duration) { + this.duration = duration; + } + public Stage getNext() { return byId((ordinal() + 1) % VALUES.length); } + public Stage getPrevious() { + return byId(((ordinal() - 1) + VALUES.length) % VALUES.length); + } + + public float getStageProgress(long time) { + return (time % duration) / (float)duration; + } + + public float getCycleProgress(long time) { + float ordinal = ordinal(); + return MathHelper.lerp(getStageProgress(time), ordinal, ordinal + 1) / 5F; + } + public static Stage byId(int id) { return VALUES[MathHelper.clamp(id, 0, VALUES.length)]; } diff --git a/src/main/resources/assets/unicopia/lang/en_us.json b/src/main/resources/assets/unicopia/lang/en_us.json index 348b9423..a607365d 100644 --- a/src/main/resources/assets/unicopia/lang/en_us.json +++ b/src/main/resources/assets/unicopia/lang/en_us.json @@ -44,6 +44,8 @@ "item.unicopia.palm_chest_boat": "Palm Boat with Chest", "item.unicopia.spellbook": "Spellbook", + "item.unicopia.spectral_clock": "Spectral Clock", + "emi.category.unicopia.spellbook": "Spellbook", "emi.category.unicopia.cloud_shaping": "Shaping", "emi.category.unicopia.growing": "Growing", diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock.json b/src/main/resources/assets/unicopia/models/item/spectral_clock.json new file mode 100644 index 00000000..7e95d97d --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock.json @@ -0,0 +1,29 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_0" + }, + "overrides": [ + { "predicate": { "unicopia:zap_cycle": 0.00}, "model": "unicopia:item/spectral_clock" }, + { "predicate": { "unicopia:zap_cycle": 0.05}, "model": "unicopia:item/spectral_clock_1" }, + { "predicate": { "unicopia:zap_cycle": 0.10}, "model": "unicopia:item/spectral_clock_2" }, + { "predicate": { "unicopia:zap_cycle": 0.15}, "model": "unicopia:item/spectral_clock_3" }, + { "predicate": { "unicopia:zap_cycle": 0.20}, "model": "unicopia:item/spectral_clock_greening_0" }, + { "predicate": { "unicopia:zap_cycle": 0.25}, "model": "unicopia:item/spectral_clock_greening_1" }, + { "predicate": { "unicopia:zap_cycle": 0.30}, "model": "unicopia:item/spectral_clock_greening_2" }, + { "predicate": { "unicopia:zap_cycle": 0.35}, "model": "unicopia:item/spectral_clock_greening_3" }, + { "predicate": { "unicopia:zap_cycle": 0.40}, "model": "unicopia:item/spectral_clock_flowering_0" }, + { "predicate": { "unicopia:zap_cycle": 0.45}, "model": "unicopia:item/spectral_clock_flowering_1" }, + { "predicate": { "unicopia:zap_cycle": 0.50}, "model": "unicopia:item/spectral_clock_flowering_2" }, + { "predicate": { "unicopia:zap_cycle": 0.55}, "model": "unicopia:item/spectral_clock_flowering_3" }, + { "predicate": { "unicopia:zap_cycle": 0.60}, "model": "unicopia:item/spectral_clock_fruiting_0" }, + { "predicate": { "unicopia:zap_cycle": 0.65}, "model": "unicopia:item/spectral_clock_fruiting_1" }, + { "predicate": { "unicopia:zap_cycle": 0.70}, "model": "unicopia:item/spectral_clock_fruiting_2" }, + { "predicate": { "unicopia:zap_cycle": 0.75}, "model": "unicopia:item/spectral_clock_fruiting_3" }, + { "predicate": { "unicopia:zap_cycle": 0.80}, "model": "unicopia:item/spectral_clock_ripe_0" }, + { "predicate": { "unicopia:zap_cycle": 0.85}, "model": "unicopia:item/spectral_clock_ripe_1" }, + { "predicate": { "unicopia:zap_cycle": 0.90}, "model": "unicopia:item/spectral_clock_ripe_2" }, + { "predicate": { "unicopia:zap_cycle": 0.95}, "model": "unicopia:item/spectral_clock_ripe_3" }, + { "predicate": { "unicopia:zap_cycle": 1.00}, "model": "unicopia:item/spectral_clock" } + ] +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_1.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_1.json new file mode 100644 index 00000000..400741ed --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_1.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_1" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_2.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_2.json new file mode 100644 index 00000000..787a4b8c --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_2.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_2" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_3.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_3.json new file mode 100644 index 00000000..8913008e --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_3.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_3" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_0.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_0.json new file mode 100644 index 00000000..59db2a20 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_0.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_flowering_0" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_1.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_1.json new file mode 100644 index 00000000..cfa05c39 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_1.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_flowering_1" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_2.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_2.json new file mode 100644 index 00000000..90307acf --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_2.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_flowering_2" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_3.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_3.json new file mode 100644 index 00000000..110a9d8f --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_flowering_3.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_flowering_3" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_0.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_0.json new file mode 100644 index 00000000..c076b00b --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_0.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_fruiting_0" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_1.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_1.json new file mode 100644 index 00000000..8a9faa82 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_1.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_fruiting_1" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_2.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_2.json new file mode 100644 index 00000000..cae50ca0 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_2.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_fruiting_2" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_3.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_3.json new file mode 100644 index 00000000..d2a97210 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_fruiting_3.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_fruiting_3" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_0.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_0.json new file mode 100644 index 00000000..8f4d3428 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_0.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_greening_0" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_1.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_1.json new file mode 100644 index 00000000..3633579d --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_1.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_greening_1" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_2.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_2.json new file mode 100644 index 00000000..d36dd4a4 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_2.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_greening_2" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_3.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_3.json new file mode 100644 index 00000000..03151fdb --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_greening_3.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_greening_3" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_0.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_0.json new file mode 100644 index 00000000..f8322a56 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_0.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_ripe_0" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_1.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_1.json new file mode 100644 index 00000000..43b85fd6 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_1.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_ripe_1" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_2.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_2.json new file mode 100644 index 00000000..7bd07507 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_2.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_ripe_2" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_3.json b/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_3.json new file mode 100644 index 00000000..60a8cfd9 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/spectral_clock_ripe_3.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/spectral_clock_ripe_3" + } +} diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_0.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8591477bcbc653f06f96a49337929768d2bafec3 GIT binary patch literal 4695 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 SHn)JJfJ{kgiAUm>7XKIX`+r9O literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_2.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b6ca8164b525b02dc92a1d5222619dd437c1b17b GIT binary patch literal 4703 zcmeHKdsGuw8lM2l!}=_^AZv}$Jr-p$lgWc*BuF4ZQVnGV5nb&%nYoE0NhVGP2zDum zTJTwX;T}ZAU0-F3wz@}JU8}BdS6dXNcDLeV&sM1vb*;~%>)x60^0epd@to~{B)PfY zeE0i)_q)IQ-7mRIGBYOjj~Et#AV_~}x_Juh2Z=4LFZ>>H{{;oRMv!ZDSgm7`F!%s1 zWg&=6w1G|5Lk^M!Bf(JjK5RpvEZT@|n5>V~FNbn$hrAZbZ+6%OL0KgWLi)qL1~vl9 zk+83WjV%w%^*NNqSD5rphmwfg*-y0EGUbF)g)7xM=#LW`5+_JpB_~uQkwB`{&{|g8 z9g&E%pAtWGd~WOP97218y|J^dbuGpia}3fB>PMptBJ zrp82Ft~kGIjeVr;X84E~mABWQ+E)3e*V0z@$=+frcz&(q?z{VPsJRy=MT{wJ|Ha8C z(S1@5B=2q4Up=|9DN$DT<>7TL52wW*ZX473VBb(<(9?zm%Wm)6-X>c={_wRmBRA|B z*M|*X9CY`+w5w}_`+63%XgN>4uOU%fu$#L~3~+wZq;`r@9>_IHjS@#Kezt&6Bt^&*dB#CbF{gDvz$c?(jv#nR3@a=wR2Hh09Ph+b z27>{^35+06Xo32QJObrMJ-$&QL;%AKd^FE`1(x&3MNG=hJaJtfA_Y#??UlSB*)LfNtfQN(mtqq~q~-Js1iE+OzGU6G zcF7o8*=(elqw~e^tY)J^oS$Sknq^2y)T$V@N{8!EO05H^Mx$X+I{+G#VC*Wr0~lzv zBcTVB)#DQ=4-G^p2(Dxyj$Usk0G^;i2?s@?8ogSDQU(W&;(%ain$oHh0MP^DZJvc$ zNx6DPB|IqYi6U{5g6gkFMTXfloC-4xtT)=fD9 z=JhzG0g-Uhlxa082qoUF$#hYI13DNLlUYx`zk48?b%QK{64_KG;5t1)=+zpnPNUKV zVwUi70PlmDC}K*rQ*sx#g@lWN#8P6OLI6n**FvW9fD$-9o8w$YMOW4B8n(gX#83id zrUU>%yXtUuXB{4g<0KvkUxc%94C^TRU)JK`ktafXxaH}r56)jCsRAb|3(N~V1s+|j zbd=Ll0E?KsI%u`#6VCNb$hrggip7V0ucwQ1UmWjf#6Ymclte+yzJ&iW4ZV z>Lg6lK^WGtU`(tTohwene#A+lWYD9?K)-+v7B5%}v94m+!5NJA=X`bS#m_l~T;4m$ zEAiV)S1(V_hwfwU9ZHzD;f7@*Z+;Ki0KM(soGYz~n zWktgiF22N%Ue@8|PTkU~`n0e9iD)(*x~@bXX@}pyW6x1vRmQ^4uOkOrR#koE{rBm_ z9Sh%SDLEG%Q=Vk}JlgcuwB;X9@Bd*$@}!)~N%=`9M&Rwkn_RJHt?nv&Q@nXceCdn^xF3m!H- zjo7~jo96w@e5QnHd>HTw#}>?sJw8KS+(TrL0dN7G44IRwPYqz(wORKaMf6l*4@uO%5*0kY2c&nh{?9uu{X6|o8ezUHj8^NI}=iWM&dZNG2o$1X}#y zL-C7MghLOas8v^S3#&!!O6$i8+U~kmm&)2&L0MNpJgBRyXr=C(;rndQ+2c9e|47c8 zcjvx)fA7BEyYD7%Q{s}v?ryW)AP92T#%h*=-ji)EQ^0f1lh+vNu8^r(gH{^^xqug7 z$#a5utPNRH8O2if^&f1}ck$AbV}$4t4DLMDNmsq=N#Vsi9>`rz5AXM@Ro6 z(`R$y+;7}IK|lKZsYi{>f4-=^DD&L8y0-e_EuS{L-B83IaO{3?>p+j-mz~w#%UkWY zABSIVx%a5EaNU)|@L%t5cC0b)>LnIkx|`B=CD_Ty^PI~C(lE$%!@C4ofow% z{Ip-$b+NoXj92va*{aTG@A;j55YYSY<{4^-mnYY6>1#gpfL9%Q_SVk1yN(AtQ?8{B zkJiL=RXR>FukV!8=1*+3;n1v_W%s8jl};BnSANm|q<_!lKMvk#uj%sGCbu4o-r<@9 za?nmCr!uL!coe5iB8;H*q{wcvup0)2Mc6GEo=Gx%J!z!OYQe*nGXg$Es0HuIb+FD7 zMP^X31y(YtU`aAwkcq1ZK}5J)m>mTGCX&JUc2kzwhT7Ev4i^P7s}>9RoC%Yu7Nmka zilVI~UnY`?U}3bK%0&d>Zu~GSVL+E^Vum5Wn_7^;FcwrS&dbXaT7HI;eHZZGX!j$ZZ8}(o*Fj6K9=LN`~V98L1F|sDa#*T2y86OC6AH|(uJ+gMr z7+C3asD{RK*zmL(wSb);C1{)?P)xFu~R4!DgNR@5d~%lkzz7w$T)}uD+RI= z%NidQ3q=4ZIjq273`T?m2~cEuk`!VDY!FJ6a>Ss=6si!Zl7k{}G={dCFtDAJ2{V#n zi`mExu!N(LiCVP)5y4}c#4L<400*@oo-*gy#|Dxq6Pd(dESnMq9HK-JrA!K*3JEf1 zltNlA_miC@YCEv^ANgv($posyjNY1ILNL7)*mP zBmf<)!^tCcI2eXecqn`pPDc}zA^(3_vxkQt2JFF>$5J*he?F%gI#Eev_R!nVYZk>F zB|e`!6exxdEy0H6k^~ngz#1CDGcdD}1l40WT}SlPPox5_$6-Phf(RuBkN`3qmkU*x zf)FB@Uapj>3{t&eX#YmhZM1>O!>nYa5%37O0_n;9Lh%E+jha6(mb?s--336H5F`mK z86iwMOqh6h!D6;%jI20J{9l}eaR%dx4DcJ$f#L;fp?I_y4s!SB{t0lL2pfG8xN|f^##hQj8+#twa0!a&6ulEsf0zbt*+rI*i;e=XDp>y3uU z+LnRTR8tCeBCRw-*19{ht|UWNa?Ri)UUjGS@};7IL0QnN+&ZYIz1ZyY9CC?|{?6xS zacj5H*W$5S_3>5Dil-0zWb5i>?kk-S3H+ziha*s=-}&+N?1aBJYyW&c zewD9d`khRzV?^!F7Y%`z-aS)9ZClfl;6L->$3Z&l@5+5!t3GspUJ}=LyrS{;(=X#U z)NQXf|7!WvIsZ^yD1QHQzg6FTbtKXU)ji?=)1-q>KjF~_6e#>v~3eL=d8_R?n`RL@%S zE&Y7clX(Fy)7<^`p>c$CdCv5`j=Y|A=sHb^W4h;aC#D!$-gN!2q2TV1&dcU~AJ`K) S?L&|hkT!aWreRTf(SHD#oqQ?) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_3.xcf b/src/main/resources/assets/unicopia/textures/item/spectral_clock_3.xcf new file mode 100644 index 0000000000000000000000000000000000000000..93e0c89a057b9e027becf956b6e5839f51988e7d GIT binary patch literal 9850 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_0.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_0.png new file mode 100644 index 0000000000000000000000000000000000000000..31063a116b45d3028765c23d6b2460c51ea90973 GIT binary patch literal 4711 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 Vx16&z&*V!4(x=VQHKr^s{|`P`fA|0Z literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_1.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a69d288d0a186282cbbbed2478ada369e05eeb0d GIT binary patch literal 4737 zcmeHKdr%YC8sG3XR^?J3C|+GsTT$6$vw5&t2!bIKp)DtkRb4PeCI0?bZ40?ok^#g426IPfD{Bk z0v-dJpr7q0@Q3`t*fP+`e?q+96kzepJ^gf@-T-4_DJqsJfj^4L2^1qxDU3-83@7ArfEN6tFCw0) zV%aZW0hVG`qcP|-8rb2qn^+42L7v)zHR_bZhT$der*9OE2#zhq1HNv&qScPg8L`q3 zc~Q8H`21gwhgHibOcJkNnse~r`lEG4pX{g~TE7&2=HJ$FW5XTMyDe42|9Zr8^HKci zy|*8>6f8Nr89jA(rGK@prk$R4@~6zBXQu=NgdPlOW=x}9<&{hA1=rIhm*$k2pFe#$ zyI_8cF(F~XYT4nPD`HB`N^4PP{DR`O^x9{&ol{;PPChwv;TQO{ z=#jBm?ej7*MH}0;xvsrZLaQ@X_63(GD=s%qTukB(4biT3m(lX9BViLt4F=8V5m!pj z)mIoJ^|uF&fA!hDsvkCfw&ktl)qxpbCc0nVSp0C&?o4w2`5D5AOYV<4_B=dr+TMg6 z_wm+at1rX}mY!)^+w$ath^CH-?OnS^s{LMkSNO@j-J3cDRk2MsDk5vPPYGlPmH0jU zIJvdbKgd?tqOjYxxoYE~(bco=2H|)>^UBJ7_dD-@aeB|oA1_q54qK&geyd$GC>P|Q zht0_1vh*_v%5D{twB5*vJyr*QU{KstkAtLg7!EcvX4a+_J=l9d1hceS^npT;>Kz&; zn@w5hWYQO=W>5=rC>1T58ZV6V5P-nSa3t)pT5K-DqZWC231IWX5)tf$a5-vG7RV!w z-O0dmv0RKIS`X{SMDap6&Pkhyw4~&23h<;BWpkW^kVx|K^2B*EvE6BwNL4D81jQs6 zh5!WO%C~W(2eG-{;VFC^NsNnfvJQ^5+hCrPG}?1HwMYc!;hy-c4!ypY-sb970q7y| zkPeAdj7qFlNq-L)r*#98?tp&R!l3t{Vrjx>QW%cmloY{Cs2q_iaTHM*aU7v!vMFu{it*{ z7f0GChNlALVixcyX{E`iG~$Q~xFB*9sz8jCG6s>63K__pwlLc8xTKY%D zQ_+BmR;d^%1qet~Nh5NF%!H_zm>2}bjWU{&f@U&#sc4EwwmYpPI8N3|ni+}1X7*0- zf)j}bomzy6(Y_Ibh2%`YK`ole+HyU86B(?PN#{sjO=%3O#4${TDPnMi48{6DnT*o~ zGLh%>)=uvXe=G#p3=o#&^Ar$x$H86*jguicyEDUXx2Q$ERkwFq53UnUa%2+8F@UtU z4rlb#;VCFepuX^VI=!7{P5J)|&0iik4&cF&r?4)te!h3eccapo1->WWqlNWeB^dTz z3WB73TX2zX#&_O;%Qr=3lQuI0sz-Oa_KdT?lM1NRNKq>FFQ8wM0e-$QP`p4bl=K$EZp}cvf8?k8EdIzPV0d7WH_~@N zt^v8;NP#y34`kPXTyLbn8-WM1>;EQ~uv4LMfdEjL!F4KAzyl4d(XG~85ulHe4 zXwB{!%fZMXN6Ks$1Py+hZvv>gHXIBFb2_~?_>P}o#8^cC!u%Y9{Kn~$5;O1a_3@uOXMi94CH<=3z}I}5Pdx&cwXC` z=&lzF%g@OZALJ5cKRZ_yH8}!mS~a&KzvWD0I&M8*!@7mB5I1!&95QXAf7dR-{<1h` zk?imjQ_zpQqSaLgwqJX^{7l;FPunt2#bn}}@13DK7iH~_J>6gt-g_EQvTAH|%eXNT zcjWC(ZasJLr+JgZny2gu-*f)xO8<@z$8FswtS#H5!()e6O*~yuwrN+f9f;KNv1lE;6D~HccDN!tX<==JloYSpN9s!aE(rHtZ>Zi?H`d^)a BlllMv literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_2.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_2.png new file mode 100644 index 0000000000000000000000000000000000000000..698a20a7772c5c463dfd06eea3380db7e3b12773 GIT binary patch literal 4717 zcmeHKdr(tX8c%qLP+vt<@KIxQ>+>czHwk%20C`7^WP~Eps@%s(xIl74a)E$i5fmRN zqkvkGqOH%O!dM+T#TUNa)kU{4h?>A<)^TPAc742FFm)LNw+qJ=xVSHv;> z?AufYSys}ap+s-sM+aFRPSMJB1ZEhlz2R@-BUMf91ncDW!|kFljfZDR0(J{uEbNSI=;KeiJQ@Kj%GZjnNqDH==RP zwW<vOy&=eCZz*yigVaxC~r ztGfAO(RTsDysLGan|@g^rtb0Nhc9YI>Reubv!d{)n!S&OTW8kYDVebS>*?;a=PH+{ z%OjdgT?bfKG$|SDAxC+jz_0A1M+4Mqw+rh^PqaR7t*HO@%@5y|H4ojOv>y)No*l8y!aW`rX)%Lb(LfrCl6lOQ|;SlNj^DJZfl-j;4p<+nqT zQjiKP5bA)l%6d)7-MFp@P69J+vGGw*>|RKgHg${DYi-;Jznz{7f#F@ez0jR|=fMzV zFlfUVGM!tVK1?U(=GRgTNmE+hG*N1kO0HBQYNZTC6cmsnII2Mrl^j+1qZ&f3An+bk zdaHxQtt8;6Ai0EwJOogxa018>4Uhpu0VotvV}ug%SIAXBEh9(*m-V2Cw$m^x@zkEH z;;1M{g;InH$K@tOp;G%pDiw-oNJ4=S8h=cw@Hd%AIm%N}q&9-FTX1-sv;{WEtY zTzyiYPvHLS>X)le3iJuwpI!eqxxBhxr+^jy7nBKKmaYzMy8>Ud1`u;1!{F<^w_w=z znmMbX$I}+I&>;}KH=JuiL0P#kbb7FQL%7ES7vYGp%EepWRSN_zUiz?EvFgj|#Y>Xr zr}X*Z}NlMDU-usQmx1*~6I_}kJ&A;nkI)=22b&ZU__xj*1zo53` z)Pv3Dz}dcK&s`g4_-_P$!L9BXTWBtjrezQtZzWXh@u0ulmDY6ob5KWNk=tBJvpTlN+^nodfBiv_vSor$FnXBr*9X(vT$*7Fj zlbuu_ZAFF#x1Ps}5(T;W_l3nL{Zq!FS2OI9#n>mg!hIXUrX9HO zVeYNvKhoLzyiYcGr+xCi%*%8y;n z;NO#*3)E3Z8WVM!E$=e7-7h`y%llc^bGD5sdY+K9`uz3cghd`kk-#fTc<#D)Zp5wO k4TD{hu89{GXWxJ8;jyxDYMYzc2@^%251$uS6_S|uA81C3%m4rY literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_3.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_flowering_3.png new file mode 100644 index 0000000000000000000000000000000000000000..de3e77a6a137fbde685cd9052fecf64334c742b0 GIT binary patch literal 4716 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_fruiting_0.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_fruiting_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9be87cb47b1c52f58b0ddcb53d2e17a91d71a2ac GIT binary patch literal 4708 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 bK6wt!t+)ae#B|*S5dxV_Gm{P_EG+ylj}?sd literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_fruiting_2.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_fruiting_2.png new file mode 100644 index 0000000000000000000000000000000000000000..78c13d32b2cf77fc9678a805eea15666afc141d8 GIT binary patch literal 4714 zcmeHKdsGuw8lUinu0mOK>w8GuRn%l2nIw~#@Q{b35{$qi_V{2jnTZ4BVJ0yF7au5! zXb}}fkydTdDsFvCtN2{8)>f_5*6Qwx)}A9iQI{66r`Ej_p6>RXJ)X1ukK|nLH~0ST z?|%39efJ}?+>ko4U&!DP2!i_Qk`vNEA11V*0PuH2>kA5WmzXRatJ95vg1`eniu@pv zfB{X^%k~lZLcU;ZDQMxq7BE5^Eb{mED}g`mw5%xi)Tzy9Y8S6Ku)F{6BDmf6)`Ochcf@~es*HHM!Smgd=!^Bu zkDCe?UfO|PxL4|1W!-ewG~xX1%rlq9`uT;O3i^~`2k~nvifo0~(~)mxtTaD+`g~ep zPLnY5IR4!$=$fpC@R213L;RotS4$dq zuQf*Mn}bKZD8FC%*|zdsze_6f&)6C__xa5QkLT58QaN8u3K_Mq`Po7>;gIH z;WDzES^5+;ZL>%zlg-FTJr=tVFh~>Qu~T#|x(IFa-8W30*Ck1;fc~)NS(TcsiYG4b)h#2-loVi+Y7RaM` zn}dM~DIrBAi5_k)E{+a?H4YQ2PD@DYqySG^@ocBlu0{~I+bwm=q&9~c!Bi?0g5n5{ zO8`Q`=UbhWM`GpQ6ev145*VI#aCRqWv%&%=Wwg1RTCo_+!(IMa?0S7Sy_N4&0qB8v zC_92lQN&_FdavM}iE{x-r$fKGg3rjeGe{c4+guKsNu0}Aop1K0Fwx!X?Jh^2_c$gR zVe%LYfbw8h?4>P*8`r%;kig7Y?A}#C?3a*Ej_ncaCEtV@?{RuN0+x64zJ%^NyB7>l zdc8WqM!N*}bO~Cqu)o@5qdAk>Ybuqjj9^U)32wqr385fp3CSvG2_ZKT7=bJ0MpD^} zN@wMrl$B-#DnKsf0FO~lnv{%OCc#*YkPrleNl2PjNC-@YGDcd)%4Mcr6q6ks$Vw`& zw^ss{2~f#t5+zuSl*mXDmk=tl|&CH zlX37M69rCh?exwFVNrv_0AVR1PXU2<9GpcR?_emW&5>cVYXBaEJelLc{`uaajvJNE%;|XQc+BIx zR|$r_mqJa^9Y^4)xlBi}09VHpJ)5$c8Bjes)3s}y`;}C{Q8^=5$&?b1Iv{>BmXxTB z3Zn#NP=Zt$S(!pz4(eBxd5CtHZ1jQvN z_Md_wod-sQn$dM)4f0=_XuN=4MFyMTp>NLQ;Ze-3UY&&B|3iv3tqGWjFToNfYhb=N*ymX=<=b#-w=*w!6E1yLi$gw6U(dF&?>>fnO=k#{1O zhZKa}(WSg-q4I$2Lr;{LyX^fmzw9Z}$BcE|)lDuuc;n=+{N}q?)s|IQXyi6d4GzHWhr`D|J2j2%7Pe{aby lpD}R|^Z7X2#9dc@@y)@md~sbP7jY0qb literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_fruiting_3.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_fruiting_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ec8b07b9f210f5db669a26c13ba65bdb1d5556ce GIT binary patch literal 4720 zcmeHKdsGuw8lUh6*HtW7#aE2@#7SoIP9%ts04W9{L<(JTon&spXkI2mh*S`E()wi)LO(^AFSoLcZPSj=j`#E?SCZaa=-cR z@B7_*fA_l|nK$(*iDN?|LJ$NQt4&g;!G1i`f&$>*84sTmu)7E{wPvk$0TKisAd=&U za2O11oME;P#~1O1zEapGK%2oZErR3E_M4$SrQfcB_PlA_^^{@${9R~Zo zuu)}wa~*{?^9f?VNzh`L2l_;}VyCBOORD8T%8z0Ygx*TT83J}CwU$9k`bX*@+lA7MY3lCgWF8AAW_^L)TbxnAM ze&&^skCcBn^5eK#apZh{W$~J0$NqS7@20m7?)&Y&V(wGlj(cspZ}Vnf-yZhb32*y@ znDb4Y-Pa3>E`Esp<8Fm-t-bCJ8F%hh#>tCOetzSR1)T!s$?mF}Vn;!1y5Q^V&6b`g zy;%jTuNz}yBP&J654|ZXw@7W99>%PFV;i~cX}$N$-D4&!c4a?!`nLNL*l0;Ow={o; zJZ|B{MVWV2We6o5RL6&V@6-rLRffW`wq=2&(4Gu9r{uO!ALw ziappRzj3X~&PNBL91 zB|hDS2{&qd1MC~GOC0u(-1RZYLa$Nr zGGQLYJ6wP(=8O3ls_{}DAulF`8|@;^$~1LCKLvbJ@p5R|sT2tE^78n3BEG|A5#S1i zLVyVcLLmwfsC%8ACcLQKJ&U2}<4^;)$wfJ7%3zqK42HcKZmkDS*z)sH^PC=Rm~@AP1cndtjzACW zodrXbPN!5mOu5YRv}zTPnO{jdOcbePO$;Z2R4O4+BP<7~7$c0RTr46`43iNik;I4t zlW-W7*6yYWy9qEAt8;ZP(n)OA~OceVtg1ys*8eI zNmz%kilHJQl?<4TA{>*VB#DVou~95UO-(Cp*F%ixO@I3QI6~3JF+0+>0{a1qj;VGB_Mo6>qTW4i4+!bs`Cx zP!lwOq=R+XFi?l1FieT{EuW#&IY`R9?th_~%fpR^czEPVlpD^!j&=3jsC2Nl@2T(6 zO0ido%VjTxk}&mc!A*Do$*vP}^$nSF2)hNq>d~LB1AgikQUSvxB49F0P=JdRs2Im( zs8Nm)sF^eqMzO>!C1m1}>~4pd&Ldo4i3REiwSwu%{)ghuV-ITnNOWEfU`_!FhQe&c z@Sh7N=-;q_sTl)1ju!lvCebWlSdoEoeLh&cU@a637Q=qcn6mRLe)`YiSDXP-k52MJ z`i{yqD%T4s@Iv6x>>8Epg%o%p@Mw1Z-{cAzdYuAx_$w$6zAR-`-+TwYXayLP6V>qb zegZPSt}(d`dV-xvS#AUw^AgiINNxQj=nSN_I!)khA5QqR1%EF&J_SL1#%k3|4Dz$N zRoOXJMA+#K`wtd3My~S@ot74Vjr*)BQwXkny(QbAzo_%mEcCpTEe;4Mc~a2K&1_oj zpDjL|MAFOjQ8H_$-8Jhkxq74MaG{`UIG z56lU743>YsGAUvPCpIc$d>m4q!fjZ-zWx2cvKuL$nTg%)1<0<>{j1!2Zl;6j>r+At z6%B_t5hnxrWs!7YzUEd-hc&U>uY7K5$v5{xr>B3>U8{#)mfw31J+k;~YzKMMJ=!_~X4XiBNmsU0@BD;Qlv~P3ZSpl*l z>H_}Qv(|I|T=zk|pbAP4JA)|j$YAZl~=&TG??EPWom}RZfN!&p)`Scav9YSUR_K*||9ZM{i!N2rt}G+a{=6-y}aJ*-+Hz_%Z89N9&cy*A9Gn zch!udu$R-o)WRk@D{0$-&ka89i%z_9wqnKZPq!{FO=$gW`&XZIl=2_7`&?bI;D9$_ zM-%dKUCHmx{Pa#;@8R&y(5TYsvy2~vG~a);IPJ6K)-%TF`h7N zjEG#{w!eIPsUm#hzux_}AX#jyzR(eVY~%5%d0nw literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_greening_0.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_greening_0.png new file mode 100644 index 0000000000000000000000000000000000000000..54c1277e7b215f0663492aaefd9573bae9490ed5 GIT binary patch literal 4691 zcmeHKdsGuw8lNC<>Piuii7t!2A+hNs=0v&VDV|47c|e)qfI z_q*Ty-S2+nt~4bj3=A9*h#<&7Lt<<)?1TB{?+gEqZu_2s-6fD_uow&xh(8=aOOZDs z;%#6P^^v_q1CRkw_W^7nQ08s;HbUeh^lP9zvP&+9a(I`G7nEfpFJvI>D`6v`918or zu(3s*YyAbv{KsGTCPIlv?(P!|Mw6J3%5bS%1^sbCLE;37%fy6?B-Er*1+7IN^+v=a z{jv0_7NRU?^?H**uNOO{w>h+kx}#{1)%8*y=?vWBcO zg;!2^VOCw;j?;UWtv*!si>gBL^8xoB-`V*;)dQR*N3YqMj^Yr;zR|8m@5&!x0yzQEp zw}(ciHP1~Yl=s+sd-gV$V~j3U%Vl4SP+qGUzl754-~YDj!)thH+NqGS#U_(}_>ddL z4OM04FysAz(ciCswE66=^`E>EU*ePU+vxcncb2p+tWKroeK{>~d_l`w^)H6`#MDkX z)S|gvUvfE0RCw|D#>Rio9(nxn_~vh_hw8k({qxe*kE;LhShP9v_?@z_Z3id%umLN) zS{KLPE+61)U)reT?E74mlaS#RvmW|tG~Q=cl^<=0 z=Aeg7Npq(er;{{ilTr+422zjB!5tkG~_wX%)7^ z&={}+8#HynRb{U%$=|ph51xVy*5(krAla{2x>-vvS+B&#&j{P;8whmo!F|QLd+&lV zv@#mWSdPx&!!yL{B>eg$!_h253Zg{|C=H+)l%^;xsvu|usxd1Rs9Y%E(MOBoXMipiij%qao9I9jlp_MT}uC(-lnBin$R#Mi! zQSnd=gi>n=Kv@(tYBA$xR6%Q0s2M16)FM-?3S^&Udy;YyZY&REe2l8xIepoGP(kLpHsjNe+A{j$5Mlwd;uR?zUFBOvG92xf&_1? zo>l}k0gl9XT?i61m~SGaqH-8i`ne6pIKKy8q9G%-!>Dn3_?m7t#73uR&aWt)kvaIC z;G$#3g~8b`>qD1K7UJ|BiqI`+kGlR7KuQq_^t-$)Mbx-9!89d`B1l6p_p^N@*k(e>-B z%~!q{(N1FxO>d!f|EwClzVYnuBeL!9Mq<<%8^op7$*k6XN`s2r@Dv0UUop#!e{xA)G~aOsOLs@8t9W>wIJvQxgk zM@`q4UCvstyJpZ_Jz`xyM|pIUUu*HNy(*%Sfg?WM)P}m+5%BCvNBES88896XLtIj9 JRm|MN{{jHzfvo@l literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_greening_1.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_greening_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ceabe352c7d39f510543597bad4c2e7cbb5ebe GIT binary patch literal 4719 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_greening_3.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_greening_3.png new file mode 100644 index 0000000000000000000000000000000000000000..37fa366af98b379bcde7e8f674efb20ad48ed794 GIT binary patch literal 4720 zcmeHKdsGuw8lM1yps0uXLT!!FRzxS6%;Y&FD3SnCA}JuEXLUPCZo-r#6EYKsS}foj z6%}-Ck=5F&wR(J8-AZeHRdH*(iq=A_+Z7Y;?nM&@ILK1dpu|RAIZ7gZ@&Ax zzx&j<>@Pf!0h30gdJTc2n!nuNGmiirsYoR8r$62nPMD#WEEt|Fx}h!%X*5fRVy z#+LVBpn?T-e7wmJA1`!!7#r;X2;!^AU#(3#Vd}pyC2fmnKuF9IRnTXLujuu|vIi8K zMqCWrNq+EUW8ZSws4?P_qU>YGHh!~x{<8hM`s^waJ`cQIe{*xK=*^mS{b!u?-D-&a zzVhCan*4%u+pzEM7YCNR*4J4lp1qs#&AG8bLH&;PJOyl#Z0VXJCjWYx_v-ukan;+$&no&1&yHSZ%5bG{CnEaqxGZfo*f*h4QM)4xa`5ft@VO+F-LEfjaa{LY!5ng zVZf7l2{+aR2D=Jt&ymQTGOtWpJ?Dqi!|qo?xbka}khW??)8t0X z=#B?jbkZCTNSiYy-7+WJqPB|0$A)QqBqVSGjuQHu4i`)Mv?4z*32ojj5efYeE?XDiNCd})ZSgtXMq@j@i)~c_ z>LKw_Zi!TkNt{ke=NT-g&xItd0sZC-Hhs1mNKygIcs&-N&jl`SWM>MirG38J>v8zE zW3@0cW+_lwDS}X{ZRSoCDIOYTCFSTG z6;EY_R5CSYmJW=shbW&#ijmD*2bwU7yn$4SBCq@9!u#fT&0%d3WZ8ZbbvB| zhlQEQbNXwie}q345^e?xOYwOM3H*Mz7c$-hD30-@GmJwkYOlKO!$x?WtQ1G-C=Ni< z_Bx#2R)@!87>Tun&(j$hD{Y(oztH^U5o#bF9(fYY!u4nST`e~%4dk>uwLCg#|5XwS z{g;BIEG=7Lsa#<7#|gPwhAdf>%MM`mXie8PKm8l204R%s!W3pyVKKv0kSj1$g-a>a zN&rCFtX6`s$-A<%jE&2qJRr^vb%a{M^z{FS5=QwCYD`yjUKZd_0Sbmnsk;|>C4IZ) z>Xz%36nG_YcXoBl^-2o761Y3N{%>-Hb-Ydi7yK2J2Va)9J}B4;U$lbFlM{9D^*#dW zxBlSd#n2P#PMXdlNUzuUCP2z72192EXE5qRY6AoVhV}iR{H@m!Bp}?Ni%VC1>n%;m zD$N;udOR7E$y_qcVJA(Td?rpmX<_nwS47R>Ne}nL?I|-Yt~ySg-x*hLdR~LqRy#8n zzrDwC_|$<6Ve-MPwYushS$8&FK6GN4i=$60;F_OY{DQdBtcb3QPTh zT{1IMbT1ogs13dmxbe)3A&&8tRUl>PWx>efo6`2)VTRvB8n5>uu>wQ?!B+`$M34WZ zxEjX3SmcZP?#f?2+_GZ%soIzepX`r=E3DK?u%!XW7G1>Ymdh*^G*(L9_L9ydpc%JM0!5E z+Rq8az54mSrkX)NZ-{z1Zq}XcFE!JKjh?HojGkJReIX=>6d|u~Dw(i-RY+~&;;_bE jf&=vaYgK(8Huo(|Jip`HT_28uxq=wm literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_ripe_0.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_ripe_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5e8c4f31aa3d33d89e45e03126b35c5f2c86c530 GIT binary patch literal 4711 zcmeHKeN+=y7M}nrVnwB5rOGizyM9hGGvsRq!iNMQ#b{Py#CGvGnVE#qBoi|O1iOf$ zRt2OgaIiotw9<7^ab46s_1mhr>$j^_&$dO^?y9KuW7P^;j{9c#5O;gd9?#kSM{*wT z&VBd(?tQ;^-zBr!GCg@<$lDRKi-A0%Q!WGY_)ePuAfvJXXdsxY!N7n# z6wLKtuq!)a9RRZU36{PoKoXI==46xEBFB^{qKwi4e*{w#2u2{N9772VCp2ncEvtE% zk%&~GTHgXtma~b87E@xP-0R~Utc!sle|6qEL&_1$&=oV%>J;JqqF3pIe!u5RQqsr; z;f0pb7elrY8}>aORH+_2L0M9;;PBy%$Lg0AH8zAc6v$fxuiw44>6YT1=8B>39rgeH zVeFZ`Hyw^sYV+B6_6&X@79bq#->S?Zj6YTBYt z^;0Gfi%xHuXTvnt+3TC@Tgp_l!G?1SFHO{3+A}Vn)NkKDng8SxvOfK2*w|GTOJYR$ zl~v~(O6{Y~H~WuzvGz{IpX=6cd1GoxA8TzwcKfyb2OsRVk@NqW8ZvIly|<3H4ev8$ zZ+zoD{ng_o7h+@uXAhM(|2TWZp}XT+p6niG2zd6VrA2pke{ok<5q;=d>FBCIPU^$< zUlH(N@zkqjfqgwon>Czg8($p@MO4nZ-B+&_ETtAo~Pd^?iX z_0Iw|=x43zLb`bxL2+&+Npp5a>34g@1A}7X{9ck;zzA|X<77Ps#r?ep6>^p~C}wNS zh}oOSWU?uXd`#M+=~imd0t%-Uaj_vWegXiv8G)4h-7XJL_zemPmjJS;Rw?9?iLk(+ zNC$P4$oUw#TB%kdaFURXsg;At@VxbSCt(9=tWz%cy2DJeTF8n51mRBaG<@K~vrS-YlO> z+73;r7#HIPraXv>z7kTraorvw1y0uOmAnAiuUHDK<0Vl&rKe!ruEk*;rAM?FqjBh? z=pIle4=<1&iV>jzxRM1p4pO71Q51zqJ&MC>n#N%qBQ-GMh@xo+V@I`Gv)~-H02|);?BYhFh%+ahP_kUT7mq#80?7@+zusn#LE2%neR2s9e;Fbq$jjF$#shu@<$#wZ=(~t!@S@e%o|m>yc%-&@`9>=Q1q7Ll30D2dtaURo z*OMcU$8EpRw>{!xOm}1WWc3RAV(2c1<$Qwiwk73w4RLzj%HV*0MMEMlCDdN2&3MLN zsXZL3IA2=>YfIP4!`9nAzJGMX5Nqn+=H^G9$|0_{dk)@gTO4<`;{NAnf3>{{L_WXGG8T-~o{j$1~XPTSap}U!lmQ&@q5s`JF zsOF2{*y@1!H^%J9{;JV7@e_W-_L%rm^P10Gwwl15Gn3**?%wt2g0Cuhf7(9V%{isq z%B9f=*x_z{&U}nMMnC*pPsjM^$6n=pKMQtcG!j7JT7qj)^N@-dvWmx z^`Xx~qmdu9V-D(|)+g;BdA_B-`O8e=?33R$PHs5x>-Px%Lnb2ZMbR5y+oK~5nROwl zEx-L?@k#ZpXnIsx&C|i-oA?2`R@%uKphO^3(sX0Plz9dJ1__ph`Tzg` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_ripe_1.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_ripe_1.png new file mode 100644 index 0000000000000000000000000000000000000000..561ea8b3e807117767c83d29035fa93e92468048 GIT binary patch literal 4709 zcmeHKeN+=y7M}!ANM+?vWkFnxQ;W4a$z+m{4+!#+04WApK}5G&=PO|}UuFh~wy0qJ zLPe`6T|if@R;w%2>cJ|tl?qi?Wu;o{+6sPb>lZ~_>@HTV`(^@&r#)wn=WPEYoR@d! zzI%V~-ru|LhFOu3o)Rn>CV?O**qmyd4CWAi1P%b-BRikqU^+|Zn5|~>t56_#0G1+u zNW|NKA?hQGMShSU&@BZc6v(^{KZc0{gn1Q^BfI4?AivUWBL=cUB!+^)Tm=ROz*Z-w)_u`fNtAAHrEba2U)^=t4P59-O@*&e3yjSnV zHPzkdXenHDb{Bf)c8Onwv+@>|c>4S7#v9@GM=#IFNQxMG zad~s~dSaC2M$pJ7Ywwhw*s*rcpybkktgQ+8kFPB3c(XPepZ#T;WXz)W-yeSv9*|fU zzrS7Edc5>ptf=_!M>n+mdurs-wlTMUtPL}We>zyS@=ophZKCp+qgU3Cs{CkN028!C z+_50JwajmTv#3Swa_(iT;-H9%DYpk`wfCna$-cxx_%Mt#OL`bL$GDtQ9up^Ad7J@;!Me03K8M?4>4kT)-7Ek; z25SA=x>1_IoBai6j7$z3o8 zRu+ri=pys@@XSU7%kc^o)6PR4=TXt~>I z6Bc;F^$8hf1B}Vgr^SnBVk3Jn^q#gr(DDO74D=G#cX z%ceans6-x9=$(Q)e=K^C3?LTg>l6S8dXS4g$wT9u%ai4D*$r@S*X>=lfa^rz9B#xp z8i4lp;jErMJPrlj*cUzzXK_)Cb>9E7<}Z&l7TAL$Pi0uJ|2#qEyHT0+T;G%L(as20 zNh%dCg&rq;DX@4xO$l)VEZ-8Di#u&J=pNnW+M{QFtrQdlK@+3~p+QlBQou1pi;*Z2 zjYi`tEk!9Yt&i4Tbk=3%3UCjdU;{h?u0VMTzfjUwgo7IUY%B%2G=BdCeOuh zKVAKFJr@JdW!zs~{d7GS1J7mLUtRw#ER_#$z71Zq1`uf}M(}zc z3WZeGrY!@SAb09C7J^=Qksl(cqADCH2XbbMY2Zz`9El32oj6U#)K^Gsl0WQ za$o#o$gkhs-XWf5PN%LVidHFe&OM+=By0Ouu&) zzFEJ%<+To}WLV|K3~^$xDqJ->xX8HUQagP4uglijqALf*dOKSleHvj+-nO#wxGa3{ zg0|~b=f^f(u!L_KB-%1nHRu?G>WjAL-#fJRn77zjax(O~e6x71Hm2y*o)0(fQ9OJ( z<*yjsw=)Y@?uKn?1V??Q8R?XC_ zKinugd*V!6^U07#Dk$$%{GXf95ATdBWY7I`;m>!!E6U6)W7TmD)uHaL;Isfwhh+a6 zE-Y#$-garX>UZcLIVi?@H`eE+HuP+Agj6AY! z-@7u^&)=LrFk7^&HGJgo?~P9uMO-3Q*psP)P({e1s9iy+loE=Xn-U)rxFvnlj@j>% aZ4=a;&GzZrj{gG`2xK;;8>?+gSNIvKN@nK~3 z$=eSamM*V3fd1|0^?tjZdz$H4m;RM_zGmux0U;FuRg5i+&)>0fIR5q4mV&>0zV+bmVm1%7emXO={l+H`{%|yrSaM}f(4^(9qc6N1GjP_) z8HZc7jTbgw)r(ese`aUHvjyR2?oMicdUTXQ+;(imhL)pW+!Yl}KXYUIggxI*9moc* z5kFWK)40QLkaI7%?Zf=XpP5|XjAPJ{IR$?v2RmNrNis4S?( z70sluu{mxgA!nYI%1Nbkv@|L*Nbkh~frIf760al8$>Uyw)W?ehTW}*%i4WpQHAs^{ z9z}C*MxvA{WhiX&vYD7PGDxC#(>6Tb7}H4so($3ykH>{0NLE&sEK4Ed+;&8+)9DZt zLof^m2$;`ydI&G<=&g_#7^arJLT#cd7vN zK)i$tk;_oT;Xr!N;60{HK++k|ug>7D*)9f&XLv5dO);iS#_4&dHw8^~&v#|G(|p^Z zDTGO5901CLRpot_6mDGi3_$`r>u~vI0kQiaJ*=%qtUj>`BfjnQ4g^f^=Iw*-+Pe=7 zP!;iMRW3XscKz@t%XY#J@8fNd0}ft6Y%3X?W)u4*-@By>8A)+u$pDCWCakd;JQ z@2CVS8c-=z42F?99gI>W3M(~gB}{5i6s8plN~t2%a=E61il*=w&g~$;ak37=&LA$Q z-M5AyI6gDZY>;9yw8s;dMtE#sfb2CS@uN$?PYnsN=Q)?x}&jw)4J4W{Y= zB{FUvWTL?7tDU|P;aG6686Yens@pwm0oREpJcN<( zFo3kX4qLnG@KhAV(T?y1Itxd$w(S3f7A}uO5Afi~V_6=opY3yX+^7U5z2m9lF^%7Mh2n{LM^kwHcnWyrkpgc7?$54%x!y>DHv;!(*Z)nfpq|$$#tHrk$^tJ-mZ}YRz>C%(a?Wfcc)bsW zLiQY;vkrIyU9lhV5HxtW&_vMg!ZE<i4{Reb~g9Uu-g8)sUz7c=tb zr{t%Pxe)d5@YXHP655#`GC8}hq}G(SHDeob>_GjaxN*q^nE~R_=QodCFnGz>+T)Vg zlFAh8+VIe`L&B23J$-uK#^akVN?!I@p-&HPdQw+6#hTrA z{LI<{boJTCm; z9`^m>1*I44mAPMrl9n$%RK#B|Q28mIFPt*E^whrZOlKmeq~g20M^-PBRc*UvDr{4{ z(myCIKgkbs8j+CUEn`=TK+k!`RU$q;msTOHv~gX z_aC)iudX<~-QwSRb;y(Gn44{jp=I~l-&-@P9%>0&QO_;PZ)h*M`qiUrnZrWis4;B& z@{97AVrhBNu;hobmZV$Dm&O-8+bg{pc{$K=n3f$({0B55V7WLR`s;_I_D5eIUK1=% hxk6K#dd2hcInyp(`SE78KgbivY?@~*oAvR^{{XxbmOcOg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/spectral_clock_ripe_3.png b/src/main/resources/assets/unicopia/textures/item/spectral_clock_ripe_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9f228247b13e5f458847c716c3b7755d3cf203e2 GIT binary patch literal 4686 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 BfBXOd literal 0 HcmV?d00001