add first patch
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user