Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 14 additions & 15 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,57 +7,56 @@
<parent>
<groupId>com.github.civclassic</groupId>
<artifactId>civclassic-parent</artifactId>
<version>1.0.0</version>
<version>1.0.1</version>
</parent>

<groupId>com.programmerdan.minecraft</groupId>
<artifactId>SimpleAdminHacks</artifactId>
<packaging>jar</packaging>
<version>1.4.1</version>
<version>1.5.0</version>
<name>SimpleAdminHacks</name>
<url>https://github.com/CivClassic/SimpleAdminHacks</url>

<dependencies>
<dependency>
<groupId>com.destroystokyo.paper</groupId>
<groupId>io.papermc.paper</groupId>
<artifactId>paper</artifactId>
<version>1.16.5-R0.1-SNAPSHOT</version>
<version>1.17.1-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>vg.civcraft.mc.civmodcore</groupId>
<groupId>com.github.civclassic</groupId>
<artifactId>CivModCore</artifactId>
<version>1.8.3</version>
<version>1.9.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>vg.civcraft.mc.namelayer</groupId>
<groupId>com.github.civclassic</groupId>
<artifactId>NameLayer</artifactId>
<version>2.14.1</version>
<version>2.15.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>vg.civcraft.mc.citadel</groupId>
<groupId>com.github.civclassic</groupId>
<artifactId>Citadel</artifactId>
<version>4.1.1</version>
<version>4.2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.minelink</groupId>
<artifactId>CombatTagPlus</artifactId>
<version>1.3.3-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId>
<version>4.6.0</version>
<version>4.7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.programmerdan.minecraft</groupId>
<groupId>com.github.civclassic</groupId>
<artifactId>banstick</artifactId>
<version>1.2.2</version>
<version>1.3.0</version>
<scope>provided</scope>
</dependency>
<!-- Test Dependencies -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,11 @@ public SimpleAdminHacks() {

@Override
public void onEnable() {
this.useNewCommandHandler = false;
super.onEnable();
if (!this.config.parse()) {
setEnabled(false);
return;
}
this.commands.init();
this.manager.loadAllHacks();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.programmerdan.minecraft.simpleadminhacks;

import org.bukkit.configuration.ConfigurationSection;
import vg.civcraft.mc.civmodcore.CoreConfigManager;
import vg.civcraft.mc.civmodcore.config.ConfigParser;

/**
* Baseline configuration for SimpleAdminHacks and parser for all actual Hacks.
*
* @author ProgrammerDan
*/
public class SimpleAdminHacksConfig extends CoreConfigManager {
public class SimpleAdminHacksConfig extends ConfigParser {

private static final int EXPECTED_CONFIG_LEVEL = 1;

Expand All @@ -25,11 +25,11 @@ public SimpleAdminHacksConfig(final SimpleAdminHacks plugin) {
protected boolean parseInternal(final ConfigurationSection config) {
final int actual_config_level = config.getInt("configuration_file_version", -1);
if (actual_config_level < 0 || actual_config_level > SimpleAdminHacksConfig.EXPECTED_CONFIG_LEVEL) {
this.plugin.severe("Invalid configuration version!");
this.plugin.getLogger().severe("Invalid configuration version!");
return false;
}
this.broadcastPermission = config.getString("broadcast_permission", DEFAULT_BROADCAST_PERM);
this.plugin.info("Broadcast permission: " + this.broadcastPermission);
this.plugin.getLogger().info("Broadcast permission: " + this.broadcastPermission);
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import vg.civcraft.mc.civmodcore.playersettings.PlayerSettingAPI;
import vg.civcraft.mc.civmodcore.playersettings.gui.MenuSection;
import vg.civcraft.mc.civmodcore.players.settings.PlayerSettingAPI;
import vg.civcraft.mc.civmodcore.players.settings.gui.MenuSection;

public class SimpleAdminHacksSettingManager {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@
import org.bukkit.entity.EntityType;
import org.bukkit.event.entity.CreatureSpawnEvent;
import vg.civcraft.mc.civmodcore.config.ConfigHelper;
import vg.civcraft.mc.civmodcore.util.CivLogger;
import vg.civcraft.mc.civmodcore.util.MoreCollectionUtils;
import vg.civcraft.mc.civmodcore.utilities.CivLogger;

public final class DisableAIConfig extends SimpleHackConfig {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.programmerdan.minecraft.simpleadminhacks.framework.SimpleHackConfig;
import javax.annotation.Nonnull;
import org.bukkit.configuration.ConfigurationSection;
import vg.civcraft.mc.civmodcore.util.CivLogger;
import vg.civcraft.mc.civmodcore.utilities.CivLogger;

public final class ElytraFeaturesConfig extends SimpleHackConfig {
private final CivLogger logger;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
package com.programmerdan.minecraft.simpleadminhacks.framework;

import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import com.google.common.primitives.Primitives;
import com.programmerdan.minecraft.simpleadminhacks.SimpleAdminHacks;
import com.programmerdan.minecraft.simpleadminhacks.framework.autoload.AutoLoad;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.util.NumberConversions;
import vg.civcraft.mc.civmodcore.utilities.CivLogger;

/**
* Baseline structure for a managed hack.
Expand All @@ -22,15 +22,15 @@
*/
public abstract class SimpleHack<T extends SimpleHackConfig> {

protected final CivLogger logger;
protected final SimpleAdminHacks plugin;
protected final T config;
private boolean enabled;

public SimpleHack(final SimpleAdminHacks plugin, final T config) {
Preconditions.checkNotNull(plugin, "Plugin cannot be null!");
Preconditions.checkNotNull(config, "Config cannot be null!");
this.plugin = plugin;
this.config = config;
this.logger = CivLogger.getLogger(getClass());
this.plugin = Objects.requireNonNull(plugin, "Plugin cannot be null!");
this.config = Objects.requireNonNull(config, "Config cannot be null!");
}

public final SimpleAdminHacks plugin() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,18 @@
import com.programmerdan.minecraft.simpleadminhacks.framework.SimpleHackConfig;
import java.util.ArrayList;
import java.util.List;
import vg.civcraft.mc.civmodcore.command.AikarCommandManager;
import vg.civcraft.mc.civmodcore.commands.CommandManager;

public class CommandRegistrar extends AikarCommandManager {
public class CommandRegistrar extends CommandManager {

public static final String ROOT_ALIAS = "hacks|hack|sah";
public static final String PERMISSION_HACKS = "simpleadmin.hacks";

private final SimpleAdminHacks plugin;

public CommandRegistrar(final SimpleAdminHacks plugin) {
super(plugin, false);
super(plugin);
init();
this.plugin = plugin;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.programmerdan.minecraft.simpleadminhacks.framework.commands;

import co.aikar.commands.BaseCommand;
import co.aikar.commands.InvalidCommandArgument;
import co.aikar.commands.annotation.CommandAlias;
import co.aikar.commands.annotation.CommandCompletion;
Expand All @@ -15,10 +16,9 @@
import java.util.List;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.command.CommandSender;
import vg.civcraft.mc.civmodcore.command.AikarCommand;

@CommandPermission(CommandRegistrar.PERMISSION_HACKS)
public class HacksCommand extends AikarCommand {
public class HacksCommand extends BaseCommand {

protected final SimpleAdminHacks plugin;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@
import com.programmerdan.minecraft.simpleadminhacks.SimpleAdminHacks;
import com.programmerdan.minecraft.simpleadminhacks.configs.DisableAIConfig;
import com.programmerdan.minecraft.simpleadminhacks.framework.SimpleHack;
import net.minecraft.nbt.NBTTagCompound;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.craftbukkit.v1_17_R1.persistence.CraftPersistentDataContainer;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import vg.civcraft.mc.civmodcore.serialization.NBTCompound;

public final class DisableAI extends SimpleHack<DisableAIConfig> implements Listener {

Expand Down Expand Up @@ -42,7 +43,7 @@ public void disableModAI(final EntityAddToWorldEvent event) {
return;
}
final var livingEntity = (LivingEntity) entity;
final var nbt = new NBTCompound(entity.getPersistentDataContainer());
final var nbt = new NBTTagCompound(((CraftPersistentDataContainer) entity.getPersistentDataContainer()).getRaw()){};
if (!config().isLimitingEntityAI(entity.getType(), entity.getEntitySpawnReason())) {
// If the entity was disabled before, re-enable it
if (nbt.hasKey(HAS_BEEN_DISABLED_KEY)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
package com.programmerdan.minecraft.simpleadminhacks.hacks;

import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketEvent;
import com.destroystokyo.paper.PaperConfig;
import com.programmerdan.minecraft.simpleadminhacks.SimpleAdminHacks;
import com.programmerdan.minecraft.simpleadminhacks.configs.GameFixesConfig;
import com.programmerdan.minecraft.simpleadminhacks.framework.SimpleHack;
import com.programmerdan.minecraft.simpleadminhacks.framework.utilities.PacketManager;
import java.nio.charset.StandardCharsets;
import java.util.logging.Level;
import net.minecraft.server.v1_16_R3.ItemStack;
import net.minecraft.server.v1_16_R3.PacketPlayInBEdit;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
Expand Down Expand Up @@ -49,7 +41,6 @@
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.event.world.StructureGrowEvent;
import org.bukkit.inventory.InventoryHolder;
import vg.civcraft.mc.civmodcore.serialization.NBTCompound;

public class GameFixes extends SimpleHack<GameFixesConfig> implements Listener {

Expand All @@ -61,43 +52,6 @@ public GameFixes(SimpleAdminHacks plugin, GameFixesConfig config) {
super(plugin, config);
}

@Override
public void onEnable() {
super.onEnable();
this.plugin.registerListener(this);
if (this.config.hardLimitBookPageSize()) {
this.protocol.addAdapter(new PacketAdapter(this.plugin, PacketType.Play.Client.B_EDIT) {
@Override
public void onPacketReceiving(final PacketEvent event) {
final PacketContainer packet = event.getPacket();
final Player player = event.getPlayer();
final String errorMessage = "DUPE ALERT! " + player.getName() + " sent an over sized book packet!";
final int maxBookPageSize = PaperConfig.maxBookPageSize;
final int maxBookPageLength = 256 * 4;
// NMS ItemStack, not Bukkit
final ItemStack item = ((PacketPlayInBEdit) packet.getHandle()).b();
final NBTCompound nbt = new NBTCompound(item.getTag());
final String[] pages = nbt.getStringArray("pages");
if (pages.length > maxBookPageSize) {
plugin().warning(errorMessage);
plugin().warning("- Too many pages! [" + pages.length + "/" + maxBookPageSize + "]");
event.setCancelled(true);
return;
}
for (final String page : pages) {
final byte[] raw = page.getBytes(StandardCharsets.UTF_8);
if (raw.length > maxBookPageLength) {
plugin().warning(errorMessage);
plugin().warning("- Page too long! [" + raw.length + "/" + maxBookPageLength + "]");
event.setCancelled(true);
return;
}
}
}
});
}
}

@Override
public void onDisable() {
this.protocol.removeAllAdapters();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import javax.annotation.Nonnull;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
Expand Down Expand Up @@ -51,7 +52,6 @@
import org.bukkit.inventory.meta.SpawnEggMeta;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.jetbrains.annotations.NotNull;
import vg.civcraft.mc.civmodcore.inventory.items.ItemUtils;

/**
Expand Down Expand Up @@ -466,7 +466,7 @@ public void onRain(WeatherChangeEvent event) {
}

@Override
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
public boolean onCommand(@Nonnull CommandSender commandSender, @Nonnull Command command, @Nonnull String s, @Nonnull String[] strings) {
Map<Material, Integer> blockLimits = config.getBlockEntityLimits();

StringBuilder stringB = new StringBuilder();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,18 @@
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import net.minecraft.server.v1_16_R3.NBTTagCompound;
import net.minecraft.server.v1_16_R3.NBTTagList;
import net.minecraft.server.v1_16_R3.WorldNBTStorage;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.world.level.storage.WorldNBTStorage;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.craftbukkit.v1_16_R3.CraftServer;
import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftInventoryPlayer;
import org.bukkit.craftbukkit.v1_17_R1.CraftServer;
import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftInventoryPlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryCloseEvent;
Expand Down Expand Up @@ -68,7 +68,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
}
if (player == null && playerUID != null) { // Go deep into NBT.
@SuppressWarnings("resource")
WorldNBTStorage storage = ((CraftServer) plugin().getServer()).getServer().worldNBTStorage;
WorldNBTStorage storage = ((CraftServer) plugin().getServer()).getServer().k;
NBTTagCompound rawPlayer = storage.getPlayerData(playerUID.toString());

if (rawPlayer != null) {
Expand All @@ -83,7 +83,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
int food = rawPlayer.getInt("foodLevel");

// Fun NMS inventory reconstruction from file data.
net.minecraft.server.v1_16_R3.PlayerInventory nms_pl_inv = new net.minecraft.server.v1_16_R3.PlayerInventory(null);
net.minecraft.world.entity.player.PlayerInventory nms_pl_inv = new net.minecraft.world.entity.player.PlayerInventory(null);
NBTTagList inv = rawPlayer.getList("Inventory", rawPlayer.getTypeId());
nms_pl_inv.b(inv); // We use this to bypass the Craft code which requires a player object, unlike NMS.
PlayerInventory pl_inv = new CraftInventoryPlayer(nms_pl_inv);
Expand Down
Loading