Merge remote-tracking branch 'origin/master' into 16+17
This commit is contained in:
commit
d6e398a309
7 files changed
+257
-57
No files matched your search
@@ -21,12 +21,15 @@ public class SimpleAdminHacks extends ACivMod {
|
||||
|
||||
private final SimpleAdminHacksConfig config;
|
||||
private final HackManager manager;
|
||||
private CommandRegistrar commands;
|
||||
private final CommandRegistrar commands;
|
||||
private final SimpleAdminHacksSettingManager settingManager;
|
||||
|
||||
public SimpleAdminHacks() {
|
||||
plugin = this;
|
||||
this.config = new SimpleAdminHacksConfig(this);
|
||||
this.manager = new HackManager(this);
|
||||
this.commands = new CommandRegistrar(this);
|
||||
this.settingManager = new SimpleAdminHacksSettingManager();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -95,6 +98,15 @@ public class SimpleAdminHacks extends ACivMod {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the CivModCore PlayerSetting Manager
|
||||
* @return
|
||||
*/
|
||||
|
||||
public SimpleAdminHacksSettingManager getSettingManager() {
|
||||
return settingManager;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// Deprecated
|
||||
// ------------------------------------------------------------
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.programmerdan.minecraft.simpleadminhacks;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import vg.civcraft.mc.civmodcore.playersettings.PlayerSettingAPI;
|
||||
import vg.civcraft.mc.civmodcore.playersettings.gui.MenuSection;
|
||||
|
||||
public class SimpleAdminHacksSettingManager {
|
||||
|
||||
private MenuSection mainMenu;
|
||||
|
||||
public SimpleAdminHacksSettingManager() {
|
||||
this.mainMenu = PlayerSettingAPI.getMainMenu().createMenuSection("SimpleAdminHacks", "Config values for all small tweaks from SAH", new ItemStack(
|
||||
Material.CAULDRON));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Menu Section used to bundle together all SAH /config tweaks
|
||||
* @return SAH /config Menu
|
||||
*/
|
||||
public MenuSection getMainMenu() {
|
||||
return mainMenu;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.programmerdan.minecraft.simpleadminhacks.hacks;
|
||||
|
||||
import com.destroystokyo.paper.event.player.PlayerJumpEvent;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.SimpleAdminHacks;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.configs.GameFeaturesConfig;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.framework.SimpleHack;
|
||||
@@ -14,7 +13,6 @@ import org.apache.commons.lang3.time.DateUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
@@ -47,7 +45,6 @@ import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.event.player.PlayerToggleSneakEvent;
|
||||
import org.bukkit.event.vehicle.VehicleDestroyEvent;
|
||||
import org.bukkit.event.vehicle.VehicleExitEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@@ -549,37 +546,6 @@ public class GameFeatures extends SimpleHack<GameFeaturesConfig> implements List
|
||||
killer, loc.getWorld().getName(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void goldBlockJump(PlayerJumpEvent event) {
|
||||
Block below = event.getFrom().getBlock().getRelative(BlockFace.DOWN);
|
||||
if (below.getType() != Material.GOLD_BLOCK) {
|
||||
return;
|
||||
}
|
||||
for(int y = below.getY() + 1; y <= below.getWorld().getMaxHeight(); y++) {
|
||||
if (doTeleport(below, event.getPlayer(), y)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
event.getPlayer().sendMessage(ChatColor.RED + "No gold block to teleport you up to. Sneak to teleport down instead.");
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void goldBlockSneak(PlayerToggleSneakEvent event) {
|
||||
Block below = event.getPlayer().getLocation().getBlock().getRelative(BlockFace.DOWN);
|
||||
if (below.getType() != Material.GOLD_BLOCK) {
|
||||
return;
|
||||
}
|
||||
if (!event.isSneaking()) {
|
||||
return;
|
||||
}
|
||||
for(int y = (below.getY() - 1); y > below.getWorld().getMinHeight(); y--) {
|
||||
if (doTeleport(below, event.getPlayer(), y)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
event.getPlayer().sendMessage(ChatColor.RED + "No gold block to teleport you down to. Jump to teleport up instead.");
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL)
|
||||
public void netheriteCrafting(PrepareSmithingEvent event) {
|
||||
if (!config.isEnabled() || !config.isDisableNetheriteCrafting()) {
|
||||
@@ -611,22 +577,4 @@ public class GameFeatures extends SimpleHack<GameFeaturesConfig> implements List
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean doTeleport(Block source, Player player, int y) {
|
||||
Block target = source.getWorld().getBlockAt(source.getX(), y, source.getZ());
|
||||
if (target.getType() != Material.GOLD_BLOCK) {
|
||||
return false;
|
||||
}
|
||||
if (!TeleportUtil.checkForTeleportSpace(target.getRelative(BlockFace.UP).getLocation())) {
|
||||
return false;
|
||||
}
|
||||
source.getWorld().playSound(source.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1.0F, 8.0F);
|
||||
Location adjustedLocation = target.getLocation().clone();
|
||||
adjustedLocation.add(0.5, 1.02, 0.5);
|
||||
adjustedLocation.setYaw(player.getLocation().getYaw());
|
||||
adjustedLocation.setPitch(player.getLocation().getPitch());
|
||||
player.playSound(adjustedLocation, Sound.ENTITY_ENDERMAN_TELEPORT, 1.0F, 8.0F);
|
||||
player.teleport(adjustedLocation);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
package com.programmerdan.minecraft.simpleadminhacks.hacks.basic;
|
||||
|
||||
import com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.SimpleAdminHacks;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.framework.BasicHack;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.framework.BasicHackConfig;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.framework.autoload.AutoLoad;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.entity.EnderPearl;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||
import org.bukkit.persistence.PersistentDataContainer;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
import vg.civcraft.mc.civmodcore.util.ConfigParsing;
|
||||
|
||||
public class AntiStatisChamber extends BasicHack {
|
||||
|
||||
@AutoLoad
|
||||
private String pearlLifetime;
|
||||
private long lifetimeValue;
|
||||
private NamespacedKey key;
|
||||
|
||||
public AntiStatisChamber(SimpleAdminHacks plugin, BasicHackConfig config) {
|
||||
super(plugin, config);
|
||||
this.key = new NamespacedKey(plugin, "pearl_thrown_time");
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onPlayerThrowPearl(PlayerLaunchProjectileEvent event) {
|
||||
Projectile projectile = event.getProjectile();
|
||||
if (!(projectile instanceof EnderPearl)) {
|
||||
return;
|
||||
}
|
||||
EnderPearl pearl = (EnderPearl) projectile;
|
||||
PersistentDataContainer pdc = pearl.getPersistentDataContainer();
|
||||
pdc.set(key, PersistentDataType.LONG, System.currentTimeMillis());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onPearlLand(ProjectileHitEvent event) {
|
||||
this.lifetimeValue = ConfigParsing.parseTime(this.pearlLifetime);
|
||||
Projectile projectile = event.getEntity();
|
||||
if (!(projectile instanceof EnderPearl)) {
|
||||
return;
|
||||
}
|
||||
EnderPearl pearl = (EnderPearl) projectile;
|
||||
PersistentDataContainer pdc = pearl.getPersistentDataContainer();
|
||||
Long pearlThrownTime = pdc.get(key, PersistentDataType.LONG);
|
||||
if (pearlThrownTime == null) {
|
||||
pearl.remove();
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if ((System.currentTimeMillis() - pearlThrownTime) > lifetimeValue) {
|
||||
//We remove the pearl here because cancelling the event doesn't prevent the pearl from actually landing
|
||||
pearl.remove();
|
||||
if (pearl.getShooter() instanceof Player) {
|
||||
((Player) pearl.getShooter()).sendMessage(Component.text("Your pearl failed to land for being in flight for more than " + pearlLifetime).color(NamedTextColor.RED));
|
||||
}
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-4
@@ -7,7 +7,6 @@ import com.programmerdan.minecraft.simpleadminhacks.framework.autoload.AutoLoad;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import vg.civcraft.mc.civmodcore.config.ConfigHelper;
|
||||
@@ -58,9 +57,7 @@ public class DogFacts extends BasicHack {
|
||||
}
|
||||
|
||||
private void initSettings() {
|
||||
MenuSection menu = PlayerSettingAPI.getMainMenu()
|
||||
.createMenuSection("Announcement Settings", "Settings relating to Announcements", new ItemStack(
|
||||
Material.OAK_SIGN));
|
||||
MenuSection menu = plugin.getSettingManager().getMainMenu();
|
||||
disableAnnouncements =
|
||||
new BooleanSetting(plugin, false, "Disable Announcements", "disableAnnouncements",
|
||||
"Disable Announcements?");
|
||||
|
||||
+145
@@ -0,0 +1,145 @@
|
||||
package com.programmerdan.minecraft.simpleadminhacks.hacks.basic;
|
||||
|
||||
import com.destroystokyo.paper.event.player.PlayerJumpEvent;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.SimpleAdminHacks;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.framework.BasicHack;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.framework.BasicHackConfig;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.framework.utilities.TeleportUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerToggleSneakEvent;
|
||||
import vg.civcraft.mc.civmodcore.playersettings.PlayerSettingAPI;
|
||||
import vg.civcraft.mc.civmodcore.playersettings.gui.MenuSection;
|
||||
import vg.civcraft.mc.civmodcore.playersettings.impl.BooleanSetting;
|
||||
import vg.civcraft.mc.civmodcore.util.DoubleInteractFixer;
|
||||
|
||||
public class GoldBlockElevators extends BasicHack {
|
||||
|
||||
private BooleanSetting useJumpSneakTP;
|
||||
private DoubleInteractFixer interactFixer;
|
||||
|
||||
public GoldBlockElevators(SimpleAdminHacks plugin, BasicHackConfig config) {
|
||||
super(plugin, config);
|
||||
this.interactFixer = new DoubleInteractFixer(plugin);
|
||||
initSettings();
|
||||
}
|
||||
|
||||
private void initSettings() {
|
||||
MenuSection mainMenu = plugin.getSettingManager().getMainMenu();
|
||||
this.useJumpSneakTP =
|
||||
new BooleanSetting(plugin, true, "Use Jump or Sneak to teleport on gold blocks", "jumpOrSneakTp",
|
||||
"When true, jumping or sneaking on gold blocks will teleport you up/down, when false, right or left clicking will do the same.");
|
||||
PlayerSettingAPI.registerSetting(this.useJumpSneakTP, mainMenu);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void goldBlockSneak(PlayerToggleSneakEvent event) {
|
||||
if (!this.useJumpSneakTP.getValue(event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
Block below = event.getPlayer().getLocation().getBlock().getRelative(BlockFace.DOWN);
|
||||
if (below.getType() != Material.GOLD_BLOCK) {
|
||||
return;
|
||||
}
|
||||
if (!event.isSneaking()) {
|
||||
return;
|
||||
}
|
||||
for (int y = (below.getY() - 1); y > below.getWorld().getMinHeight(); y--) {
|
||||
if (doTeleport(below, event.getPlayer(), y)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
event.getPlayer().sendMessage(
|
||||
ChatColor.RED + "No gold block to teleport you down to. Jump to teleport up instead.");
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void goldBlockJump(PlayerJumpEvent event) {
|
||||
if (!this.useJumpSneakTP.getValue(event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
Block below = event.getFrom().getBlock().getRelative(BlockFace.DOWN);
|
||||
if (below.getType() != Material.GOLD_BLOCK) {
|
||||
return;
|
||||
}
|
||||
for (int y = below.getY() + 1; y <= below.getWorld().getMaxHeight(); y++) {
|
||||
if (doTeleport(below, event.getPlayer(), y)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
event.getPlayer()
|
||||
.sendMessage(ChatColor.RED + "No gold block to teleport you up to. Sneak to teleport down instead.");
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void goldBlockInteract(PlayerInteractEvent event) {
|
||||
if (this.useJumpSneakTP.getValue(event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||
if (interactFixer.checkInteracted(event.getPlayer(), event.getClickedBlock())) {
|
||||
return;
|
||||
}
|
||||
} else if (event.getAction() != Action.LEFT_CLICK_BLOCK) {
|
||||
return;
|
||||
}
|
||||
Block below = event.getPlayer().getLocation().getBlock().getRelative(BlockFace.DOWN);
|
||||
if (below.getType() != Material.GOLD_BLOCK) {
|
||||
return;
|
||||
}
|
||||
if (event.getClickedBlock() == null) {
|
||||
return;
|
||||
}
|
||||
if (!event.getClickedBlock().equals(below)) {
|
||||
return;
|
||||
}
|
||||
if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
|
||||
for (int y = below.getY() - 1; y > below.getWorld().getMinHeight(); y--) {
|
||||
if (doTeleport(below, event.getPlayer(), y)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
event.getPlayer().sendMessage(
|
||||
Component.text("No gold block to teleport you down to. Right click to teleport up instead.")
|
||||
.color(NamedTextColor.RED));
|
||||
} else {
|
||||
for (int y = below.getY() + 1; y <= below.getWorld().getMaxHeight(); y++) {
|
||||
if (doTeleport(below, event.getPlayer(), y)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
event.getPlayer().sendMessage(
|
||||
Component.text("No gold block to teleport you up to. Left click to teleport down instead.")
|
||||
.color(NamedTextColor.RED));
|
||||
}
|
||||
}
|
||||
|
||||
private boolean doTeleport(Block source, Player player, int y) {
|
||||
Block target = source.getWorld().getBlockAt(source.getX(), y, source.getZ());
|
||||
if (target.getType() != Material.GOLD_BLOCK) {
|
||||
return false;
|
||||
}
|
||||
if (!TeleportUtil.checkForTeleportSpace(target.getRelative(BlockFace.UP).getLocation())) {
|
||||
return false;
|
||||
}
|
||||
source.getWorld().playSound(source.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1.0F, 8.0F);
|
||||
Location adjustedLocation = target.getLocation().clone();
|
||||
adjustedLocation.add(0.5, 1.02, 0.5);
|
||||
adjustedLocation.setYaw(player.getLocation().getYaw());
|
||||
adjustedLocation.setPitch(player.getLocation().getPitch());
|
||||
player.playSound(adjustedLocation, Sound.ENTITY_ENDERMAN_TELEPORT, 1.0F, 8.0F);
|
||||
player.teleport(adjustedLocation);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,10 @@ hacks:
|
||||
enabled: true
|
||||
breakDenyDuration: 3000
|
||||
laggLenciency: 1.2
|
||||
#Prevents pearls from landing that have been in flight for more than the configured amount of time
|
||||
AntiStatisChamber:
|
||||
enabled: true
|
||||
pearlLifetime: 5m
|
||||
ArthropodEggHack:
|
||||
enabled: true
|
||||
eggChance: 0.03
|
||||
@@ -96,6 +100,8 @@ hacks:
|
||||
enabled: true
|
||||
EventHandlerList:
|
||||
enabled: true
|
||||
GoldBlockElevators:
|
||||
enabled: true
|
||||
HumbugBatchOne:
|
||||
enabled: true
|
||||
allowSheepDying: true
|
||||
|
||||
Reference in new issue
Block a user