add first patch

This commit is contained in:
2026-07-31 10:34:32 +09:00
parent 03aac2e45e
commit b1cbc6c78d
6390 changed files with 547430 additions and 0 deletions
@@ -0,0 +1,10 @@
console.info("[SOCIETY] addCommandAttributesOnLogin.js loaded");
PlayerEvents.loggedIn((e) => {
const { server, player } = e;
server.scheduleInTicks(0, () => {
server.scheduleInTicks(80, () => {
global.addAttributesFromStages(player, server);
});
});
});
@@ -0,0 +1,10 @@
CommonAddedEvents.playerChangeDimension((e) => {
if (e.level.dimension == "minecraft:the_nether") {
const player = e.getEntity();
if (!player.isPlayer()) return;
if (!player.stages.has("entered_nether")) {
player.stages.add("entered_nether");
player.tell(Text.translatable("society.new_villager.message").green());
}
}
});
@@ -0,0 +1,29 @@
console.info("[SOCIETY] addQuestbook.js loaded");
PlayerEvents.loggedIn((e) => {
const { player } = e;
if (player.stages.has("starting_items_4_0")) {
player.tell(Text.translatable("society.login_update.title").gray());
player.tell(Text.translatable("society.login_update.desc_0").white());
player.tell(Text.translatable("society.login_update.desc_1").white());
player.give("furniture:blueprints");
player.stages.add("starting_items_4_1");
player.stages.remove("starting_items_4_0");
}
if (!player.stages.has("starting_items_4_1")) {
player.stages.add("starting_items_4_1");
player.give("ftbquests:book");
if (global.multiplayerSharestones) {
player.give("waystones:white_sharestone");
player.give(
Item.of(
global.getNotePaperItem(
global.translatableWithFallback("society.starting_item_sharestone.author", "Society").getString(),
Text.translatable("society.starting_item_sharestone.text").toJson(),
global.translatableWithFallback("society.starting_item_sharestone.title", "Server Welcome").getString(),
)
)
);
}
}
});
@@ -0,0 +1,46 @@
const TextColor = Java.loadClass("net.minecraft.network.chat.TextColor");
const colorMap = [
{ dye: "minecraft:white_dye", code: "f" },
{ dye: "minecraft:light_gray_dye", code: "7" },
{ dye: "minecraft:gray_dye", code: "8" },
{ dye: "minecraft:black_dye", code: "0" },
{ dye: "minecraft:purple_dye", code: "1" },
{ dye: "minecraft:lime_dye", code: "a" },
{ dye: "minecraft:green_dye", code: "2" },
{ dye: "minecraft:brown_dye", code: "4" },
{ dye: "minecraft:red_dye", code: "c" },
{ dye: "minecraft:orange_dye", code: "6" },
{ dye: "minecraft:magenta_dye", code: "5" },
{ dye: "minecraft:yellow_dye", code: "e" },
{ dye: "minecraft:cyan_dye", code: "3" },
{ dye: "minecraft:light_blue_dye", code: "b" },
{ dye: "minecraft:blue_dye", code: "9" },
{ dye: "minecraft:pink_dye", code: "d" },
];
PlayerEvents.chat((e) => {
let { player, message, server } = e;
if (global.enableChatColors) {
let arrow = "&7»&r";
let color = "&f";
colorMap.forEach((mappedColor) => {
const { dye, code } = mappedColor;
if (player.isCuriosEquipped(dye)) color = `&${code}`;
});
let userName = player.name.toString().match(/\{(.+)\}/)[1];
let fullMessage = ` ${color}${userName} ${arrow} ${message}`;
fullMessage = addColor(fullMessage);
server.tell(fullMessage);
e.cancel();
}
});
const addColor = (text) => {
let hexPattern = /&#[a-fA-F0-9]{6}/g;
let result = text.replace(hexPattern, (hexCode) => {
let rgb = parseInt(hexCode.substring(2), 16);
return TextColor.fromRgb(rgb).toString();
});
return result.replace(/&/g, "\u00A7");
};
@@ -0,0 +1,23 @@
console.info("[SOCIETY] checkSkullCavernLogin.js loaded");
PlayerEvents.loggedIn((e) => {
const { player, level, server } = e;
if (level.dimension === "society:skull_cavern") {
const chunkDay =
level.persistentData.chunkParityMap[level.getChunkAt(player.getPos()).pos.toString()].day;
if (Number(chunkDay) > Number(player.persistentData.skullCavernEnterDay)) {
player.persistentData.skullCavernEnterDay = -1;
global.teleportHome(player, server, player.level);
server.runCommandSilent(
global.getEmbersTextAPICommand(player.username,
`{anchor:"BOTTOM_CENTER",background:1,align:"BOTTOM_CENTER",color:"#AAAAAA",offsetY:-60}`,
200,
Text.translatable("society.skull_cavern.fainted").toJson()
)
);
player.potionEffects.add("minecraft:slowness", 310, 3, true, false);
player.potionEffects.add("minecraft:darkness", 310, 0, true, false);
}
}
});
@@ -0,0 +1,7 @@
console.info('[SOCIETY] clearEntities.js loaded')
PlayerEvents.loggedIn(e => {
// Janky way to reset the ballon cap for ones that get stuck
e.server.runCommandSilent('tp @e[type=balloonbox:balloonbox] ~ -100000 ~')
e.server.runCommandSilent('kill @e[type=relics:shadow_glaive]')
})
@@ -0,0 +1,106 @@
console.info("[SOCIETY] coinUi.js loaded");
const xOffset = 64;
PlayerEvents.tick((e) => {
const player = e.player;
if (global.clockIcon && player.age % 20 == 0) {
if (
["gag:energized_hearthstone", "gag:hearthstone"].includes(player.getHeldItem("main_hand").id)
) {
player.paint({
clockIcon: { remove: true },
});
} else {
player.paint({
clockIcon: {
type: "item",
x: 8,
y: 22,
item: "minecraft:clock",
alignX: "left",
alignY: "top",
},
});
}
}
fishRadarPainter(e);
});
const fishRadarPadding = 2;
const fishRadarPainter = (e) => {
const { player, level } = e;
let localConditions = Text.empty();
function setLocalConditions(x) {
localConditions = x;
}
if (player.age % 100 == 0 && player.isCuriosEquipped("society:fish_radar")) {
let fish = [];
if (level.dimension !== "minecraft:the_nether") {
fish = global.overworldRadar(e, fish, setLocalConditions);
} else {
fish = global.netherRadar(e, fish, setLocalConditions);
}
if (player.stages.has("mystical_ocean")) fish.push("society:neptuna");
let fishRadarStart = 48;
player.paint({
fishRadarDisplay: {
type: "text",
x: fishRadarPadding,
y: fishRadarStart,
text:
`${
Text.of("=[ ").gray()
.append(Text.translatable("item.society.fish_radar").green())
.append(" ]=").toJson()
}`,
color: "#AAAAAA",
alignX: "left",
alignY: "top",
},
fishConditions: {
type: "text",
x: level.dimension == "minecraft:the_nether" ? -40 : 8,
y: fishRadarStart + 8 + fishRadarPadding,
text: `${localConditions.toJson()}`,
color: "#FFFFFFF",
alignX: "left",
alignY: "top",
},
fishRadarBottom: {
type: "text",
x: fishRadarPadding,
y: fishRadarStart + 16 + fishRadarPadding * 2,
text: "==============",
color: "#AAAAAA",
alignX: "left",
alignY: "top",
},
});
let fishUiElements = {};
let fishUiElementIds = [];
for (let index = 0; index < 10; index++) {
fishUiElementIds.push(`fish_radar_${index}`);
}
fish.forEach((fishItem, index) => {
fishUiElements[`fish_radar_${index}`] = {
type: "item",
x: 10 + (index >= 5 ? (index - 5) * 18 : index * 18),
y: fishRadarStart + 32 + fishRadarPadding * 4 + (index >= 5 ? 18 : 0),
item: fishItem,
alignX: "left",
alignY: "top",
};
});
global.renderUiItemText(player, fishUiElements, fishUiElementIds);
} else if (player.age % 100 == 0 && !player.isCuriosEquipped("society:fish_radar")) {
let removedFishUiIds = ["fishRadarDisplay", "fishConditions", "fishRadarBottom"];
for (let index = 0; index < 10; index++) {
removedFishUiIds.push(`fish_radar_${index}`);
}
global.clearUiItemPaint(player, removedFishUiIds);
}
};
@@ -0,0 +1,94 @@
console.info("[SOCIETY] dayCounterTick.js loaded");
const playerTickRate = 200;
const playerProgTime = 20;
const dayTickDuration = 24000;
const statueBuffs = [
"moon_extra_ore",
"moon_geode_roll",
"moon_rope_reveal",
"moon_remains",
"moon_damage",
];
const mastery = new Map([
[
"farming",
["farmers_blessing", "crop_collector", "artful_tycoon", "ancient_aging"],
],
[
"mining",
["prismatic_prospector", "high_roller", "gem_tycoon", "star_blessing"],
],
[
"husbandry",
["clockwork", "bff", "triple_truffle", "heretic"],
],
[
"adventuring",
["fence_2", "looting_tycoon", "prismatic_realm", "stuffed"],
],
[
"fishing",
["school_fisher", "prismatic_bounty", "scum_collector", "mitosis"],
],
]);
PlayerEvents.tick((e) => {
const { player, level, server } = e;
let dayTime = level.dayTime();
let morningModulo = dayTime % dayTickDuration;
if (
player.age % playerTickRate == 0 &&
morningModulo >= playerProgTime &&
morningModulo < playerProgTime + playerTickRate
) {
// Sleeping cuts the amount of possible days by half
let yearCount =
player.stats.playTime / dayTickDuration / (((global.subSeasonDuration * 3) * 4) / 2);
if (
!player.stages.has("master_cultivator_unlocked") &&
yearCount > 1 &&
["spring", "summer"].includes(global.getSeasonFromLevel(level))
) {
player.stages.add("master_cultivator_unlocked");
}
if (!player.stages.has("mastery_unlocked")) {
let addMastery = true;
let skillTree;
let hasSkill;
Array.from(mastery.keys()).forEach((masteryID) => {
if (addMastery) {
skillTree = mastery.get(masteryID);
hasSkill = false;
skillTree.forEach((skill) => {
if (player.stages.has(skill)) hasSkill = true;
})
if (!hasSkill) addMastery = false;
}
});
if (addMastery) {
player.stages.add("mastery_unlocked")
server.runCommandSilent(`puffish_skills category unlock ${player.username} society:mastery`);
// TODO: dialog
}
}
}
if (player.age % 400 == 0) {
if (
player.stages.has("mining_mastery") &&
player.persistentData.days &&
player.persistentData.days.moonStatueDay
) {
let dayData = player.persistentData.days.moonStatueDay;
if (dayData != -1 && global.getDay(level) != dayData) {
statueBuffs.forEach((buff) => {
player.stages.remove(buff);
});
player.persistentData.days.moonStatueDay = -1;
}
}
}
});
@@ -0,0 +1,22 @@
let bannedItems = [
"minecraft:milk_bucket",
"meadow:wooden_milk_bucket",
"meadow:wooden_sheep_milk_bucket",
"meadow:wooden_warped_milk_bucket",
"meadow:wooden_buffalo_milk_bucket",
"meadow:wooden_goat_milk_bucket",
"farmlife:tribull_milk",
];
PlayerEvents.inventoryChanged((e) => {
if (!bannedItems.includes(e.item.id)) return;
e.player.tell(Text.translatable("society.husbandry.action.need_milk_pail").gray());
e.player.inventory.items.forEach((item) => {
if (item.id === e.item.id) {
item.count = 0;
e.player.give(
Item.of(e.item.id.includes("wooden") ? "meadow:wooden_bucket" : "minecraft:bucket", 1)
);
}
});
});
@@ -0,0 +1,12 @@
console.info("[SOCIETY] registerCoinLeaderboardPlayers.js loaded");
PlayerEvents.loggedIn((e) => {
const { player, server } = e;
let playerList = server.persistentData.playerList;
if (playerList == null) {
playerList = {};
}
playerList[player.uuid] = player.name.string;
server.persistentData.playerList = playerList;
});
@@ -0,0 +1,10 @@
const ModConfig = Java.loadClass("sereneseasons.init.ModConfig")
const data = { subSeasonDuration: 10 }
ServerEvents.loaded(event => {
data.subSeasonDuration = ModConfig.seasons.subSeasonDuration;
});
PlayerEvents.loggedIn(event => {
event.player.sendData('society.synchronize_season_duration', data);
});
@@ -0,0 +1,59 @@
console.info("[SOCIETY] skullCavernTick.js loaded");
PlayerEvents.tick((e) => {
const player = e.player;
if (player.age % 200 == 0 && player.level.dimension === "society:skull_cavern") {
const timeModulo = player.level.dayTime() % 24000;
const server = player.getServer();
// 11 PM
if (timeModulo >= 17000) {
if (timeModulo <= 17200) {
server.runCommandSilent(
`playsound minecraft:ambient.cave block @a ${e.player.x} ${e.player.y} ${e.player.z}`
);
server.runCommandSilent(
global.getEmbersTextAPICommand(player.username,
`{anchor:"BOTTOM_CENTER",background:1,align:"BOTTOM_CENTER",color:"#AAAAAA",offsetY:-40}`,
200,
Text.translatable("society.skull_cavern.late").toJson()
)
);
}
player.potionEffects.add("minecraft:slowness", 210, 0, true, false);
}
// 2 AM
if (timeModulo >= 20000) {
if (timeModulo <= 20200) {
server.runCommandSilent(
global.getEmbersTextAPICommand(player.username,
`{anchor:"BOTTOM_CENTER",charShakeRandom:0.2,background:1,align:"BOTTOM_CENTER",color:"#AAAAAA",offsetY:-40}`,
200,
Text.translatable("society.skull_cavern.concern").toJson()
)
);
}
server.runCommandSilent(
`playsound minecraft:entity.warden.heartbeat block @a ${e.player.x} ${e.player.y} ${e.player.z}`
);
}
// 6AM
if (timeModulo >= 23800) {
player.persistentData.skullCavernEnterDay = -1;
global.teleportHome(player, server, player.level);
server.runCommandSilent(
global.getEmbersTextAPICommand(
player.username,
`{anchor:"BOTTOM_CENTER",background:1,align:"BOTTOM_CENTER",color:"#AAAAAA",offsetY:-40}`,
200,
Text.translatable("society.skull_cavern.fainted").toJson()
)
);
player.potionEffects.add("minecraft:slowness", 310, 3, true, false);
player.potionEffects.add("minecraft:darkness", 310, 0, true, false);
if (global.enableDeathDebt && !player.stages.has("debt_caverns")) {
global.handleFee(server, player, "skull_cavern");
if (Math.random() <= 0.02) player.give("society:debt_caverns");
}
}
}
});