unzip, make the plugin public

This commit is contained in:
thatcooldevguy 2021-10-16 01:10:29 -04:00
commit 05c91a8d03
10 changed files with 691 additions and 0 deletions

113
CursedPlugin-master/.gitignore vendored Normal file
View File

@ -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/

View File

@ -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.

114
CursedPlugin-master/pom.xml Normal file
View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mikedeejay2</groupId>
<artifactId>cursedplugin</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>Cursed</name>
<description>A very cursed plugin for cursed things</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>${project.artifactId}-${project.version}</finalName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.mikedeejay2.cursedplugin.CursedPlugin</mainClass>
</transformer>
</transformers>
<filters>
<filter>
<artifact>com.mikedeejay2:mikedeejay2lib</artifact>
<includes>
<include>**</include>
</includes>
</filter>
</filters>
<minimizeJar>true</minimizeJar>
<!-- This is the location to my development server. You should change this. -->
<outputFile>C:\Users\mdeej\IdeaProjects\MINECRAFT SPIGOT PLUGIN TOOLS\Dev Server Latest\plugins\${project.artifactId}-${project.version}.jar</outputFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<repositories>
<repository>
<id>spigotmc-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
<repository>
<id>minecraft-repo</id>
<url>https://libraries.minecraft.net/</url>
</repository>
<repository>
<id>Mikedeejay2Lib-mvn-repo</id>
<url>https://github.com/Mikedeejay2/Mikedeejay2Lib/raw/mvn-repo/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.17.1-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.mojang</groupId>
<artifactId>authlib</artifactId>
<version>1.5.25</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.mikedeejay2</groupId>
<artifactId>mikedeejay2lib</artifactId>
<version>1.17.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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<LivingEntity> 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);
}
}

View File

@ -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<Player, PlayerData> 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);
}
}

View File

@ -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();
}
}

View File

@ -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;
}
}
}
}

View File

@ -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