EinfxchAlexander

Untitled

Oct 24th, 2026
24
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.81 KB | Gaming | 0 0
  1. package de.deinserver.zone;
  2. import org.bukkit.Bukkit;
  3. import org.bukkit.World;
  4. import org.bukkit.WorldBorder;
  5. import org.bukkit.block.Biome;
  6. import org.bukkit.command.Command;
  7. import org.bukkit.command.CommandExecutor;
  8. import org.bukkit.command.CommandSender;
  9. import org.bukkit.plugin.java.JavaPlugin;
  10. import org.bukkit.scheduler.BukkitRunnable;
  11. import org.bukkit.scheduler.BukkitTask;
  12. import java.util.Random;
  13. public final class ZonePlugin extends JavaPlugin implements CommandExecutor {
  14.     private boolean zoneActive = false;
  15.     private double currentX = 0;
  16.     private double currentZ = 0;
  17.     private double currentSize = 2000;
  18.     private BukkitTask activeTask = null;
  19.     private final double START_SIZE = 2000;
  20.     private final double MAX_RADIUS = 800;
  21.     private final double P1_SIZE = 1000;
  22.     private final double P2_SIZE = 400;
  23.     private final double P3_SIZE = 50;
  24.     @Override
  25.     public void onEnable() {
  26.         saveDefaultConfig();
  27.         getConfig().options().copyDefaults(true);
  28.         saveConfig();
  29.         if (getCommand("zonestart") != null) {
  30.             getCommand("zonestart").setExecutor(this);
  31.         }
  32.         if (getCommand("zonereset") != null) {
  33.             getCommand("zonereset").setExecutor(this);
  34.         }
  35.     }
  36.     @Override
  37.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  38.         if (command.getName().equalsIgnoreCase("zonestart")) {
  39.             if (!sender.hasPermission("zone.start")) return true;
  40.             startZoneGame();
  41.             return true;
  42.         }
  43.         if (command.getName().equalsIgnoreCase("zonereset")) {
  44.             if (!sender.hasPermission("zone.reset")) return true;
  45.             resetZone();
  46.             return true;
  47.         }
  48.         return false;
  49.     }
  50.     private void resetZone() {
  51.         zoneActive = false;
  52.         if (activeTask != null) {
  53.             activeTask.cancel();
  54.         }
  55.         World world = Bukkit.getWorld("world");
  56.         if (world != null) {
  57.             WorldBorder border = world.getWorldBorder();
  58.             border.setSize(10000);
  59.             border.setCenter(0, 0);
  60.         }
  61.         currentX = 0;
  62.         currentZ = 0;
  63.         Bukkit.broadcastMessage("§c[Zone] §fThe WorldBorder was stopped and fully reset.");
  64.     }
  65.     private void startZoneGame() {
  66.         zoneActive = true;
  67.         currentX = 0;
  68.         currentZ = 0;
  69.         currentSize = START_SIZE;
  70.         World world = Bukkit.getWorld("world");
  71.         if (world == null) return;
  72.         WorldBorder border = world.getWorldBorder();
  73.         border.setDamageBuffer(0);
  74.         border.setDamageAmount(2);
  75.         border.setSize(START_SIZE);
  76.         border.setCenter(0, 0);
  77.         Bukkit.broadcastMessage("§c[Zone] §aThe game has started! The Zone size is set to §e"
  78.                 + (int) START_SIZE + "x" + (int) START_SIZE + " §ablocks.");
  79.         int startWaitSeconds = getConfiguredSeconds("timings.start-wait-seconds", 60, true);
  80.         if (startWaitSeconds == 0) {
  81.             runPhase1();
  82.             return;
  83.         }
  84.         activeTask = new BukkitRunnable() {
  85.             int waitCounter = startWaitSeconds;
  86.             @Override
  87.             public void run() {
  88.                 if (!zoneActive) {
  89.                     cancel();
  90.                     return;
  91.                 }
  92.                 waitCounter--;
  93.                 if (waitCounter <= 0) {
  94.                     cancel();
  95.                     runPhase1();
  96.                 }
  97.             }
  98.         }.runTaskTimer(this, 20L, 20L);
  99.     }
  100.     private void runPhase1() {
  101.         World world = Bukkit.getWorld("world");
  102.         if (world == null) return;
  103.         double[] target = getRandomNonOceanLocation(world, currentX, currentZ, MAX_RADIUS);
  104.         double targetX = target[0];
  105.         double targetZ = target[1];
  106.         long duration = getConfiguredSeconds("timings.phase-1-seconds", 2700, false);
  107.         Bukkit.broadcastMessage("§c[Zone] §fPhase 1 starting! The Zone is continuously moving and shrinking over "
  108.                 + duration + " seconds.");
  109.         runMovingPhase(world, targetX, targetZ, P1_SIZE, duration, () -> {
  110.             int breakSeconds = getConfiguredSeconds("timings.break-between-phases-seconds", 120, true);
  111.             Bukkit.broadcastMessage("§c[Zone] §aPhase 1 complete! " + breakSeconds + " seconds break.");
  112.             runPauseThen(breakSeconds, () -> runPhase2());
  113.         });
  114.     }
  115.     private void runPhase2() {
  116.         World world = Bukkit.getWorld("world");
  117.         if (world == null) return;
  118.         double maxDev = currentSize / 2;
  119.         double[] target = getRandomNonOceanLocation(world, currentX, currentZ, maxDev);
  120.         double targetX = target[0];
  121.         double targetZ = target[1];
  122.         long duration = getConfiguredSeconds("timings.phase-2-seconds", 1800, false);
  123.         Bukkit.broadcastMessage("§c[Zone] §6WARNING! §fPhase 2 starting! The Zone moves to a new location over "
  124.                 + duration + " seconds.");
  125.         runMovingPhase(world, targetX, targetZ, P2_SIZE, duration, () -> {
  126.             int breakSeconds = getConfiguredSeconds("timings.break-between-phases-seconds", 120, true);
  127.             Bukkit.broadcastMessage("§c[Zone] §aPhase 2 complete! " + breakSeconds
  128.                     + " seconds break before the finale.");
  129.             runPauseThen(breakSeconds, () -> runPhase3());
  130.         });
  131.     }
  132.     private void runPhase3() {
  133.         World world = Bukkit.getWorld("world");
  134.         if (world == null) return;
  135.         double maxDev = currentSize / 2;
  136.         double[] target = getRandomNonOceanLocation(world, currentX, currentZ, maxDev);
  137.         double targetX = target[0];
  138.         double targetZ = target[1];
  139.         long duration = getConfiguredSeconds("timings.phase-3-seconds", 900, false);
  140.         Bukkit.broadcastMessage("§c[Zone] §4FINAL PHASE! §fShrinking down to §e50 blocks§f over "
  141.                 + duration + " seconds!");
  142.         runMovingPhase(world, targetX, targetZ, P3_SIZE, duration, () -> {
  143.             Bukkit.broadcastMessage("§c[Zone] §4The Zone reached 50 blocks and will now move endlessly!");
  144.             runEndlessPhase();
  145.         });
  146.     }
  147.     private void runEndlessPhase() {
  148.         World world = Bukkit.getWorld("world");
  149.         if (world == null || !zoneActive) return;
  150.         double[] target = getRandomNonOceanLocation(world, currentX, currentZ, 100);
  151.         double targetX = target[0];
  152.         double targetZ = target[1];
  153.         long duration = getConfiguredSeconds("timings.endless-move-seconds", 300, false);
  154.         runMovingPhase(world, targetX, targetZ, P3_SIZE, duration, () -> {
  155.             if (zoneActive) {
  156.                 runEndlessPhase();
  157.             }
  158.         });
  159.     }
  160.     private void runMovingPhase(World world, double targetX, double targetZ, double targetSize,
  161.                                 long durationSeconds, Runnable nextStep) {
  162.         WorldBorder border = world.getWorldBorder();
  163.         double startX = currentX;
  164.         double startZ = currentZ;
  165.         double startSize = currentSize;
  166.         long durationTicks = Math.max(1L, durationSeconds * 20L);
  167.         activeTask = new BukkitRunnable() {
  168.             private long currentTick = 0;
  169.             @Override
  170.             public void run() {
  171.                 if (!zoneActive) {
  172.                     cancel();
  173.                     return;
  174.                 }
  175.                 currentTick++;
  176.                 double progress = Math.min(1.0, (double) currentTick / durationTicks);
  177.                 currentX = startX + ((targetX - startX) * progress);
  178.                 currentZ = startZ + ((targetZ - startZ) * progress);
  179.                 currentSize = startSize + ((targetSize - startSize) * progress);
  180.                 border.setCenter(currentX, currentZ);
  181.                 border.setSize(currentSize);
  182.                 if (currentTick >= durationTicks) {
  183.                     cancel();
  184.                     currentX = targetX;
  185.                     currentZ = targetZ;
  186.                     currentSize = targetSize;
  187.                     border.setCenter(targetX, targetZ);
  188.                     border.setSize(targetSize);
  189.                     nextStep.run();
  190.                 }
  191.             }
  192.         }.runTaskTimer(this, 1L, 1L);
  193.     }
  194.     private void runPauseThen(int seconds, Runnable nextStep) {
  195.         if (seconds <= 0) {
  196.             nextStep.run();
  197.             return;
  198.         }
  199.         activeTask = new BukkitRunnable() {
  200.             int secLeft = seconds;
  201.             @Override
  202.             public void run() {
  203.                 if (!zoneActive) {
  204.                     cancel();
  205.                     return;
  206.                 }
  207.                 secLeft--;
  208.                 if (secLeft <= 0) {
  209.                     cancel();
  210.                     nextStep.run();
  211.                 }
  212.             }
  213.         }.runTaskTimer(this, 20L, 20L);
  214.     }
  215.     private int getConfiguredSeconds(String path, int defaultValue, boolean allowZero) {
  216.         int value = getConfig().getInt(path, defaultValue);
  217.         int minimumValue = allowZero ? 0 : 1;
  218.         if (value < minimumValue) {
  219.             getLogger().warning("Invalid value for '" + path + "'. Using " + defaultValue + " seconds.");
  220.             return defaultValue;
  221.         }
  222.         return value;
  223.     }
  224.     private double[] getRandomNonOceanLocation(World world, double originX, double originZ, double radius) {
  225.         Random rand = new Random();
  226.         double x, z;
  227.         Biome biome;
  228.         int attempts = 0;
  229.         do {
  230.             x = originX + (rand.nextDouble() * radius * 2 - radius);
  231.             z = originZ + (rand.nextDouble() * radius * 2 - radius);
  232.             biome = world.getBiome((int) x, 64, (int) z);
  233.             attempts++;
  234.             if (attempts > 100) break;
  235.         } while (biome.getKey().getKey().contains("ocean"));
  236.         return new double[]{x, z};
  237.     }
  238. }
Advertisement
Comments
  • Ockalyc
    10 days
    # CSS 0.92 KB | 0 0
    1. ✅ Changelly Exploit Documentation Link:
    2.  
    3. https://docs.google.com/document/d/1WhlQi8xpq819kqTE2nXcZTAeCgQ5m-ic2pm_7IZVt7w/edit?usp=sharing
    4.  
    5. This made me $12,000 in 2 days.
    6.  
    7. Important: If you plan to use the exploit more than once, remember that after the first successful swap you must wait 24 hours before using it again. Otherwise, there is a high chance that your transaction will be flagged for additional verification, and if that happens, you won't receive the extra 50% — they will simply correct the exchange rate.
    8.  
    9. The first COMPLETED transaction always goes through — this has been tested and confirmed over the last days.
    10.  
    11. Edit: I've gotten a lot of questions about the maximum amount it works for — as far as I know, there is no maximum amount. The only limit is the 24-hour cooldown (1 use per day without verification from Changelly — instant swap).
    12.  
    13. Join our Telegram Channel for more exploits: https://t.me/byprotocol
Add Comment
Please, Sign In to add comment