Skip to content
18 changes: 13 additions & 5 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,23 @@ import net.minecrell.pluginyml.bukkit.BukkitPluginDescription
plugins {
id("java")
id("maven-publish")
id("io.papermc.paperweight.userdev") version "1.7.7"
id("io.papermc.paperweight.userdev") version "2.0.0-beta.19"
id("net.minecrell.plugin-yml.bukkit") version "0.6.0"
}

group = "eu.endercentral.crazy_advancements"
version = "2.1.21"
version = "2.21.11"

repositories {
mavenCentral()
maven {
name = "papermc"
url = uri("https://repo.papermc.io/repository/maven-public/")
}
}

dependencies {
paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT")
paperweight.paperDevBundle("1.21.11-R0.1-SNAPSHOT")
}

java {
Expand All @@ -29,7 +33,11 @@ tasks {
dependsOn(clean)
}

jar.get().archiveFileName = "${name}-${version}-mojmap.jar"
jar {
//from(zipTree("libs/jedis-4.3.1.zip"))
destinationDirectory.set(layout.buildDirectory)
archiveFileName = "${project.name}-${version}.jar"
}
}

publishing {
Expand All @@ -44,7 +52,7 @@ publishing {
bukkit {
main = "eu.endercentral.crazy_advancements.CrazyAdvancementsAPI"
author = "ZockerAxel"
apiVersion = "1.20.5" // Should be always same as dev bundle version
apiVersion = "1.21.11" // Should be always same as dev bundle version
load = BukkitPluginDescription.PluginLoadOrder.STARTUP

commands {
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,20 @@

public class AdvancementPacketReceiver {

private static HashMap<String, ChannelHandler> handlers = new HashMap<>();
private static final HashMap<String, ChannelHandler> handlers = new HashMap<>();
private static Field channelField;
private static Field networkManagerField;

{
for(Field f : Connection.class.getDeclaredFields()) {
static {
for (Field f : Connection.class.getDeclaredFields()) {
if(f.getType().isAssignableFrom(Channel.class)) {
channelField = f;
channelField.setAccessible(true);
break;
}
}

for(Field f : ServerCommonPacketListenerImpl.class.getDeclaredFields()) {
for (Field f : ServerCommonPacketListenerImpl.class.getDeclaredFields()) {
if(f.getType().isAssignableFrom(Connection.class)) {
networkManagerField = f;
networkManagerField.setAccessible(true);
Expand All @@ -45,8 +45,8 @@ public class AdvancementPacketReceiver {
}
}

interface PacketReceivingHandler {
public boolean handle(Player p, ServerboundSeenAdvancementsPacket packet);
public interface PacketReceivingHandler {
boolean handle(Player p, ServerboundSeenAdvancementsPacket packet);
}

public ChannelHandler listen(final Player p, final PacketReceivingHandler handler) {
Expand All @@ -55,7 +55,7 @@ public ChannelHandler listen(final Player p, final PacketReceivingHandler handle

ChannelHandler handle = new MessageToMessageDecoder<Packet<?>>() {
@Override
protected void decode(ChannelHandlerContext chc, Packet<?> packet, List<Object> out) throws Exception {
protected void decode(ChannelHandlerContext chc, Packet<?> packet, List<Object> out) {

if(packet instanceof ServerboundSeenAdvancementsPacket) {
if(!handler.handle(p, (ServerboundSeenAdvancementsPacket) packet)) {
Expand Down Expand Up @@ -110,35 +110,31 @@ public HashMap<String, ChannelHandler> getHandlers() {
}

public void initPlayer(Player p) {
handlers.put(p.getName(), listen(p, new PacketReceivingHandler() {

@Override
public boolean handle(Player p, ServerboundSeenAdvancementsPacket packet) {

if(packet.getAction() == ServerboundSeenAdvancementsPacket.Action.OPENED_TAB) {
NameKey name = new NameKey(packet.getTab());
AdvancementTabChangeEvent event = new AdvancementTabChangeEvent(p, name);
Bukkit.getPluginManager().callEvent(event);

if(event.isCancelled()) {
CrazyAdvancementsAPI.clearActiveTab(p);
return false;
} else {
if(!event.getTabAdvancement().equals(name)) {
CrazyAdvancementsAPI.setActiveTab(p, event.getTabAdvancement());
} else {
CrazyAdvancementsAPI.setActiveTab(p, name, false);
}
}
} else {
AdvancementScreenCloseEvent event = new AdvancementScreenCloseEvent(p);
Bukkit.getPluginManager().callEvent(event);
}


return true;
}
}));
handlers.put(p.getName(), listen(p, (p1, packet) -> {

if(packet.getAction() == ServerboundSeenAdvancementsPacket.Action.OPENED_TAB) {
NameKey name = new NameKey(packet.getTab());
AdvancementTabChangeEvent event = new AdvancementTabChangeEvent(p1, name);
Bukkit.getPluginManager().callEvent(event);

if(event.isCancelled()) {
CrazyAdvancementsAPI.clearActiveTab(p1);
return false;
} else {
if(!event.getTabAdvancement().equals(name)) {
CrazyAdvancementsAPI.setActiveTab(p1, event.getTabAdvancement());
} else {
CrazyAdvancementsAPI.setActiveTab(p1, name, false);
}
}
} else {
AdvancementScreenCloseEvent event = new AdvancementScreenCloseEvent(p1);
Bukkit.getPluginManager().callEvent(event);
}


return true;
}));
}

}
Original file line number Diff line number Diff line change
@@ -1,17 +1,28 @@
package eu.endercentral.crazy_advancements;

import javax.annotation.Nullable;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;

import javax.annotation.Nullable;

import java.util.*;
import com.google.gson.*;
import eu.endercentral.crazy_advancements.advancement.*;
import eu.endercentral.crazy_advancements.advancement.AdvancementDisplay.AdvancementFrame;
import eu.endercentral.crazy_advancements.advancement.criteria.CriteriaType;
import eu.endercentral.crazy_advancements.advancement.progress.GenericResult;
import eu.endercentral.crazy_advancements.advancement.progress.GrantCriteriaResult;
import eu.endercentral.crazy_advancements.advancement.serialized.SerializedAdvancement;
import eu.endercentral.crazy_advancements.advancement.serialized.SerializedAdvancementDisplay;
import eu.endercentral.crazy_advancements.command.ProgressChangeOperation;
import eu.endercentral.crazy_advancements.item.CustomItem;
import eu.endercentral.crazy_advancements.item.SerializedCustomItem;
import eu.endercentral.crazy_advancements.manager.AdvancementManager;
import eu.endercentral.crazy_advancements.packet.AdvancementsPacket;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.minecraft.advancements.Criterion;
import net.minecraft.advancements.criterion.ImpossibleTrigger;
import net.minecraft.network.protocol.game.ClientboundSelectAdvancementsTabPacket;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
Expand All @@ -30,32 +41,6 @@
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.plugin.java.JavaPlugin;

import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

import eu.endercentral.crazy_advancements.advancement.Advancement;
import eu.endercentral.crazy_advancements.advancement.AdvancementDisplay;
import eu.endercentral.crazy_advancements.advancement.AdvancementDisplay.AdvancementFrame;
import eu.endercentral.crazy_advancements.advancement.AdvancementFlag;
import eu.endercentral.crazy_advancements.advancement.AdvancementVisibility;
import eu.endercentral.crazy_advancements.advancement.ToastNotification;
import eu.endercentral.crazy_advancements.advancement.criteria.CriteriaType;
import eu.endercentral.crazy_advancements.advancement.progress.GenericResult;
import eu.endercentral.crazy_advancements.advancement.progress.GrantCriteriaResult;
import eu.endercentral.crazy_advancements.advancement.serialized.SerializedAdvancement;
import eu.endercentral.crazy_advancements.advancement.serialized.SerializedAdvancementDisplay;
import eu.endercentral.crazy_advancements.command.ProgressChangeOperation;
import eu.endercentral.crazy_advancements.item.CustomItem;
import eu.endercentral.crazy_advancements.item.SerializedCustomItem;
import eu.endercentral.crazy_advancements.manager.AdvancementManager;
import eu.endercentral.crazy_advancements.packet.AdvancementsPacket;
import net.minecraft.advancements.Criterion;
import net.minecraft.advancements.critereon.ImpossibleTrigger;
import net.minecraft.network.protocol.game.ClientboundSelectAdvancementsTabPacket;

/**
* Represents the API's Plugin
*
Expand All @@ -66,23 +51,19 @@ public class CrazyAdvancementsAPI extends JavaPlugin implements Listener {

public static final String API_NAMESPACE = "crazy_advancements";

private static final Gson gson;
private static final Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
private static final List<String> SELECTORS = Arrays.asList("@a", "@p", "@s", "@r");
private static CrazyAdvancementsAPI instance;

static {
gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
}
public static final MiniMessage msg = MiniMessage.miniMessage();

/**
* Criterion Instance for Internal Use
*/
public static final Criterion<?> CRITERION = new Criterion<>(new ImpossibleTrigger(), new ImpossibleTrigger.TriggerInstance());



private static CrazyAdvancementsAPI instance;
private static AdvancementPacketReceiver packetReciever;
private static HashMap<String, NameKey> activeTabs = new HashMap<>();
private static final HashMap<String, NameKey> activeTabs = new HashMap<>();

private final List<CustomItem> customItems = new ArrayList<>();
private AdvancementManager fileAdvancementManager;
Expand Down Expand Up @@ -207,15 +188,15 @@ private void loadFileAdvancements() {

//Generate Display
ItemStack icon = getItemStack(serializedAdvancementDisplay.getIcon());
JSONMessage title = new JSONMessage(serializedAdvancementDisplay.getTitle().deserialize());
JSONMessage description = new JSONMessage(serializedAdvancementDisplay.getDescription().deserialize());
Component title = serializedAdvancementDisplay.getTitle().deserial();
Component description = serializedAdvancementDisplay.getDescription().deserial();
AdvancementFrame frame = AdvancementFrame.parse(serializedAdvancementDisplay.getFrame());
AdvancementVisibility visibility = AdvancementVisibility.parseVisibility(serializedAdvancementDisplay.getVisibility());

AdvancementDisplay display = new AdvancementDisplay(icon, title, description, frame, visibility);

if(serializedAdvancementDisplay.getBackgroundTexture() != null) {
display.setBackgroundTexture(serializedAdvancementDisplay.getBackgroundTexture());
display.background(new NameKey(serializedAdvancementDisplay.getBackgroundTexture()));
}

display.setX(serializedAdvancementDisplay.getX());
Expand Down Expand Up @@ -337,13 +318,7 @@ public void onJoin(PlayerJoinEvent e) {

//Add Player to File Advancement Manager
fileAdvancementManager.loadProgress(player);
Bukkit.getScheduler().runTaskLater(this, new Runnable() {

@Override
public void run() {
fileAdvancementManager.addPlayer(player);
}
}, 2);
Bukkit.getScheduler().runTaskLater(this, () -> fileAdvancementManager.addPlayer(player), 2);
}

@EventHandler
Expand Down Expand Up @@ -402,8 +377,8 @@ public static NameKey getActiveTab(Player player) {
return activeTabs.get(player.getUniqueId().toString());
}

private final String noPermission = "§cI'm sorry but you do not have permission to perform this command. Please contact the server administrator if you believe that this is an error.";
private final String commandIncompatible = "§cThis Command is incompatible with your Arguments!";
private static final String noPermission = "§cI'm sorry but you do not have permission to perform this command. Please contact the server administrator if you believe that this is an error.";
private static final String commandIncompatible = "§cThis Command is incompatible with your Arguments!";

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
Expand Down Expand Up @@ -441,7 +416,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
toast.send(player);
}

sender.sendMessage(players.size() == 1 ? "§aSuccessfully displayed Toast to §b" + players.get(0).getName() + "§a!" : "§aSuccessfully displayed Toast to §e" + players.size() + "§aPlayers!");
sender.sendMessage(players.size() == 1 ? "§aSuccessfully displayed Toast to §b" + players.getFirst().getName() + "§a!" : "§aSuccessfully displayed Toast to §e" + players.size() + "§aPlayers!");
} else {
sender.sendMessage("§c'" + args[1] + "' isn't a valid Item Material");
}
Expand Down Expand Up @@ -833,7 +808,7 @@ private CustomItem getCustomItem(String input) {
}
return null;
}

private ItemStack getItemStack(String input, CommandSender... commandSender) {
int colonIndex = input.indexOf(':');
String materialName = colonIndex == -1 ? input : input.substring(0, colonIndex);
Expand All @@ -849,8 +824,7 @@ private ItemStack getItemStack(String input, CommandSender... commandSender) {
} else {
material = customItem.getType();
stack = new ItemStack(material);
ItemMeta meta = stack.getItemMeta();
meta.setCustomModelData(customItem.getCustomModelData());
ItemMeta meta = model(stack, customItem);
stack.setItemMeta(meta);
}
} else {
Expand All @@ -871,7 +845,7 @@ private ItemStack getItemStack(String input, CommandSender... commandSender) {
}

if(players.size() > 0) {
Player player = players.get(0);
Player player = players.getFirst();
SkullMeta meta = (SkullMeta) stack.getItemMeta();
meta.setOwningPlayer(player);
stack.setItemMeta(meta);
Expand All @@ -898,5 +872,11 @@ private ItemStack getItemStack(String input, CommandSender... commandSender) {
return stack;
}
}


@Deprecated(forRemoval = true)
private static ItemMeta model(final ItemStack stack, final CustomItem customItem) {
final ItemMeta meta = stack.getItemMeta();
meta.setCustomModelData(customItem.getCustomModelData());
return meta;
}
}
Loading