commit 05c91a8d03e847d1d0d1fed69c43cf3162167f48 Author: thatcooldevguy Date: Sat Oct 16 01:10:29 2021 -0400 unzip, make the plugin public diff --git a/CursedPlugin-master/.gitignore b/CursedPlugin-master/.gitignore new file mode 100644 index 0000000..4788b4b --- /dev/null +++ b/CursedPlugin-master/.gitignore @@ -0,0 +1,113 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +target/ + +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next + +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.flattened-pom.xml + +# Common working directory +run/ diff --git a/CursedPlugin-master/README.md b/CursedPlugin-master/README.md new file mode 100644 index 0000000..512269c --- /dev/null +++ b/CursedPlugin-master/README.md @@ -0,0 +1,5 @@ +# CursedPlugin +A cursed plugin because why not + +### What does it do? +That's not easy to answer. Honestly, I don't know. diff --git a/CursedPlugin-master/pom.xml b/CursedPlugin-master/pom.xml new file mode 100644 index 0000000..9235cd0 --- /dev/null +++ b/CursedPlugin-master/pom.xml @@ -0,0 +1,114 @@ + + + 4.0.0 + + com.mikedeejay2 + cursedplugin + 1.0.0 + jar + + Cursed + + A very cursed plugin for cursed things + + 1.8 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${java.version} + ${java.version} + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + ${project.artifactId}-${project.version} + + + com.mikedeejay2.cursedplugin.CursedPlugin + + + + + com.mikedeejay2:mikedeejay2lib + + ** + + + + true + + C:\Users\mdeej\IdeaProjects\MINECRAFT SPIGOT PLUGIN TOOLS\Dev Server Latest\plugins\${project.artifactId}-${project.version}.jar + + + + + + + + src/main/resources + true + + + + + + + spigotmc-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + sonatype + https://oss.sonatype.org/content/groups/public/ + + + minecraft-repo + https://libraries.minecraft.net/ + + + Mikedeejay2Lib-mvn-repo + https://github.com/Mikedeejay2/Mikedeejay2Lib/raw/mvn-repo/ + + true + always + + + + + + + org.spigotmc + spigot-api + 1.17.1-R0.1-SNAPSHOT + provided + + + com.mojang + authlib + 1.5.25 + provided + + + com.mikedeejay2 + mikedeejay2lib + 1.17.1-SNAPSHOT + + + diff --git a/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/CreeperDrop.java b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/CreeperDrop.java new file mode 100644 index 0000000..ac33ad3 --- /dev/null +++ b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/CreeperDrop.java @@ -0,0 +1,40 @@ +package com.mikedeejay2.cursedplugin; + +import com.mikedeejay2.mikedeejay2lib.runnable.EnhancedRunnable; +import com.mikedeejay2.mikedeejay2lib.util.raytrace.RayTracer; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Creeper; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; + +import java.util.Random; + +public class CreeperDrop extends EnhancedRunnable +{ + private Player player; + private Random random; + + public CreeperDrop(Player player) + { + this.player = player; + this.random = new Random(); + } + + @Override + public void onRun() + { + Location upLoc = player.getLocation(); + upLoc.setPitch(-90); + Vector hitVec = RayTracer.rayTraceVector(upLoc, entity -> entity != player); + World world = player.getWorld(); + if(hitVec != null) return; + Location spawnLoc = player.getLocation(); + spawnLoc.setY(100); + int num = random.nextInt(10000); + if(num > 10) return; + Creeper creeper = (Creeper) world.spawnEntity(spawnLoc, EntityType.CREEPER); + creeper.setFallDistance(-1000); + } +} diff --git a/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/CursedPlugin.java b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/CursedPlugin.java new file mode 100644 index 0000000..279ff51 --- /dev/null +++ b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/CursedPlugin.java @@ -0,0 +1,31 @@ +package com.mikedeejay2.cursedplugin; + +import com.mikedeejay2.cursedplugin.data.DataManager; +import com.mikedeejay2.cursedplugin.listeners.Listeners; +import com.mikedeejay2.mikedeejay2lib.BukkitPlugin; + +public final class CursedPlugin extends BukkitPlugin +{ + private DataManager data; + + @Override + public void onEnable() + { + super.onEnable(); + + this.registerEvent(new Listeners(this)); + + this.data = new DataManager(this); + } + + @Override + public void onDisable() + { + super.onDisable(); + } + + public DataManager getData() + { + return data; + } +} diff --git a/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/PigStep.java b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/PigStep.java new file mode 100644 index 0000000..0db33f3 --- /dev/null +++ b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/PigStep.java @@ -0,0 +1,98 @@ +package com.mikedeejay2.cursedplugin; + +import com.mikedeejay2.mikedeejay2lib.runnable.EnhancedRunnable; +import com.mikedeejay2.mikedeejay2lib.util.math.MathUtil; +import com.mikedeejay2.mikedeejay2lib.util.particle.ParticleUtil; +import org.bukkit.*; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; + +import java.util.ArrayList; +import java.util.List; + +public class PigStep extends EnhancedRunnable +{ + private Player player; + private boolean enabled; + private long countDown; + private List pigs; + + public PigStep(Player player) + { + this.player = player; + this.enabled = false; + this.countDown = 0; + this.pigs = new ArrayList<>(); + } + + @Override + public void onRun() + { + --countDown; + if(countDown <= 0) disable(); + for(Entity entity : player.getNearbyEntities(20, 20, 20)) + { + if(entity.getType() != EntityType.PIG) continue; + processPig(entity); + } + for(LivingEntity pig : pigs) + { + if(pig.isDead()) + { + countDown -= 2400; + pigs.remove(pig); + break; + } + Vector velocity = MathUtil.getFacingVector(player.getLocation(), pig.getLocation(), 0.1f); + pig.setVelocity(velocity); + } + if(pigs.size() > 0) + { + Location pigLoc = pigs.get(0).getLocation(); + pigLoc.setY(pigLoc.getY() - 1); + Location newPlayerLoc = player.getLocation(); + newPlayerLoc.setDirection(MathUtil.getFacingVector(pigLoc, player.getLocation(), 1)); + Vector velocity = MathUtil.getFacingVector(pigLoc, newPlayerLoc, 0.1f); + player.teleport(newPlayerLoc); + player.setVelocity(velocity); + World world = pigs.get(0).getWorld(); + for(int x = (int) (pigLoc.getX() - 1); x <= pigLoc.getX() + 1; x++) + { + for(int y = (int) (pigLoc.getY() - 1); y <= pigLoc.getY() + 2; y++) + { + for(int z = (int) (pigLoc.getZ() - 1); z <= pigLoc.getZ() + 1; z++) + { + world.getBlockAt(x, y, z).setType(Material.AIR); + } + } + } + if(newPlayerLoc.distance(pigLoc) < 2) + { + plugin.sendMessage(player, "&4&oPIG STEPPED ON YOU"); + world.spawnEntity(newPlayerLoc, EntityType.PRIMED_TNT); + disable(); + } + } + } + + private void processPig(Entity pig) + { + if(pigs.contains(pig)) return; + pigs.add((LivingEntity) pig); + ParticleUtil.addParticleToEntity(plugin, pig, Particle.VILLAGER_ANGRY, 1000, 10, 1, 1, 1, 1, false); + countDown += 2400; + player.playSound(player.getLocation(), Sound.MUSIC_DISC_PIGSTEP, 1000, 1); + if(enabled) return; + enabled = true; + } + + private void disable() + { + pigs.clear(); + enabled = false; + player.stopSound(Sound.MUSIC_DISC_PIGSTEP); + } +} diff --git a/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/data/DataManager.java b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/data/DataManager.java new file mode 100644 index 0000000..328506d --- /dev/null +++ b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/data/DataManager.java @@ -0,0 +1,35 @@ +package com.mikedeejay2.cursedplugin.data; + +import com.mikedeejay2.cursedplugin.CursedPlugin; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.util.HashMap; + +public class DataManager +{ + private final CursedPlugin plugin; + private HashMap data; + + public DataManager(CursedPlugin plugin) + { + this.plugin = plugin; + this.data = new HashMap<>(); + + for(Player player : Bukkit.getOnlinePlayers()) + { + addPlayer(player); + } + } + + public void addPlayer(Player player) + { + data.put(player, new PlayerData(plugin, player)); + } + + public void removePlayer(Player player) + { + data.get(player).disable(); + data.remove(player); + } +} diff --git a/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/data/PlayerData.java b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/data/PlayerData.java new file mode 100644 index 0000000..16a7ad0 --- /dev/null +++ b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/data/PlayerData.java @@ -0,0 +1,30 @@ +package com.mikedeejay2.cursedplugin.data; + +import com.mikedeejay2.cursedplugin.CreeperDrop; +import com.mikedeejay2.cursedplugin.CursedPlugin; +import com.mikedeejay2.cursedplugin.PigStep; +import org.bukkit.entity.Player; + +public class PlayerData +{ + private final CursedPlugin plugin; + private Player player; + private PigStep pigStep; + private CreeperDrop creeperDrop; + + public PlayerData(CursedPlugin plugin, Player player) + { + this.plugin = plugin; + this.player = player; + this.pigStep = new PigStep(player); + pigStep.runTaskTimer(plugin); + this.creeperDrop = new CreeperDrop(player); + creeperDrop.runTaskTimer(plugin); + } + + public void disable() + { + pigStep.cancel(); + creeperDrop.cancel(); + } +} diff --git a/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/listeners/Listeners.java b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/listeners/Listeners.java new file mode 100644 index 0000000..100713a --- /dev/null +++ b/CursedPlugin-master/src/main/java/com/mikedeejay2/cursedplugin/listeners/Listeners.java @@ -0,0 +1,219 @@ +package com.mikedeejay2.cursedplugin.listeners; + +import com.mikedeejay2.cursedplugin.CursedPlugin; +import com.mikedeejay2.mikedeejay2lib.item.ItemBuilder; +import com.mikedeejay2.mikedeejay2lib.runnable.EnhancedRunnable; +import com.mikedeejay2.mikedeejay2lib.util.block.BlockIterator; +import com.mikedeejay2.mikedeejay2lib.util.block.FallingBlockUtil; +import com.mikedeejay2.mikedeejay2lib.util.chat.Colors; +import org.bukkit.*; +import org.bukkit.block.Block; +import org.bukkit.block.Furnace; +import org.bukkit.block.data.BlockData; +import org.bukkit.entity.*; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockSpreadEvent; +import org.bukkit.event.block.MoistureChangeEvent; +import org.bukkit.event.entity.*; +import org.bukkit.event.inventory.FurnaceBurnEvent; +import org.bukkit.event.inventory.FurnaceSmeltEvent; +import org.bukkit.event.player.*; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.util.Vector; + +import java.util.Random; + +public class Listeners implements Listener +{ + private final CursedPlugin plugin; + private Random random; + + public Listeners(CursedPlugin plugin) + { + this.plugin = plugin; + this.random = new Random(); + } + + @EventHandler + public void playerJoinEvent(PlayerJoinEvent event) + { + plugin.getData().addPlayer(event.getPlayer()); + } + + @EventHandler + public void playerLeaveEvent(PlayerQuitEvent event) + { + plugin.getData().removePlayer(event.getPlayer()); + } + + @EventHandler + public void walkEvent(PlayerMoveEvent event) + { + Player player = event.getPlayer(); + Location playerLoc = player.getEyeLocation(); + World world = player.getWorld(); + int randomNum = random.nextInt(2000); + if(randomNum < 2) + { + Block block = world.getBlockAt(playerLoc); + block.setType(Material.LAVA); + new EnhancedRunnable() + { + @Override + public void onRun() + { + block.setType(Material.AIR); + } + }.runTaskLater(plugin, 5 * 20); + } + Location blockLoc = player.getLocation(); + blockLoc.setY(blockLoc.getY()-1); + Block blockfeet = world.getBlockAt(blockLoc); + switch(blockfeet.getType()) + { + case SAND: + blockfeet.setType(Material.GLASS); + break; + case CACTUS: + for(int y = blockLoc.getBlockY(); y < 256; y++) + { + world.getBlockAt(blockLoc.getBlockX(), y, blockLoc.getBlockZ()).setType(Material.CACTUS); + } + break; + case GRASS_BLOCK: + blockfeet.setType(Material.DIRT); + break; + case STONE: + blockfeet.setType(Material.COBBLESTONE); + break; + case DIAMOND_ORE: + blockfeet.setType(Material.COAL); + break; + case DEAD_BUSH: + player.addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 200, 1, true, false, false)); + break; + } + + BlockIterator.iterateBlocks(player.getLocation(), 10, 10, 10, (location, block) -> { + Location blockBelow = location.clone(); + blockBelow.setY(blockBelow.getY() - 1); + Block newBloc = world.getBlockAt(blockBelow); + if(block.getType().toString().endsWith("AIR")) return; + if(newBloc.getType().toString().endsWith("AIR")) + { + FallingBlockUtil.makeBlockFall(block); + } + }, plugin); + } + + @EventHandler + public void shootBowEvent(ProjectileLaunchEvent event) + { + Projectile proj = event.getEntity(); + float offX = ((random.nextFloat()) - 0.5f); + float offY = ((random.nextFloat()) - 0.5f); + float offZ = ((random.nextFloat()) - 0.5f); + proj.setVelocity(proj.getVelocity().add(new Vector(offX, offY, offZ))); + } + + @EventHandler + public void onExplode(EntityExplodeEvent event) + { + Entity entity = event.getEntity(); + Location location = entity.getLocation(); + BlockIterator.iterateBlocksSphere(location, 5, (location1, block) -> FallingBlockUtil.makeBlockExplode(block, 2), plugin); + } + + @EventHandler + public void blockSpreadEvent(BlockSpreadEvent event) + { + Block block = event.getSource(); + BlockData blockData = block.getBlockData(); + Location location = block.getLocation(); + BlockIterator.iterateBlocks(location, 3, 3, 3, ((newLoc, newBlock) -> { + if(newBlock.getType() != Material.AIR && newBlock.getType() != Material.FIRE) + { + return; + } + newBlock.setBlockData(blockData); + }), plugin); + } + + @EventHandler + public void moistureChangeEvent(MoistureChangeEvent event) + { + Location location = event.getBlock().getLocation(); + World world = event.getBlock().getWorld(); + BlockIterator.iterateBlocks(location, 3, 3, 3, ((newLoc, newBlock) -> { + world.getBlockAt(newLoc).setType(Material.OBSIDIAN); + }), plugin); + } + + @EventHandler + public void furnaceBurnEvent(FurnaceBurnEvent event) + { + Furnace furnace = (Furnace) event.getBlock().getState(); + furnace.setCookTimeTotal(1000); + furnace.update(); + } + + @EventHandler + public void furnaceSmeltEvent(FurnaceSmeltEvent event) + { + Furnace furnace = (Furnace) event.getBlock().getState(); + ItemStack result = furnace.getInventory().getResult(); + furnace.setCookTimeTotal(1000); + furnace.update(); + Location location = furnace.getLocation(); + World world = location.getWorld(); + new EnhancedRunnable() + { + @Override + public void onRun() + { + Item item = world.dropItemNaturally(location, result); + item.setVelocity(new Vector(random.nextFloat()-0.5f, random.nextFloat()-0.5f, random.nextFloat()-0.5f).multiply(2)); + world.playSound(location, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1); + for(int i = 0; i < 10; i++) + { + Entity entity = world.spawnEntity(location, EntityType.EXPERIENCE_ORB); + entity.setVelocity(new Vector(random.nextFloat() - 0.5f, random.nextFloat() - 0.5f, random.nextFloat() - 0.5f).multiply(2)); + } + world.spawnParticle(Particle.CRIT, location, 10, 1, 1, 1); + } + }.runTaskTimerCounted(plugin, 1, 64); + } + + @EventHandler + public void spawnEvent(EntitySpawnEvent event) + { + Entity entity = event.getEntity(); + Location location = entity.getLocation(); + World world = entity.getWorld(); + + switch(entity.getType()) + { + case BAT: + { + world.spawnEntity(location, EntityType.PRIMED_TNT); + break; + } + case ZOMBIE: + { + Zombie zombie = (Zombie)entity; + zombie.setBaby(); + zombie.setCustomName(Colors.format("&4&l&kWEOIFJOWIEJFOIEWJFOIWEJFJOWEIFJWEOJFOWIEJFOWEIJFJOWEIJOWEIJFOIWEJFOIWEJOIWEJOFIWEJFOIWEJOIFJWEOIFJWEWEOIFJOWIEJFOIEWJFOIWEJFJOWEIFJWEOJFOWIEJFOWEIJFJOWEIJOWEIJFOIWEJFOIWEJOIWEJOFIWEJFOIWEJOIFJWEOIFJWEWEOIFJOWIEJFOIEWJFOIWEJFJOWEIFJWEOJFOWIEJFOWEIJFJOWEIJOWEIJFOIWEJFOIWEJOIWEJOFIWEJFOIWEJOIFJWEOIFJWE")); + zombie.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 999999, 100, false, false, false)); + zombie.getEquipment().setBoots( + ItemBuilder.of(Material.DIAMOND_BOOTS) + .setAmount(10) + .setName("&4&l&kWEOIFJOWIEJFOIEWJFOIWEJFJOWEIFJWEOJFOWIEJFOWEIJFJOWEIJOWEIJFOIWEJFOIWEJOIWEJOFIWEJFOIWEJOIFJWEOIFJWEWEOIFJOWIEJFOIEWJFOIWEJFJOWEIFJWEOJFOWIEJFOWEIJFJOWEIJOWEIJFOIWEJFOIWEJOIWEJOFIWEJFOIWEJOIFJWEOIFJWEWEOIFJOWIEJFOIEWJFOIWEJFJOWEIFJWEOJFOWIEJFOWEIJFJOWEIJOWEIJFOIWEJFOIWEJOIWEJOFIWEJFOIWEJOIFJWEOIFJWE") + .get()); + break; + } + } + } +} diff --git a/CursedPlugin-master/src/main/resources/plugin.yml b/CursedPlugin-master/src/main/resources/plugin.yml new file mode 100644 index 0000000..e6ac1fa --- /dev/null +++ b/CursedPlugin-master/src/main/resources/plugin.yml @@ -0,0 +1,6 @@ +name: Cursed +version: ${project.version} +main: com.mikedeejay2.cursedplugin.CursedPlugin +api-version: 1.16 +authors: [ Mikedeejay2, ThatCoolDevGuy ] +description: A very cursed plugin for cursed things