Skip to content

MinecraftIsTooEasy/Custom-Moon-Phases

Repository files navigation

Custom Moon Phases

A configurable special-moon scheduling mod for MITE + FishModLoader 3.4.2.

Overview

MITE's built-in Blood Moon, Blue Moon, and Harvest Moon follow a fixed vanilla cycle that's hard to tune for a given save. This mod takes over that decision and exposes each moon as its own rule, so you can decide when each one starts, how often it repeats, and which one wins when several land on the same day.

In multiplayer the server is authoritative: it pushes a config snapshot to each client over a custom packet so everyone sees the same moon. In singleplayer / local worlds the local config is used directly.

Features

  • Independent on/off switch for Blood, Blue, and Harvest Moon scheduling, with a master toggle that falls back to vanilla MITE behavior.
  • Per-moon configuration of first day, interval (in in-game days), and priority.
  • Conflict resolution by priority — when several moons hit the same day, the highest priority wins (defaults: Blue 4 > Blood 3 > Harvest 2).
  • ModMenu config screen with English (en_US) and Simplified Chinese (zh_CN) translations.
  • Server → client config sync, so players don't have to edit configs themselves.

Dependencies

  • fishmodloader ≥ 3.4.2
  • rusted_iron_core ≥ 1.5.0
  • many-lib ≥ 2.3.0
  • modmenu (optional) — needed for the in-game config screen

Installation

Drop the built jar into MITE's mods folder alongside the dependencies above. Install the mod on both server and client — the server holds the authoritative config, the client renders the matching moon.

Usage

Open Custom Moon Phases from ModMenu. The settings are split into four tabs:

  • GeneralenableCustomSchedule: master switch. Turn it off to fully fall back to vanilla MITE moons.
  • Blue Moon / Blood Moon / Harvest Moon — each has four fields:
    • enabled — whether this moon's custom schedule is active.
    • intervalDays — number of in-game days between occurrences.
    • firstDay — earliest in-game day this moon is allowed to appear.
    • priority — tiebreaker when several moons land on the same day; higher wins.

Trigger rule: a moon fires on a given day when day >= firstDay and (day - firstDay) % intervalDays == 0.

Defaults

Moon firstDay intervalDays priority
Blue 128 128 4
Blood 32 32 3
Harvest 24 32 2

With these defaults, days 24, 56, 88… fire a Harvest Moon; days 32, 64, 96… fire a Blood Moon (overriding Harvest on overlap); day 128 fires a Blue Moon (overriding Blood), and so on.

Multiplayer Notes

When a player joins, the server sends its current config snapshot over a custom packet; until that snapshot arrives the client temporarily uses its own local config. New joiners always receive the latest server values; clients already online keep the snapshot they received at connect time.

Building

The project uses fml-loom via Gradle:

./gradlew build

The output jar is written to build/libs/ as [自定义月相]<archives_base_name>-<version>.jar.

Key classes:

  • Entry point — com.inf1nlty.custommoonphases.CustomMoonPhasesMod
  • Configs — com.inf1nlty.custommoonphases.CustomMoonPhasesConfigs
  • Phase resolver — com.inf1nlty.custommoonphases.moon.CustomMoonPhaseResolver

License

LGPL-3.0

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages