merged pokeballs into environmentex
Some checks failed
Gitea Actions Demo / Build-Gradle (push) Has been cancelled
Some checks failed
Gitea Actions Demo / Build-Gradle (push) Has been cancelled
This commit is contained in:
BIN
CUSTOM.zip
BIN
CUSTOM.zip
Binary file not shown.
@@ -1,49 +0,0 @@
|
|||||||
plugins {
|
|
||||||
`java-library`
|
|
||||||
id("io.papermc.paperweight.userdev") version "2.0.0-beta.14"
|
|
||||||
id("xyz.jpenilla.run-paper") version "2.3.1" // Adds runServer and runMojangMappedServer tasks for testing
|
|
||||||
}
|
|
||||||
group = "de.hessj.dailyquests"
|
|
||||||
version = "1.0-SNAPSHOT"
|
|
||||||
description = "dailyquests"
|
|
||||||
|
|
||||||
tasks.withType<Jar> {
|
|
||||||
destinationDirectory.set(file("../"))
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(files("../craftbukkit.jar"))
|
|
||||||
implementation(files("../helper-1.0-SNAPSHOT.jar"))
|
|
||||||
paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT")
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks {
|
|
||||||
// Configure reobfJar to run when invoking the build task
|
|
||||||
assemble {
|
|
||||||
dependsOn(reobfJar)
|
|
||||||
}
|
|
||||||
|
|
||||||
compileJava {
|
|
||||||
options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything
|
|
||||||
|
|
||||||
// Set the release flag. This configures what version bytecode the compiler will emit, as well as what JDK APIs are usable.
|
|
||||||
// See https://openjdk.java.net/jeps/247 for more information.
|
|
||||||
options.release.set(21)
|
|
||||||
}
|
|
||||||
javadoc {
|
|
||||||
options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything
|
|
||||||
}
|
|
||||||
processResources {
|
|
||||||
filteringCharset = Charsets.UTF_8.name() // We want UTF-8 for everything
|
|
||||||
val props = mapOf(
|
|
||||||
"name" to project.name,
|
|
||||||
"version" to project.version,
|
|
||||||
"description" to project.description,
|
|
||||||
"apiVersion" to "1.21"
|
|
||||||
)
|
|
||||||
inputs.properties(props)
|
|
||||||
filesMatching("plugin.yml") {
|
|
||||||
expand(props)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id("org.gradle.toolchains.foojay-resolver-convention") version "0.9.0"
|
|
||||||
}
|
|
||||||
|
|
||||||
rootProject.name = "dailyquests"
|
|
||||||
@@ -1,168 +0,0 @@
|
|||||||
package de.hessj.dailyquests;
|
|
||||||
|
|
||||||
import de.hessj.helper.Helper;
|
|
||||||
import de.hessj.helper.Helper.Type;
|
|
||||||
import net.kyori.adventure.text.Component;
|
|
||||||
import net.md_5.bungee.api.ChatColor;
|
|
||||||
import org.bukkit.*;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.*;
|
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
import org.bukkit.inventory.meta.components.CustomModelDataComponent;
|
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
|
||||||
import org.bukkit.plugin.PluginManager;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
|
||||||
import org.bukkit.scoreboard.Scoreboard;
|
|
||||||
import org.bukkit.scoreboard.ScoreboardManager;
|
|
||||||
|
|
||||||
import java.time.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.AbstractMap.SimpleEntry;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
public class App extends JavaPlugin {
|
|
||||||
|
|
||||||
public static App main;
|
|
||||||
public Helper helper = new Helper();
|
|
||||||
public static final String DIAMOND_DUST_KEY = "R3SDiamondDust";
|
|
||||||
public static final String DIAMOND_DUST_RECIPE_KEY = "R3S_SR_DIAMONDDUST";
|
|
||||||
public static final long TICKS_PER_SECOND = 20L;
|
|
||||||
public static final long SECONDS_PER_DAY = 86400L;
|
|
||||||
|
|
||||||
public ArrayList<ItemStack> rewardList = new ArrayList<>();
|
|
||||||
public ItemStack diamondDust;
|
|
||||||
public NamespacedKey nskdiamondDust;
|
|
||||||
public NamespacedKey nskDD;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onEnable() {
|
|
||||||
getLogger().info("Plugin enabled!");
|
|
||||||
main = this;
|
|
||||||
|
|
||||||
nskdiamondDust = new NamespacedKey(this, DIAMOND_DUST_KEY);
|
|
||||||
nskDD = new NamespacedKey(this, DIAMOND_DUST_RECIPE_KEY);
|
|
||||||
|
|
||||||
setupRewards();
|
|
||||||
DailyQuestsListeners.getTodaysQuest();
|
|
||||||
|
|
||||||
scheduleMidnightReset();
|
|
||||||
registerListenersAndCommands();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDisable() {
|
|
||||||
getLogger().info("Plugin disabled!");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void registerListenersAndCommands() {
|
|
||||||
PluginManager pM = Bukkit.getPluginManager();
|
|
||||||
pM.registerEvents(new DailyQuestsListeners(), this);
|
|
||||||
getCommand("quest").setExecutor(new DailyQuestsCommands());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void scheduleMidnightReset() {
|
|
||||||
LocalDateTime now = LocalDateTime.now();
|
|
||||||
LocalDateTime nextMidnight = now.plusDays(1).withHour(0).withMinute(0).withSecond(0);
|
|
||||||
ZonedDateTime zdt = ZonedDateTime.of(nextMidnight, ZoneId.of("Europe/Berlin"));
|
|
||||||
Duration duration = Duration.between(now, zdt);
|
|
||||||
long secondsUntilMidnight = duration.getSeconds();
|
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskLater(this, this::startQuestResetScheduler, secondsUntilMidnight * TICKS_PER_SECOND);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startQuestResetScheduler() {
|
|
||||||
new BukkitRunnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
resetDailyQuestsForAllPlayers();
|
|
||||||
}
|
|
||||||
}.runTaskTimer(this, 0L, SECONDS_PER_DAY * TICKS_PER_SECOND);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void resetDailyQuestsForAllPlayers() {
|
|
||||||
getConfig().set("players", null);
|
|
||||||
saveConfig();
|
|
||||||
|
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
|
||||||
DailyQuestsListeners.getDailyQuests(player);
|
|
||||||
updatePlayerScoreboard(player);
|
|
||||||
player.sendMessage(helper.R3SMessage(Type.INFO, "[DailyQuests] Du hast eine neue Quest erhalten!"));
|
|
||||||
}
|
|
||||||
|
|
||||||
saveConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updatePlayerScoreboard(Player player) {
|
|
||||||
Entry<Scoreboard, Boolean> entry = DailyQuestsCommands.boards.get(player.getName());
|
|
||||||
Scoreboard board = entry.getKey();
|
|
||||||
boolean isActive = entry.getValue();
|
|
||||||
|
|
||||||
ScoreboardManager manager = Bukkit.getScoreboardManager();
|
|
||||||
player.setScoreboard(manager.getNewScoreboard());
|
|
||||||
|
|
||||||
if (isActive) {
|
|
||||||
player.setScoreboard(board);
|
|
||||||
}
|
|
||||||
|
|
||||||
DailyQuestsCommands.boards.put(player.getName(), new SimpleEntry<>(board, isActive));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setupRewards() {
|
|
||||||
createDiamondDustItem();
|
|
||||||
registerDiamondDustRecipe();
|
|
||||||
initializeRewardList();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createDiamondDustItem() {
|
|
||||||
diamondDust = new ItemStack(Material.BARRIER);
|
|
||||||
ItemMeta meta = diamondDust.getItemMeta();
|
|
||||||
meta.setCustomModelData(1000010);
|
|
||||||
|
|
||||||
CustomModelDataComponent cmdc = meta.getCustomModelDataComponent();
|
|
||||||
cmdc.setStrings(Collections.singletonList("diamond_dust"));
|
|
||||||
meta.setCustomModelDataComponent(cmdc);
|
|
||||||
|
|
||||||
meta.displayName(Component.translatable(ChatColor.WHITE + "Diamant-Staub"));
|
|
||||||
meta.getPersistentDataContainer().set(nskdiamondDust, PersistentDataType.STRING, DIAMOND_DUST_KEY);
|
|
||||||
diamondDust.setItemMeta(meta);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void registerDiamondDustRecipe() {
|
|
||||||
RecipeChoice choice = new RecipeChoice.ExactChoice(diamondDust);
|
|
||||||
ShapedRecipe recipe = new ShapedRecipe(nskDD, new ItemStack(Material.DIAMOND));
|
|
||||||
recipe.shape("** ", "** ", " ");
|
|
||||||
recipe.setIngredient('*', choice);
|
|
||||||
|
|
||||||
if (getServer().getRecipe(nskDD) == null) {
|
|
||||||
getServer().addRecipe(recipe);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initializeRewardList() {
|
|
||||||
rewardList.addAll(List.of(
|
|
||||||
new ItemStack(Material.EXPERIENCE_BOTTLE, 1),
|
|
||||||
new ItemStack(Material.APPLE, 10),
|
|
||||||
new ItemStack(Material.POTATO, 5),
|
|
||||||
new ItemStack(Material.CARROT, 5),
|
|
||||||
new ItemStack(Material.COOKED_BEEF, 10),
|
|
||||||
new ItemStack(Material.COOKED_CHICKEN, 10),
|
|
||||||
new ItemStack(Material.COOKED_COD, 10),
|
|
||||||
new ItemStack(Material.COOKED_MUTTON, 10),
|
|
||||||
new ItemStack(Material.COOKED_PORKCHOP, 10),
|
|
||||||
new ItemStack(Material.COOKED_RABBIT, 10),
|
|
||||||
new ItemStack(Material.COOKED_SALMON, 10),
|
|
||||||
new ItemStack(Material.IRON_INGOT, 5),
|
|
||||||
new ItemStack(Material.COPPER_INGOT, 5),
|
|
||||||
new ItemStack(Material.GOLD_NUGGET, 5),
|
|
||||||
new ItemStack(Material.FIREWORK_ROCKET, 5),
|
|
||||||
new ItemStack(Material.SADDLE, 1),
|
|
||||||
new ItemStack(Material.MELON_SEEDS, 5),
|
|
||||||
new ItemStack(Material.PUMPKIN_SEEDS, 5),
|
|
||||||
new ItemStack(Material.BEETROOT_SEEDS, 5),
|
|
||||||
new ItemStack(Material.DIAMOND, 1),
|
|
||||||
new ItemStack(Material.CAKE, 1),
|
|
||||||
new ItemStack(Material.ENDER_PEARL, 5)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,154 +0,0 @@
|
|||||||
package de.hessj.dailyquests;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.AbstractMap.SimpleEntry;
|
|
||||||
|
|
||||||
|
|
||||||
import com.destroystokyo.paper.profile.PlayerProfile;
|
|
||||||
import com.destroystokyo.paper.profile.ProfileProperty;
|
|
||||||
|
|
||||||
import de.hessj.helper.Helper.Type;
|
|
||||||
|
|
||||||
import org.bukkit.*;
|
|
||||||
import org.bukkit.command.*;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.*;
|
|
||||||
import org.bukkit.inventory.meta.SkullMeta;
|
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
|
||||||
import org.bukkit.scoreboard.*;
|
|
||||||
|
|
||||||
import net.kyori.adventure.text.Component;
|
|
||||||
|
|
||||||
public class DailyQuestsCommands implements CommandExecutor {
|
|
||||||
|
|
||||||
public static Map<String, Entry<Scoreboard, Boolean>> boards = new HashMap<>();
|
|
||||||
public static NamespacedKey nsksurpriseBox;
|
|
||||||
public static ItemStack surpriseBox;
|
|
||||||
public static de.hessj.helper.Helper helper = new de.hessj.helper.Helper();
|
|
||||||
|
|
||||||
public static void updateSB(Player p) {
|
|
||||||
boards.putIfAbsent(p.getName(), new SimpleEntry<>(Bukkit.getScoreboardManager().getNewScoreboard(), false));
|
|
||||||
|
|
||||||
Entry<Scoreboard, Boolean> actionMapEntry = boards.get(p.getName());
|
|
||||||
Scoreboard board = actionMapEntry.getKey();
|
|
||||||
|
|
||||||
Objective existing = board.getObjective(DisplaySlot.SIDEBAR);
|
|
||||||
if (existing != null) existing.unregister();
|
|
||||||
|
|
||||||
Objective o = board.registerNewObjective("dailyquests", ObjectiveCriteria.DUMMY, Component.text("Quest:"));
|
|
||||||
o.setDisplaySlot(DisplaySlot.SIDEBAR);
|
|
||||||
|
|
||||||
ConfigurationSection questsSection = App.main.getConfig().getConfigurationSection("players." + p.getUniqueId() + ".currentQuests");
|
|
||||||
if (questsSection == null) return;
|
|
||||||
|
|
||||||
for (String questKey : questsSection.getKeys(false)) {
|
|
||||||
if (questKey.equals("null")) continue;
|
|
||||||
|
|
||||||
String desc = formatQuestDescription(p.getUniqueId(), questKey);
|
|
||||||
if (desc.length() >= 39) desc = desc.substring(0, 39);
|
|
||||||
|
|
||||||
int currentCount = getConfigInt("players." + p.getUniqueId() + ".currentQuests." + questKey + ".currentcount");
|
|
||||||
|
|
||||||
if ("finished".equals(getConfigString("players." + p.getUniqueId() + ".currentQuests." + questKey + ".state"))) {
|
|
||||||
board.resetScores(desc);
|
|
||||||
o.getScore(ChatColor.STRIKETHROUGH + desc).setScore(currentCount);
|
|
||||||
} else {
|
|
||||||
o.getScore(desc).setScore(currentCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
checkForCompletion(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
boards.put(p.getName(), new SimpleEntry<>(board, actionMapEntry.getValue()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
|
||||||
if (sender instanceof Player player) {
|
|
||||||
updateSB(player);
|
|
||||||
Entry<Scoreboard, Boolean> entry = boards.get(player.getName());
|
|
||||||
boolean showing = entry.getValue();
|
|
||||||
|
|
||||||
player.setScoreboard(showing ? Bukkit.getScoreboardManager().getNewScoreboard() : entry.getKey());
|
|
||||||
boards.put(player.getName(), new SimpleEntry<>(entry.getKey(), !showing));
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void checkForCompletion(Player p) {
|
|
||||||
UUID uuid = p.getUniqueId();
|
|
||||||
int completed = 0;
|
|
||||||
int total = 0;
|
|
||||||
|
|
||||||
for (String questID : App.main.getConfig().getConfigurationSection("quests").getKeys(false)) {
|
|
||||||
String path = "players." + uuid + ".currentQuests." + questID;
|
|
||||||
if (App.main.getConfig().contains(path)) {
|
|
||||||
if ("finished".equals(getConfigString(path + ".state"))) completed++;
|
|
||||||
total++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (completed == total && !"claimed".equals(getConfigString("players." + uuid + ".rewards"))) {
|
|
||||||
giveSurpriseBox(p);
|
|
||||||
App.main.getConfig().set("players." + uuid + ".rewards", "claimed");
|
|
||||||
App.main.saveConfig();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void giveSurpriseBox(Player p) {
|
|
||||||
surpriseBox = new ItemStack(Material.PLAYER_HEAD);
|
|
||||||
SkullMeta meta = (SkullMeta) surpriseBox.getItemMeta();
|
|
||||||
meta.displayName(Component.text(ChatColor.WHITE + "Überraschungsbox"));
|
|
||||||
|
|
||||||
PlayerProfile profile = Bukkit.createProfile(UUID.randomUUID(), null);
|
|
||||||
profile.getProperties().add(new ProfileProperty("textures",
|
|
||||||
"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDQxZmJlYTljMmQxOTA0MGU1NjdmMzg3YWI0NmIyZjhhM2ExZGE4ZWVjOWQzOTllMmU0YWRjZjA1YWRhOGEyYSJ9fX0="));
|
|
||||||
meta.setPlayerProfile(profile);
|
|
||||||
|
|
||||||
nsksurpriseBox = new NamespacedKey(App.main, "R3SSurpriseBox");
|
|
||||||
meta.getPersistentDataContainer().set(nsksurpriseBox, PersistentDataType.STRING, "R3S_SurpriseBox");
|
|
||||||
meta.lore(List.of(Component.text("Quest Belohnung")));
|
|
||||||
surpriseBox.setItemMeta(meta);
|
|
||||||
|
|
||||||
boolean given = false, hasSpace = false;
|
|
||||||
|
|
||||||
for (ItemStack i : p.getInventory().getStorageContents()) {
|
|
||||||
if (i == null) {
|
|
||||||
hasSpace = true;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i.isSimilar(surpriseBox) && i.getAmount() < 64) {
|
|
||||||
i.setAmount(i.getAmount() + 1);
|
|
||||||
given = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!given && hasSpace) {
|
|
||||||
p.getInventory().addItem(surpriseBox);
|
|
||||||
p.sendMessage(helper.R3SMessage(Type.SUCCESS, "[DailyQuests] Du hast 1x Überraschungsbox als Questbelohnung erhalten!"));
|
|
||||||
} else if (!given) {
|
|
||||||
p.sendMessage(helper.R3SMessage(Type.ERROR, "[DailyQuests] Dein Inventar ist voll, schaffe Platz und logge dich ein, um deine Questbelohnung zu erhalten!"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getConfigString(String path) {
|
|
||||||
Object value = App.main.getConfig().get(path);
|
|
||||||
return value != null ? value.toString() : "";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int getConfigInt(String path) {
|
|
||||||
return App.main.getConfig().getInt(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String formatQuestDescription(UUID playerId, String questKey) {
|
|
||||||
String base = getConfigString("quests." + questKey + ".description");
|
|
||||||
String count = getConfigString("players." + playerId + ".currentQuests." + questKey + ".countneeded");
|
|
||||||
String target = getConfigString("quests." + questKey + ".target");
|
|
||||||
String tool = getConfigString("quests." + questKey + ".tool").replace("Material.", "");
|
|
||||||
|
|
||||||
return base.replace("[x]", count).replace("[b]", target).replace("[t]", tool);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,10 +0,0 @@
|
|||||||
main: de.hessj.dailyquests.App
|
|
||||||
name: DailyQuestsPlugin
|
|
||||||
version: 0.1
|
|
||||||
api-version: 1.21
|
|
||||||
depend: [HelperPlugin]
|
|
||||||
|
|
||||||
commands:
|
|
||||||
quest:
|
|
||||||
description: Zeigt die heutigen Quests an
|
|
||||||
usage: /<command>
|
|
||||||
Binary file not shown.
@@ -1,2 +1,2 @@
|
|||||||
Command: /opt/homebrew/Cellar/openjdk/23.0.2/libexec/openjdk.jdk/Contents/Home/bin/java -Xmx1G -classpath /Users/janik/.gradle/caches/modules-2/files-2.1/net.fabricmc/tiny-remapper/0.11.1/6c1f29838864ba8f495855edfc8ef17706fedb5d/tiny-remapper-0.11.1-fat.jar net.fabricmc.tinyremapper.Main /Users/janik/Desktop/MCPlugins/environmentex-1.0-SNAPSHOT.jar /Users/janik/Desktop/MCPlugins/environmentex/build/libs/environmentex-1.0-SNAPSHOT-reobf.jar /Users/janik/Desktop/MCPlugins/environmentex/.gradle/caches/paperweight/taskCache/reobfMappings.tiny mojang spigot /Users/janik/Desktop/MCPlugins/environmentex/.gradle/caches/paperweight/taskCache/mappedServerJar.jar --threads=1
|
Command: /opt/homebrew/Cellar/openjdk/23.0.2/libexec/openjdk.jdk/Contents/Home/bin/java -Xmx1G -classpath /Users/janik/.gradle/caches/modules-2/files-2.1/net.fabricmc/tiny-remapper/0.11.1/6c1f29838864ba8f495855edfc8ef17706fedb5d/tiny-remapper-0.11.1-fat.jar net.fabricmc.tinyremapper.Main /Users/janik/Desktop/MCPlugins/environmentex-1.0-SNAPSHOT.jar /Users/janik/Desktop/MCPlugins/environmentex/build/libs/environmentex-1.0-SNAPSHOT-reobf.jar /Users/janik/Desktop/MCPlugins/environmentex/.gradle/caches/paperweight/taskCache/reobfMappings.tiny mojang spigot /Users/janik/Desktop/MCPlugins/environmentex/.gradle/caches/paperweight/taskCache/mappedServerJar.jar --threads=1
|
||||||
[INFO] Finished after 1133,52 ms.
|
[INFO] Finished after 1086,27 ms.
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -25,9 +25,7 @@ import org.bukkit.inventory.RecipeChoice.MaterialChoice;
|
|||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.inventory.meta.components.CustomModelDataComponent;
|
import org.bukkit.inventory.meta.components.CustomModelDataComponent;
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.time.ZonedDateTime;
|
|
||||||
import java.util.AbstractMap.SimpleEntry;
|
import java.util.AbstractMap.SimpleEntry;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -59,7 +57,17 @@ public class App extends JavaPlugin {
|
|||||||
public static final String DIAMOND_DUST_RECIPE_KEY = "R3S_SR_DIAMONDDUST";
|
public static final String DIAMOND_DUST_RECIPE_KEY = "R3S_SR_DIAMONDDUST";
|
||||||
public static final long TICKS_PER_SECOND = 20L;
|
public static final long TICKS_PER_SECOND = 20L;
|
||||||
public static final long SECONDS_PER_DAY = 86400L;
|
public static final long SECONDS_PER_DAY = 86400L;
|
||||||
|
public NamespacedKey nskPokeball;
|
||||||
|
public NamespacedKey nskUsedPokeball;
|
||||||
|
public NamespacedKey nskEntityPokeball;
|
||||||
|
public NamespacedKey nskEntVariantPokeball;
|
||||||
|
public NamespacedKey nskEntStylePokeball;
|
||||||
|
public NamespacedKey nskAgePokeball;
|
||||||
|
|
||||||
|
public ItemStack newPokeball;
|
||||||
|
public ItemStack usedPokeball;
|
||||||
|
public HashMap<Player, Boolean> isThrownHM = new HashMap<>();
|
||||||
|
|
||||||
public ArrayList<ItemStack> rewardList = new ArrayList<>();
|
public ArrayList<ItemStack> rewardList = new ArrayList<>();
|
||||||
public ItemStack diamondDust;
|
public ItemStack diamondDust;
|
||||||
public NamespacedKey nskdiamondDust;
|
public NamespacedKey nskdiamondDust;
|
||||||
@@ -113,7 +121,36 @@ public NamespacedKey nskHopper;
|
|||||||
|
|
||||||
getServer().addRecipe(srHopper);
|
getServer().addRecipe(srHopper);
|
||||||
}
|
}
|
||||||
|
private ItemStack createPokeball() {
|
||||||
|
ItemStack ball = new ItemStack(Material.SNOWBALL);
|
||||||
|
ItemMeta meta = ball.getItemMeta();
|
||||||
|
meta.displayName(Component.translatable(ChatColor.WHITE + "Pokéball"));
|
||||||
|
meta.setCustomModelData(1000011);
|
||||||
|
|
||||||
|
CustomModelDataComponent cmd = meta.getCustomModelDataComponent();
|
||||||
|
if (cmd != null) {
|
||||||
|
cmd.setStrings(List.of("pokeball"));
|
||||||
|
meta.setCustomModelDataComponent(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
meta.getPersistentDataContainer().set(nskPokeball, PersistentDataType.STRING, "R3S_Pokeball");
|
||||||
|
ball.setItemMeta(meta);
|
||||||
|
|
||||||
|
return ball;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void registerPokeballRecipe(ItemStack item) {
|
||||||
|
ShapedRecipe recipe = new ShapedRecipe(nskPokeball, item);
|
||||||
|
recipe.shape("RRR", "SES", "WWW");
|
||||||
|
recipe.setIngredient('R', Material.RED_CONCRETE);
|
||||||
|
recipe.setIngredient('S', Material.BLACK_CONCRETE);
|
||||||
|
recipe.setIngredient('E', Material.IRON_NUGGET);
|
||||||
|
recipe.setIngredient('W', Material.WHITE_CONCRETE);
|
||||||
|
|
||||||
|
if (getServer().getRecipe(nskPokeball) == null) {
|
||||||
|
getServer().addRecipe(recipe);
|
||||||
|
}
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
SquidPrevention.removeSquidReceipes();
|
SquidPrevention.removeSquidReceipes();
|
||||||
@@ -131,6 +168,18 @@ public NamespacedKey nskHopper;
|
|||||||
|
|
||||||
|
|
||||||
main = this;
|
main = this;
|
||||||
|
|
||||||
|
nskPokeball = new NamespacedKey(this, "R3SPokeball");
|
||||||
|
nskUsedPokeball = new NamespacedKey(this, "R3SUsedPokeball");
|
||||||
|
nskEntityPokeball = new NamespacedKey(this, "R3SEntity");
|
||||||
|
nskEntVariantPokeball = new NamespacedKey(this, "R3SEntityVariant");
|
||||||
|
nskEntStylePokeball = new NamespacedKey(this, "R3SEntityStyle");
|
||||||
|
nskAgePokeball = new NamespacedKey(this, "R3SEntityAge");
|
||||||
|
newPokeball = createPokeball();
|
||||||
|
registerPokeballRecipe(newPokeball);
|
||||||
|
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||||
|
isThrownHM.put(p, false);
|
||||||
|
}
|
||||||
DailyQuests.getTodaysQuest();
|
DailyQuests.getTodaysQuest();
|
||||||
lockedChest = new ItemStack(Material.CHEST);
|
lockedChest = new ItemStack(Material.CHEST);
|
||||||
ItemMeta imlockedChest = lockedChest.getItemMeta();
|
ItemMeta imlockedChest = lockedChest.getItemMeta();
|
||||||
@@ -535,6 +584,7 @@ public NamespacedKey nskHopper;
|
|||||||
pM.registerEvents(new DeathLoc(), this);
|
pM.registerEvents(new DeathLoc(), this);
|
||||||
pM.registerEvents(new BetterHoppers(), this);
|
pM.registerEvents(new BetterHoppers(), this);
|
||||||
pM.registerEvents(new DailyQuests(), this);
|
pM.registerEvents(new DailyQuests(), this);
|
||||||
|
pM.registerEvents(new Pokeballs(), this);
|
||||||
getCommand("test").setExecutor(new EnvironmentExCommands());
|
getCommand("test").setExecutor(new EnvironmentExCommands());
|
||||||
getCommand("y").setExecutor(new EnvironmentExCommands());
|
getCommand("y").setExecutor(new EnvironmentExCommands());
|
||||||
getCommand("n").setExecutor(new EnvironmentExCommands());
|
getCommand("n").setExecutor(new EnvironmentExCommands());
|
||||||
|
|||||||
2429
pokeballs/src/main/java/de/hessj/pokeballs/PokeballsListeners.java → environmentex/src/main/java/de/hessj/environmentex/Pokeballs.java
Executable file → Normal file
2429
pokeballs/src/main/java/de/hessj/pokeballs/PokeballsListeners.java → environmentex/src/main/java/de/hessj/environmentex/Pokeballs.java
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,2 +0,0 @@
|
|||||||
#Sun Jul 20 15:58:39 CEST 2025
|
|
||||||
gradle.version=8.14.2
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
plugins {
|
|
||||||
`java-library`
|
|
||||||
id("io.papermc.paperweight.userdev") version "2.0.0-beta.14"
|
|
||||||
id("xyz.jpenilla.run-paper") version "2.3.1" // Adds runServer and runMojangMappedServer tasks for testing
|
|
||||||
}
|
|
||||||
group = "de.hessj.pokeballs"
|
|
||||||
version = "1.0-SNAPSHOT"
|
|
||||||
description = "pokeballs"
|
|
||||||
|
|
||||||
tasks.withType<Jar> {
|
|
||||||
destinationDirectory.set(file("../"))
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(files("../craftbukkit.jar"))
|
|
||||||
implementation(files("../helper-1.0-SNAPSHOT.jar"))
|
|
||||||
paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT")
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks {
|
|
||||||
// Configure reobfJar to run when invoking the build task
|
|
||||||
assemble {
|
|
||||||
dependsOn(reobfJar)
|
|
||||||
}
|
|
||||||
|
|
||||||
compileJava {
|
|
||||||
options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything
|
|
||||||
|
|
||||||
// Set the release flag. This configures what version bytecode the compiler will emit, as well as what JDK APIs are usable.
|
|
||||||
// See https://openjdk.java.net/jeps/247 for more information.
|
|
||||||
options.release.set(21)
|
|
||||||
}
|
|
||||||
javadoc {
|
|
||||||
options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything
|
|
||||||
}
|
|
||||||
processResources {
|
|
||||||
filteringCharset = Charsets.UTF_8.name() // We want UTF-8 for everything
|
|
||||||
val props = mapOf(
|
|
||||||
"name" to project.name,
|
|
||||||
"version" to project.version,
|
|
||||||
"description" to project.description,
|
|
||||||
"apiVersion" to "1.21"
|
|
||||||
)
|
|
||||||
inputs.properties(props)
|
|
||||||
filesMatching("plugin.yml") {
|
|
||||||
expand(props)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id("org.gradle.toolchains.foojay-resolver-convention") version "0.9.0"
|
|
||||||
}
|
|
||||||
|
|
||||||
rootProject.name = "pokeballs"
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
package de.hessj.pokeballs;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.NamespacedKey;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.inventory.ShapedRecipe;
|
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
import org.bukkit.inventory.meta.components.CustomModelDataComponent;
|
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
|
||||||
import org.bukkit.plugin.PluginManager;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
import net.kyori.adventure.text.Component;
|
|
||||||
import net.md_5.bungee.api.ChatColor;
|
|
||||||
|
|
||||||
public class App extends JavaPlugin {
|
|
||||||
public static App main;
|
|
||||||
public NamespacedKey nskPokeball = new NamespacedKey(this, "R3SPokeball");
|
|
||||||
public NamespacedKey nskUsedPokeball = new NamespacedKey(this, "R3SUsedPokeball");
|
|
||||||
public NamespacedKey nskEntityPokeball = new NamespacedKey(this, "R3SEntity");
|
|
||||||
public NamespacedKey nskEntVariantPokeball = new NamespacedKey(this, "R3SEntityVariant");
|
|
||||||
public NamespacedKey nskEntStylePokeball = new NamespacedKey(this, "R3SEntityStyle");
|
|
||||||
public NamespacedKey nskAgePokeball = new NamespacedKey(this, "R3SEntityAge");
|
|
||||||
|
|
||||||
public ItemStack newPokeball;
|
|
||||||
public ItemStack usedPokeball;
|
|
||||||
public HashMap<Player, Boolean> isThrownHM = new HashMap<Player, Boolean>();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onEnable() {
|
|
||||||
getLogger().info("Plugin enabled!");
|
|
||||||
main = this;
|
|
||||||
listenerRegistration();
|
|
||||||
for(Player p : Bukkit.getServer().getOnlinePlayers()){
|
|
||||||
isThrownHM.put(p, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDisable() {
|
|
||||||
getLogger().info("Plugin disabled!");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void listenerRegistration() {
|
|
||||||
PluginManager pM = Bukkit.getPluginManager();
|
|
||||||
newPokeball = new ItemStack(Material.SNOWBALL);
|
|
||||||
ItemMeta newPokeballMeta = newPokeball.getItemMeta();
|
|
||||||
newPokeballMeta.displayName(Component.translatable(ChatColor.WHITE + "Pokéball"));
|
|
||||||
newPokeballMeta.setCustomModelData(1000011);
|
|
||||||
|
|
||||||
CustomModelDataComponent cmdc4 = newPokeballMeta.getCustomModelDataComponent();
|
|
||||||
List<String> list4 = Arrays.asList("pokeball");
|
|
||||||
cmdc4.setStrings(list4);
|
|
||||||
newPokeballMeta.setCustomModelDataComponent(cmdc4);
|
|
||||||
|
|
||||||
newPokeballMeta.getPersistentDataContainer().set(nskPokeball, PersistentDataType.STRING, "R3S_Pokeball");
|
|
||||||
newPokeball.setItemMeta(newPokeballMeta);
|
|
||||||
ShapedRecipe pokeballRecipe = new ShapedRecipe(nskPokeball, newPokeball);
|
|
||||||
pokeballRecipe.shape("RRR", "SES", "WWW");
|
|
||||||
pokeballRecipe.setIngredient('R', Material.RED_CONCRETE);
|
|
||||||
pokeballRecipe.setIngredient('S', Material.BLACK_CONCRETE);
|
|
||||||
pokeballRecipe.setIngredient('E', Material.IRON_NUGGET);
|
|
||||||
pokeballRecipe.setIngredient('W', Material.WHITE_CONCRETE);
|
|
||||||
if (getServer().getRecipe(nskPokeball) == null) {
|
|
||||||
getServer().addRecipe(pokeballRecipe);
|
|
||||||
}
|
|
||||||
pM.registerEvents(new PokeballsListeners(), this);
|
|
||||||
getCommand("get").setExecutor(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
|
||||||
if (sender instanceof Player) {
|
|
||||||
if(!((Player) sender).isOp()){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(args != null && args.length > 0){
|
|
||||||
|
|
||||||
if (label.equalsIgnoreCase("get") && args[0].toString() != "" && args[0].toString().equals("pokeball") && args.length == 2 && StringUtils.isNumeric(args[1])) {
|
|
||||||
ItemStack is = newPokeball.clone();
|
|
||||||
is.setAmount(Integer.parseInt(args[1]));
|
|
||||||
((Player) sender).getInventory().addItem(is);
|
|
||||||
}
|
|
||||||
else if (label.equalsIgnoreCase("get") && args[0].toString() != "" && args[0].toString().equals("pokeball")) {
|
|
||||||
((Player) sender).getInventory().addItem(newPokeball);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
main: de.hessj.pokeballs.App
|
|
||||||
name: PokeballPlugin
|
|
||||||
version: 0.1
|
|
||||||
api-version: 1.21
|
|
||||||
depend: [HelperPlugin]
|
|
||||||
commands:
|
|
||||||
get:
|
|
||||||
description: Give player Pokeball
|
|
||||||
usage: /<command>
|
|
||||||
@@ -3,13 +3,4 @@ curr_folder=$(pwd)
|
|||||||
rm -rf *-SNAPSHOT.jar
|
rm -rf *-SNAPSHOT.jar
|
||||||
cd helper && gradle wrapper && ./gradlew clean build && gradle build
|
cd helper && gradle wrapper && ./gradlew clean build && gradle build
|
||||||
cd $curr_folder
|
cd $curr_folder
|
||||||
cd betterhoppers && gradle wrapper && ./gradlew clean build && gradle build
|
|
||||||
cd $curr_folder
|
|
||||||
cd chestex && gradle wrapper && ./gradlew clean build && gradle build
|
|
||||||
cd $curr_folder
|
|
||||||
cd dailyquests && gradle wrapper && ./gradlew clean build && gradle build
|
|
||||||
cd $curr_folder
|
|
||||||
cd environmentex && gradle wrapper && ./gradlew clean build && gradle build
|
cd environmentex && gradle wrapper && ./gradlew clean build && gradle build
|
||||||
cd $curr_folder
|
|
||||||
cd pokeballs && gradle wrapper && ./gradlew clean build && gradle build
|
|
||||||
cd $curr_folder
|
|
||||||
|
|||||||
Reference in New Issue
Block a user