Skip to content

HCFCore 0.8.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Sep 18:58
· 55 commits to main since this release

Claims drawn block by block with the claiming wand, and every event set up in game with the same commands — three new ones (DTC, Last Break, Slide), the Totem and Mini Totem, a weekly schedule. Territory shown in the world, safe zones that close to anybody in combat, and an economy for the fights: money for a kill, a shop, bounties. Kill the King in teams or alone, Discord announcements, mining alerts, death signs, subclaims.

Tried in game on Paper 26.2 with two players: the claiming wand and block-precise claims, the event setup commands, DTC, Last Break, the Totem, the weekly schedule, the map pillars and the lock wall, safe zones, mining alerts, death signs, points and money for a kill, the shop and bounties. Not yet tried in game: the Slide, both Kill the King modes, subclaims and the Discord webhook. Several settings changed: the Changed section says what to do.

Added

  • The claiming wand — claims are drawn block by block, the traditional HCF way. /team claim hands over the wand (a golden hoe): left-click a block for the first corner, right-click one for the second, sneak + left-click to claim the rectangle between them, full height; drop it to give up. The corners show as glass columns only its holder sees, and the chat gives the size, the price and anything that would refuse the claim before it is confirmed. Staff draw server land with it (/team createsystem, /team forceclaim <team>: free, no size or placement rule), event territories (/events claim <id>) and event zones (/events setzone <id>, setup.zone-height in events.yml). Configured in claims.yml (wand).
  • Claims are paid from the team bank: price.per-block (0.25), 75 % of what was paid back on /team unclaim (price.refund-percent). Money is the limit; sizes keeps each claim sensible — at least 5 × 5, at most 128 a side, optional caps on claims and surface. /team here shows the claim's size and corners; /team map is drawn in 8-block cells (map.cell-blocks).
  • /team createsystem hands over the claiming wand at once, to draw the new safe or combat zone.
  • An event's territory is a claim like any other: the land of a server team, named in the event's claim key (as a Citadel's always was), drawn with the claiming wand. /events create and /events claim make the team — a combat zone named after the event — and write the key. An existing event without a claim key keeps working; /events info finds a server team named after it, and /events claim writes the key.
  • One way to set up every event — KOTH, Citadel, Kill the King, Conquest, DTC, Last Break, Slide, Totem, Mini Totem — with the same commands (hcfcore.events.admin): /events create <type> <id> makes a new event where you stand, copied from the shipped example of its kind, its territory claimed; /events info <id> shows what it has and lacks, with the command for each; /events claim <id> and unclaim <id> [all] draw and release its territory with the claiming wand; /events setzone <id> [zone] draws its zone (a Conquest's named zone — a new name adds one) and delzone <id> <zone> removes one; /events setblock <id> places a DTC's core or a Totem's column; /events delete <id> removes any event and releases its territory. /events setcore, settotem and setzone <id> <1|2> are gone: setblock and the wand replace them. In events.yml, setup.default-zone-radius and setcore-distance are no longer read — take auto-claim, claim-margin and target-distance from the jar.
  • Three new capture events, events.yml:
    • DTC (Destroy The Core): a permanent block core inside a zone — end stone while the event runs, bedrock between runs, like a Totem's column (core.material, core.idle-material) — broken by teams — a per-team cooldown (break-cooldown-seconds), counter: SHARED (common health, most breaks of its own wins a tie by whoever reached that count first) or PER_TEAM (first to its own target wins at once).
    • Last Break: the same engine, always common health — whoever lands the break that empties it wins, even with fewer breaks of its own.
    • Slide: every team member standing in a zone scores for their team every interval-seconds, cumulative; a death anywhere costs the team death-penalty points; first to points-to-win wins, with a live top 3 on the scoreboard.
    • Creative, spectator and teamless players never break a core or score in a Slide.
    • Staff set them up in game, like every other event (see above) — the only commands in the plugin that ever rewrite a configuration file, and only the one section they name. The console warns when a core is not on server land.
    • New scoreboard placeholders %dtc_line%, %dtc_team_line%, %last_break_line%, %slide_line%, %slide_top_1..3%; a hologram above every core and Slide zone; Lunar Client waypoints on a running core and Slide zone.
    • New team points: teams.yml's points.per-dtc-win, per-last-break-win, per-slide-win (the scale is under Changed). Configuration files are never rewritten: copy the dtc:, last-break: and slide: sections (and the setup: section) from the jar's events.yml, the three new points.per-*-win lines of teams.yml, and the new dtc_line/last_break_line/slide_line/slide_top_* lines of ui.yml into your own files.
  • Totem and Mini Totem (events.yml, totem:): a column of 5 blocks (3 for the Mini Totem), bedrock between runs and quartz during one. Teams mine it with a sword, block by block (instant-break: true makes one hit enough); every block a team breaks turns to bedrock, and the first team to break the whole column wins — but a block broken by any other team starts it over, every block quartz again (rival-break, RESET or RESET_AND_START). Set up with /events create totem|minitotem <id> and /events setblock <id>; %totem_line% on the scoreboard, a hologram, a Lunar waypoint and points.per-totem-win in teams.yml. Existing servers: copy the totem: section of events.yml, per-totem-win of teams.yml and the %totem_line% rows of ui.yml from the jar.
  • A weekly schedule (events.yml, weekly-schedule): which event starts at what time on which day of the week, started by the plugin itself exactly as /events start would; /schedule add <day> <HH:mm> <event> and /schedule remove <day> <HH:mm> [event] edit it in game. Every start — weekly or an event's daily schedule — is announced ahead (announce-before-minutes, 15, 5 and 1 minute). Existing servers: copy the weekly-schedule section of events.yml and the events.planning messages of lang/en.yml from the jar — without the section, the weekly schedule is empty but on.
  • /schedule (/planning): every event start of the next seven days, day by day, for everybody.
  • /schedule opens as a window (events.yml, weekly-schedule.menu): one item per day of the week ahead, holding that day's events hour by hour. /schedule chat still prints the list, and the console always gets it.
  • Kill the King has two modes (events.yml, mode): team, as before — the King's team defends them and the winner's team scores — or solo — everybody against the King, teammates included, and the prize is the winner's own reward commands (crate keys, money), no team points.
  • Nobody helps the King, in either mode: no Bard buff, no partner item, no potion thrown by somebody else (healing included), no beacon — the kit and what they drink or eat themselves.
  • No abilities on an event's land (abilities.yml, disabled-in.event-territory): partner items are refused on the territory of an event — its server team's claims, not only the zone held or stood in — during-event (as shipped: until it ends), always (at any time, as on a safe zone) or never. An event decides for its own land with disable-abilities: never|during-event|always in events.yml. Existing servers: add event-territory: during-event under disabled-in — without it, that default applies.
  • /team map is drawn in the world (claims.yml, map.style, pillars as shipped): a column on each corner of every player team's claim within four chunks (server land is left out, include-system-claims), from the ground to layer 128, one ore or block of ore per team — drawn at random each time, named in the chat under the map — shown to you alone and gone after 20 seconds, or at the next /team map - the command is the switch. The chat says which block marks which team. /team map chat still draws the old grid, whose size is now configurable too (map.chat.radius-x, radius-z). Existing servers: map.cell-blocks moved to map.chat.cell-blocks; take the new map section from the jar.
  • A locked claim shows a wall (claims.yml, lock.wall): red glass around its border, from the ground to layer 128, appearing as they come within five blocks of it, to the players the lock refuses and to nobody else, sent like the wand's columns and never placed. Members see nothing. It is redrawn as a player walks rather than on a timer, each claim's wall being read from the world once and kept.
  • The claiming wand's columns are seen through a clear-glass pack: one block in every six is glowstone (wand.pillar-marker-material, pillar-marker-every).
  • Subclaims (claims.yml, subclaims): a [Subclaim] sign on a chest of your team's land, with the players allowed below, keeps your other members out of it — no opening, breaking, rewriting its sign or hopper under it. Co-leaders and the leader open them all.
  • Safe zones take no damage at all (pvp.yml, safe-zones.no-damage) and fill health and hunger back up (heal, keep-fed), all on as shipped: on spawn, a fall, fire, drowning, suffocation, a mob or a cactus does nothing.
  • Spawn is closed while you are in combat (safe-zones.block-combat-tagged, on as shipped): a combat tag refuses the step into a safe zone — walking, a pearl, any jump — until it runs out, and the border is shown as a wall of red glass 15 blocks each way in front of the player, to layer 128 (safe-zones.wall). Existing servers: take the whole safe-zones section from the jar — without the new keys, their defaults (all on) apply.
  • Death signs (pvp.yml, death-signs): a kill by a player leaves a sign — the dead player, "slain by", the killer, the date — that keeps its text when placed and cannot be rewritten. It falls with the loot, or goes to the killer (to-killer).
  • Money for a kill (economy.yml, kill-reward): 10 to the killer — the unit the shop and bounties are priced on, plus, if you set steal-percent, a share of the dead player's balance. Nothing for an ally, and nothing again for the same victim within 5 minutes.
  • A shop (economy.yml, shop): [Buy] and [Sell] signs placed by staff, the /shop menu, or both (mode). The menu opens on shelves — ores, combat, the Archer's leather and every dye, potions, food, building, utility, farming — about a hundred items priced on a 10-a-kill economy; ores are sold, the rest bought, and the shop never buys back what it sells. Only plain items are ever taken.
  • Bounties (economy.yml, bounties): /bounty <player> <amount> puts money on a head, taken from your balance at once; whoever kills the target collects it all — never a teammate or an ally. /bounty lists the largest. Saved in a new table, hcf_bounties, created by itself.
  • /lff [note] (teams.yml, lff): a player with no team tells everybody they want one, with a few words of their own — once every 5 minutes.
  • Mining alerts (staff.yml, mining-alerts): staff are told when a player breaks into a vein of diamond, ancient debris or emerald — once per vein, with its size and position. Player-placed ores are never reported; audience: everyone shows everybody the classic "[FD]" line, without the position.
  • Announcements on Discord (discord.yml, off as shipped): through a webhook, the server posts event starts and results, SOTW and EOTW, bounties, and teams going raidable to a Discord channel — routed by rules on the language keys, chatty lines left out, nobody ever pinged.

Changed

  • A team made raidable loses half its points (teams.yml, points.raidable-loss-percent, 50), or a fixed number with the share at 0 (per-raidable). A file with its own per-raidable and no share keeps meaning what it said.
  • Team points have a scale out of the box (teams.yml), where everything shipped at 0: a kill +1, a death −2, and an event worth far more than the kills fought for it — a KOTH capture 100, a Citadel 300, a Conquest 250, a DTC and a Slide 200, Kill the King, a Last Break and a Totem 150, a Mini Totem 80 — so the event, not the farm, decides the ranking. A Citadel and a Mini Totem now have values of their own (points.per-citadel-capture, per-mini-totem-win) instead of a KOTH's and a Totem's. Existing files keep their own numbers; take the points section from the jar for the new scale.
  • Territory is block-precise: a claim is a rectangle, not a set of chunks; the buffer between teams is in blocks (placement.buffer-blocks, 8), a new claim must share an edge with the team's land, and the warzone's radius is exact instead of rounded to chunks. Existing chunk claims are converted automatically on the first start — same land, paid nothing, so refunding nothing; the console says how many. In claims.yml, limits (base, per-member, maximum, max-per-command) and placement.minimum-distance-to-others are no longer read: take the new wand, price, sizes, placement and map sections from the jar. /team claim [radius] and /team forceclaim <team> [radius] take no radius any more.
  • Blocks per claim (limiters.yml, claim-blocks) are counted per team as well as per chunk, since two teams can now share a chunk. The counts are rebuilt as claimed chunks load; until a chunk has loaded once, its blocks are not counted.