Initial Commit
This commit is contained in:
commit
6fe13d6a4b
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,2 @@
|
||||||
|
target/
|
||||||
|
bin/
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>ClassicSwords</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,13 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||||
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||||
|
org.eclipse.jdt.core.compiler.source=1.8
|
|
@ -0,0 +1,4 @@
|
||||||
|
activeProfiles=
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
resolveWorkspaceProjects=true
|
||||||
|
version=1
|
|
@ -0,0 +1,83 @@
|
||||||
|
<?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/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>me.ghotimayo</groupId>
|
||||||
|
<artifactId>ClassicSwords</artifactId>
|
||||||
|
<name>ClassicSwords</name>
|
||||||
|
<version>BETA-0.1</version>
|
||||||
|
<description>Old combat for new minecraft</description>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<artifactSet>
|
||||||
|
<includes>
|
||||||
|
<include>me.ghotimayo*:*</include>
|
||||||
|
<include>de.tr7zw*:*</include>
|
||||||
|
</includes>
|
||||||
|
</artifactSet>
|
||||||
|
<relocations />
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>spigot-repo</id>
|
||||||
|
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>dmulloy2-repo</id>
|
||||||
|
<url>http://repo.dmulloy2.net/nexus/repository/public/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.spigotmc</groupId>
|
||||||
|
<artifactId>spigot-api</artifactId>
|
||||||
|
<version>1.12-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>bungeecord-chat</artifactId>
|
||||||
|
<groupId>net.md-5</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bukkit</groupId>
|
||||||
|
<artifactId>craftbukkit</artifactId>
|
||||||
|
<version>1.12.2-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bukkit</groupId>
|
||||||
|
<artifactId>bukkit</artifactId>
|
||||||
|
<version>1.12.2-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.comphenix.protocol</groupId>
|
||||||
|
<artifactId>ProtocolLib-API</artifactId>
|
||||||
|
<version>4.3.0</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
|
<maven.compiler.target>1.8</maven.compiler.target>
|
||||||
|
</properties>
|
||||||
|
</project>
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
<?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>me.ghotimayo</groupId>
|
||||||
|
<artifactId>ClassicSwords</artifactId>
|
||||||
|
<version>BETA-0.1</version>
|
||||||
|
<name>ClassicSwords</name>
|
||||||
|
<description>Old combat for new minecraft</description>
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
|
<maven.compiler.target>1.8</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>spigot-repo</id>
|
||||||
|
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>dmulloy2-repo</id>
|
||||||
|
<url>http://repo.dmulloy2.net/nexus/repository/public/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.spigotmc</groupId>
|
||||||
|
<artifactId>spigot-api</artifactId>
|
||||||
|
<version>1.12-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bukkit</groupId>
|
||||||
|
<artifactId>craftbukkit</artifactId>
|
||||||
|
<version>1.12.2-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bukkit</groupId>
|
||||||
|
<artifactId>bukkit</artifactId>
|
||||||
|
<version>1.12.2-R0.1-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>de.tr7zw</groupId>
|
||||||
|
<artifactId>item-nbt-parent</artifactId>
|
||||||
|
<version>1.7-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.comphenix.protocol</groupId>
|
||||||
|
<artifactId>ProtocolLib-API</artifactId>
|
||||||
|
<version>4.3.0</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<artifactSet>
|
||||||
|
<includes>
|
||||||
|
<include>me.ghotimayo*:*</include>
|
||||||
|
<include>de.tr7zw*:*</include>
|
||||||
|
</includes>
|
||||||
|
</artifactSet>
|
||||||
|
<relocations />
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1,203 @@
|
||||||
|
package com.fpghoti.classicswords;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import com.fpghoti.classicswords.commands.CSword;
|
||||||
|
import com.fpghoti.classicswords.event.BlockingEvent;
|
||||||
|
import com.fpghoti.classicswords.event.InventoryEvent;
|
||||||
|
import com.fpghoti.classicswords.event.RegenEvent;
|
||||||
|
import com.fpghoti.classicswords.event.SwingEvent;
|
||||||
|
import com.fpghoti.classicswords.item.CItemType;
|
||||||
|
import com.fpghoti.classicswords.item.ClassicSword;
|
||||||
|
import com.fpghoti.classicswords.item.SetAttributes;
|
||||||
|
import com.fpghoti.classicswords.util.Storage;
|
||||||
|
|
||||||
|
public class ClassicSwordsMain extends JavaPlugin{
|
||||||
|
private static ClassicSwordsMain plugin;
|
||||||
|
|
||||||
|
public void onEnable() {
|
||||||
|
plugin = this;
|
||||||
|
SetAttributes.defineSwords();
|
||||||
|
registerEvents();
|
||||||
|
getCommand("CSword").setExecutor(new CSword(this));
|
||||||
|
registerConfig();
|
||||||
|
messageSet();
|
||||||
|
startItemCheck();
|
||||||
|
//startBlockCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onDisable() {
|
||||||
|
plugin = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Plugin getPlugin()
|
||||||
|
{
|
||||||
|
|
||||||
|
return plugin;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ClassicSwordsMain getMain(){
|
||||||
|
return plugin;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void registerConfig() {
|
||||||
|
this.getConfig().options().copyDefaults(true);
|
||||||
|
config.options().copyHeader(true);
|
||||||
|
saveConfig();
|
||||||
|
}
|
||||||
|
public void registerEvents(){
|
||||||
|
PluginManager pm = getServer().getPluginManager();
|
||||||
|
pm.registerEvents(new SwingEvent(this), this);
|
||||||
|
InventoryEvent ie = new InventoryEvent(this);
|
||||||
|
pm.registerEvents(ie, this);
|
||||||
|
pm.registerEvents(new BlockingEvent(this), this);
|
||||||
|
pm.registerEvents(new RegenEvent(this), this);
|
||||||
|
}
|
||||||
|
FileConfiguration config = this.getConfig();
|
||||||
|
|
||||||
|
public void messageSet(){
|
||||||
|
if (config.get("Options")==null){
|
||||||
|
config.createSection("Options.ReplaceNormalSwords");
|
||||||
|
config.set("Options.ReplaceNormalSwords", false);
|
||||||
|
Storage.bools.put("ReplaceNormalSwords", config.getBoolean("Options.ReplaceNormalSwords"));
|
||||||
|
}
|
||||||
|
this.saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startItemCheck() {
|
||||||
|
new BukkitRunnable(){
|
||||||
|
public void run() {
|
||||||
|
|
||||||
|
for(Player p : Bukkit.getOnlinePlayers()) {
|
||||||
|
if(p.getInventory().getItemInMainHand() != null) {
|
||||||
|
|
||||||
|
// if(ClassicSword.isCShield(p.getInventory().getItemInMainHand())) {
|
||||||
|
// if(p.isHandRaised()) {
|
||||||
|
// System.out.println("B");
|
||||||
|
// Storage.blockers.add(p);
|
||||||
|
// runBlock(p);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
if(CItemType.isSword(p.getInventory().getItemInMainHand().getType())){
|
||||||
|
|
||||||
|
if(!ClassicSword.hasOpenInv(p)) {
|
||||||
|
if(!ClassicSword.isBlocking(p) && !Storage.swingers.contains(p) && ClassicSword.isCBlockShield(p.getInventory().getItemInMainHand())) {
|
||||||
|
p.getInventory().setItemInMainHand(ClassicSword.blockToShield(p.getInventory().getItemInMainHand(), CItemType.getType(ClassicSword.getCShieldShortName(p.getInventory().getItemInMainHand()))));
|
||||||
|
}
|
||||||
|
ItemStack newitem = ClassicSword.toShield(p.getInventory().getItemInMainHand(), CItemType.getSwordType(p.getInventory().getItemInMainHand().getType()));
|
||||||
|
Integer dur = ClassicSword.getCShieldDurability(newitem);
|
||||||
|
p.getInventory().setItemInMainHand(newitem);
|
||||||
|
ClassicSword.sendActionbar(p, "§eDurability: " + dur);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if(p.isHandRaised() && Storage.swingers.contains(p) && ClassicSword.isCShield(p.getInventory().getItemInMainHand())) {
|
||||||
|
// p.getInventory().setItemInMainHand(ClassicSword.toBlockShield(p.getInventory().getItemInMainHand(), CItemType.getType(ClassicSword.getCShieldShortName(p.getInventory().getItemInMainHand()))));
|
||||||
|
// p.playSound(p.getLocation(), Sound.ENTITY_IRONGOLEM_STEP, 10.0F, 1.0F);
|
||||||
|
// ClassicSword.sendActionbar(p, "§aBlock hit!");
|
||||||
|
// Storage.swingers.remove(p);
|
||||||
|
//
|
||||||
|
// blockToShieldTimer(p);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// }.runTaskTimerAsynchronously(this, 1*20, 1*20);
|
||||||
|
}.runTaskTimerAsynchronously(this, 1*1, 1*1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void runBlockHit(Player p) {
|
||||||
|
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Storage.swingers.remove(p);
|
||||||
|
}
|
||||||
|
}, 10L);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void runKB(Player p) {
|
||||||
|
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Storage.kb.remove(p);
|
||||||
|
}
|
||||||
|
}, 20L);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void runBlock(Player p) {
|
||||||
|
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Storage.blockers.remove(p);
|
||||||
|
}
|
||||||
|
}, 20L);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void runRecent(Player p, Player damaged) {
|
||||||
|
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Storage.recent.remove(p);
|
||||||
|
Storage.recenthealth.remove(damaged);
|
||||||
|
}
|
||||||
|
}, 20L);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void blockToShieldTimer(Player p) {
|
||||||
|
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if(!ClassicSword.hasOpenInv(p) && !Storage.swingers.contains(p)) {
|
||||||
|
ClassicSword.blockToShieldInv(p.getInventory());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 10L);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void streakTimer(Player p) {
|
||||||
|
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Storage.great.remove(p);
|
||||||
|
Storage.perfect.remove(p);
|
||||||
|
}
|
||||||
|
}, 80L);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// public void startBlockCheck() {
|
||||||
|
// new BukkitRunnable(){
|
||||||
|
// public void run() {
|
||||||
|
// Storage.blockers.clear();
|
||||||
|
// for(Player p : Bukkit.getOnlinePlayers()) {
|
||||||
|
// if(p.getInventory().getItemInMainHand() != null && p.isBlocking()) {
|
||||||
|
// Storage.blockers.add(p);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// // }.runTaskTimerAsynchronously(this, 1*20, 1*20);
|
||||||
|
// }.runTaskTimerAsynchronously(this, 1*1, 1*1);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.fpghoti.classicswords.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.classicswords.ClassicSwordsMain;
|
||||||
|
import com.fpghoti.classicswords.item.CItem;
|
||||||
|
|
||||||
|
public class CSword implements CommandExecutor{
|
||||||
|
|
||||||
|
private ClassicSwordsMain plugin;
|
||||||
|
|
||||||
|
public CSword(ClassicSwordsMain plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
|
||||||
|
if(label.equalsIgnoreCase("csword")){
|
||||||
|
if(sender instanceof Player){
|
||||||
|
Player p = (Player) sender;
|
||||||
|
if(args[0] != null){
|
||||||
|
if(args[0].equalsIgnoreCase("wood")){
|
||||||
|
CItem.givecWoodSword(p, false);
|
||||||
|
}else if(args[0].equalsIgnoreCase("stone")){
|
||||||
|
CItem.givecStoneSword(p, false);
|
||||||
|
}else if(args[0].equalsIgnoreCase("iron")){
|
||||||
|
CItem.givecIronSword(p, false);
|
||||||
|
}else if(args[0].equalsIgnoreCase("gold")){
|
||||||
|
CItem.givecGoldSword(p, false);
|
||||||
|
}else if(args[0].equalsIgnoreCase("diamond")){
|
||||||
|
CItem.givecDiamondSword(p, false);
|
||||||
|
}else{
|
||||||
|
p.sendMessage(ChatColor.RED + "That is not a valid cSword type!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.fpghoti.classicswords.event;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent.DamageModifier;
|
||||||
|
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||||
|
|
||||||
|
import com.fpghoti.classicswords.ClassicSwordsMain;
|
||||||
|
|
||||||
|
|
||||||
|
public class BlockingEvent implements Listener{
|
||||||
|
|
||||||
|
private ClassicSwordsMain plugin;
|
||||||
|
|
||||||
|
public BlockingEvent(ClassicSwordsMain plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
|
public void onDamage(EntityDamageByEntityEvent event){
|
||||||
|
if(event.getEntity() instanceof Player) {
|
||||||
|
|
||||||
|
Player p = (Player) event.getEntity();
|
||||||
|
if(p.isHandRaised() || p.isBlocking()){
|
||||||
|
double newdamage = event.getDamage() * 0.5;
|
||||||
|
if(newdamage < 0) {
|
||||||
|
newdamage = 0;
|
||||||
|
}
|
||||||
|
if(event.getDamage(DamageModifier.BLOCKING) >= 0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
event.setDamage(DamageModifier.BLOCKING, 0);
|
||||||
|
if(event.getFinalDamage() >= newdamage) {
|
||||||
|
event.setDamage(DamageModifier.BLOCKING, newdamage * -1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,119 @@
|
||||||
|
package com.fpghoti.classicswords.event;
|
||||||
|
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryDragEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||||
|
import org.bukkit.event.player.PlayerExpChangeEvent;
|
||||||
|
import org.bukkit.event.player.PlayerItemHeldEvent;
|
||||||
|
import org.bukkit.event.player.PlayerKickEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import com.fpghoti.classicswords.ClassicSwordsMain;
|
||||||
|
import com.fpghoti.classicswords.item.CItemType;
|
||||||
|
import com.fpghoti.classicswords.item.ClassicSword;
|
||||||
|
import com.fpghoti.classicswords.util.Storage;
|
||||||
|
|
||||||
|
public class InventoryEvent implements Listener{
|
||||||
|
|
||||||
|
private ClassicSwordsMain plugin;
|
||||||
|
|
||||||
|
public InventoryEvent(ClassicSwordsMain plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInvOpen(InventoryOpenEvent event){
|
||||||
|
if(event.getPlayer() != null){
|
||||||
|
Storage.inInv.add((Player)event.getPlayer());
|
||||||
|
ClassicSword.toSwordInv(((Player)event.getPlayer()).getInventory());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInvClose(InventoryCloseEvent event){
|
||||||
|
if(event.getPlayer() != null){
|
||||||
|
Storage.inInv.remove((Player)event.getPlayer());
|
||||||
|
ClassicSword.toShieldInv(((Player)event.getPlayer()).getInventory());
|
||||||
|
ClassicSword.blockToShieldInv(((Player)event.getPlayer()).getInventory());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onExp(PlayerExpChangeEvent event){
|
||||||
|
if(event.getPlayer() != null){
|
||||||
|
Player p = event.getPlayer();
|
||||||
|
if(ClassicSword.isCShield(p.getInventory().getItemInMainHand())) {
|
||||||
|
ItemStack csword = p.getInventory().getItemInMainHand();
|
||||||
|
if(csword.containsEnchantment(Enchantment.MENDING)) {
|
||||||
|
int max = CItemType.getMaxDurability(CItemType.getType(ClassicSword.getCShieldShortName(csword)));
|
||||||
|
int dur = ClassicSword.getCShieldDurability(csword);
|
||||||
|
int expnum = event.getAmount();
|
||||||
|
int pxpadd = 0;
|
||||||
|
if(dur != max) {
|
||||||
|
if(dur + expnum <= max) {
|
||||||
|
ClassicSword.setCShieldDurability(p, csword, dur + expnum);
|
||||||
|
event.setAmount(0);
|
||||||
|
}else if(dur + expnum > max){
|
||||||
|
pxpadd = (dur + expnum) - max;
|
||||||
|
ClassicSword.setCShieldDurability(p, csword, max);
|
||||||
|
event.setAmount(pxpadd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInvClick(InventoryClickEvent event){
|
||||||
|
Player p = (Player) event.getWhoClicked();
|
||||||
|
if(event.getInventory() != null && p != null){
|
||||||
|
if(!event.isShiftClick()) {
|
||||||
|
ClassicSword.toSwordInv(p.getInventory());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerQuit(PlayerQuitEvent event){
|
||||||
|
handleDisconnect(event.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerKick(PlayerKickEvent event){
|
||||||
|
handleDisconnect(event.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handleDisconnect(Player p) {
|
||||||
|
Storage.inInv.remove(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onItemClick(InventoryDragEvent event){
|
||||||
|
if(event.getClass() != null){
|
||||||
|
if(ClassicSword.isCShield(event.getCursor())) {
|
||||||
|
ItemStack newsword = ClassicSword.toSword(event.getCursor(), CItemType.getType(ClassicSword.getCShieldShortName(event.getCursor())));
|
||||||
|
event.setCursor(newsword);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onHold(PlayerItemHeldEvent event){
|
||||||
|
if(event.getPlayer() != null && ClassicSword.isCShield(event.getPlayer().getInventory().getItem(event.getNewSlot()))){
|
||||||
|
Integer dur = ClassicSword.getCShieldDurability(event.getPlayer().getInventory().getItem(event.getNewSlot()));
|
||||||
|
ClassicSword.sendActionbar(event.getPlayer(), "§eDurability: " + dur);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
package com.fpghoti.classicswords.event;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.attribute.Attribute;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.entity.EntityRegainHealthEvent;
|
||||||
|
|
||||||
|
import com.fpghoti.classicswords.ClassicSwordsMain;
|
||||||
|
import com.fpghoti.classicswords.util.Storage;
|
||||||
|
|
||||||
|
public class RegenEvent implements Listener{
|
||||||
|
|
||||||
|
private ClassicSwordsMain plugin;
|
||||||
|
|
||||||
|
public RegenEvent(ClassicSwordsMain plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
|
public void onRegen(EntityRegainHealthEvent event){
|
||||||
|
if(event.getEntityType() == EntityType.PLAYER || event.getRegainReason() == EntityRegainHealthEvent.RegainReason.SATIATED) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
Player p = (Player) event.getEntity();
|
||||||
|
double max = p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
|
||||||
|
long time = System.currentTimeMillis() / 1000;
|
||||||
|
long last = Storage.regens.computeIfAbsent(p.getUniqueId(), id -> System.currentTimeMillis() / 1000);
|
||||||
|
if(time - last < (long) 3) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(p.getHealth() < max){
|
||||||
|
double health = p.getHealth() + 1;
|
||||||
|
if(health < Math.min(0, max)){
|
||||||
|
health = Math.min(0, max);
|
||||||
|
}
|
||||||
|
if(health > Math.max(0, max)){
|
||||||
|
health = Math.max(0, max);
|
||||||
|
}
|
||||||
|
p.setHealth(health);
|
||||||
|
Storage.regens.put(p.getUniqueId(), time);
|
||||||
|
}
|
||||||
|
Bukkit.getScheduler().runTaskLater(plugin, () -> {
|
||||||
|
p.setExhaustion(p.getExhaustion() + 3);
|
||||||
|
}, 1L);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,242 @@
|
||||||
|
package com.fpghoti.classicswords.event;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.block.Action;
|
||||||
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
|
import org.bukkit.event.block.BlockDamageEvent;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import com.fpghoti.classicswords.ClassicSwordsMain;
|
||||||
|
import com.fpghoti.classicswords.item.CItem;
|
||||||
|
import com.fpghoti.classicswords.item.CItemType;
|
||||||
|
import com.fpghoti.classicswords.item.ClassicSword;
|
||||||
|
import com.fpghoti.classicswords.util.Storage;
|
||||||
|
|
||||||
|
public class SwingEvent implements Listener{
|
||||||
|
|
||||||
|
private ClassicSwordsMain plugin;
|
||||||
|
|
||||||
|
public SwingEvent(ClassicSwordsMain plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onSwingAtBlock(BlockDamageEvent event){
|
||||||
|
if(event.getBlock() != null){
|
||||||
|
if(event.getPlayer().getGameMode() != GameMode.CREATIVE && event.getInstaBreak()) {
|
||||||
|
Storage.instabreaks.add(event.getBlock().getType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onSwingAtBlock(BlockBreakEvent event){
|
||||||
|
if(event.getPlayer() != null){
|
||||||
|
Player p = event.getPlayer();
|
||||||
|
if(p.getInventory().getItemInMainHand() != null){
|
||||||
|
if(p.getInventory().getItemInMainHand().hasItemMeta()){
|
||||||
|
if(ClassicSword.isCShield(p.getInventory().getItemInMainHand())){
|
||||||
|
if(event.getPlayer().getGameMode().equals(GameMode.CREATIVE)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}else {
|
||||||
|
if(!Storage.instabreaks.contains(event.getBlock().getType())) {
|
||||||
|
ItemStack csword = p.getInventory().getItemInMainHand();
|
||||||
|
ClassicSword.damageCItem(p, csword, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler (priority=EventPriority.MONITOR)
|
||||||
|
public void onHitPlayer(EntityDamageByEntityEvent event){
|
||||||
|
if(event.getEntity() != null){
|
||||||
|
if(event.getDamager() instanceof Player) {
|
||||||
|
Player p = (Player)event.getDamager();
|
||||||
|
|
||||||
|
if(event.getEntity() instanceof Player) {
|
||||||
|
Player damaged = (Player) event.getEntity();
|
||||||
|
Storage.recent.put(p, damaged);
|
||||||
|
Storage.recenthealth.put(damaged, damaged.getHealth());
|
||||||
|
ClassicSwordsMain.runRecent(p, damaged);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if(Storage.blockers.contains(p)) {
|
||||||
|
// System.out.println("B");
|
||||||
|
// p.playSound(p.getLocation(), Sound.BLOCK_NOTE_CHIME, 10.0F, 1.0F);
|
||||||
|
// }
|
||||||
|
|
||||||
|
ItemStack csword = p.getInventory().getItemInMainHand();
|
||||||
|
if(ClassicSword.isCShield(csword) && p.getGameMode() != GameMode.CREATIVE) {
|
||||||
|
ClassicSword.damageCItem(p, csword, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onHit(PlayerInteractEvent event){
|
||||||
|
if(event.getPlayer() != null){
|
||||||
|
Player p = event.getPlayer();
|
||||||
|
if((event.getAction() == Action.LEFT_CLICK_BLOCK) || (event.getAction() == Action.LEFT_CLICK_AIR)) {
|
||||||
|
if(ClassicSword.isCShield(event.getPlayer().getInventory().getItemInMainHand())) {
|
||||||
|
Storage.swingers.add(event.getPlayer());
|
||||||
|
ClassicSwordsMain.runBlockHit(event.getPlayer());
|
||||||
|
if(!ClassicSword.isBlocking(p)) {
|
||||||
|
ClassicSword.blockToShieldInv(p.getInventory());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(event.getAction().equals(Action.RIGHT_CLICK_AIR) || event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||||
|
|
||||||
|
if(Storage.swingers.contains(p) && ClassicSword.isCShield(p.getInventory().getItemInMainHand())) {
|
||||||
|
p.getInventory().setItemInMainHand(ClassicSword.toBlockShield(p.getInventory().getItemInMainHand(), CItemType.getType(ClassicSword.getCShieldShortName(p.getInventory().getItemInMainHand()))));
|
||||||
|
//p.playSound(p.getLocation(), Sound.ENTITY_IRONGOLEM_STEP, 10.0F, 1.0F);
|
||||||
|
p.playSound(p.getLocation(), Sound.ENTITY_IRONGOLEM_STEP, 10.0F, 1.0F);
|
||||||
|
|
||||||
|
if(Storage.recent.containsKey(p)) {
|
||||||
|
final Player damaged = Storage.recent.get(p);
|
||||||
|
Double health = Storage.recenthealth.get(damaged);
|
||||||
|
if(damaged != null && damaged.getHealth() != health && !Storage.kb.contains(damaged)) {
|
||||||
|
//damaged.getLocation().getY() + 0.5
|
||||||
|
|
||||||
|
//damaged.setVelocity(p.getEyeLocation().getDirection().setY(p.getEyeLocation().getDirection().getY() + 0.5).multiply(1.005));
|
||||||
|
|
||||||
|
|
||||||
|
double kb = p.getEyeLocation().getDirection().getY();
|
||||||
|
if(kb > damaged.getLocation().getDirection().getY()) {
|
||||||
|
kb = damaged.getLocation().getDirection().getY();
|
||||||
|
}
|
||||||
|
|
||||||
|
kb = kb + 0.5;
|
||||||
|
|
||||||
|
if(p.getLocation().getY() < damaged.getLocation().getY()) {
|
||||||
|
kb = kb/2;
|
||||||
|
damaged.setVelocity(p.getEyeLocation().getDirection().setY(kb).multiply(0.25));
|
||||||
|
}else {
|
||||||
|
//damaged.setVelocity(p.getEyeLocation().getDirection().setY(kb).multiply(1.001));
|
||||||
|
damaged.setVelocity(p.getEyeLocation().getDirection().setY(kb).multiply(0.75));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(Storage.perfect.contains(p)) {
|
||||||
|
ClassicSword.sendActionbar(p, "§aPerfect!");
|
||||||
|
|
||||||
|
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
ClassicSword.sendActionbar(p, "§fPe§arfe§act!");
|
||||||
|
}
|
||||||
|
}, 3L);
|
||||||
|
|
||||||
|
|
||||||
|
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
ClassicSword.sendActionbar(p, "§aPe§frfe§act!");
|
||||||
|
}
|
||||||
|
}, 6L);
|
||||||
|
|
||||||
|
|
||||||
|
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
ClassicSword.sendActionbar(p, "§aPe§arfe§fct!");
|
||||||
|
}
|
||||||
|
}, 9L);
|
||||||
|
|
||||||
|
|
||||||
|
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
ClassicSword.sendActionbar(p, "§aPerfect!");
|
||||||
|
}
|
||||||
|
}, 12L);
|
||||||
|
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
ClassicSword.sendActionbar(p, "§a§lPerfect!");
|
||||||
|
}
|
||||||
|
}, 14L);
|
||||||
|
|
||||||
|
|
||||||
|
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BELL, 1.0F, 1.4F);
|
||||||
|
Storage.perfect.remove(p);
|
||||||
|
Storage.great.remove(p);
|
||||||
|
Storage.kb.add(damaged);
|
||||||
|
ClassicSwordsMain.runKB(damaged);
|
||||||
|
}else if(Storage.great.contains(p)) {
|
||||||
|
ClassicSword.sendActionbar(p, "§eGreat!");
|
||||||
|
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BELL, 1.0F, 1.2F);
|
||||||
|
Storage.perfect.add(p);
|
||||||
|
Storage.kb.add(damaged);
|
||||||
|
ClassicSwordsMain.runKB(damaged);
|
||||||
|
}else {
|
||||||
|
ClassicSword.sendActionbar(p, "§cGood!");
|
||||||
|
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BELL, 1.0F, 1.0F);
|
||||||
|
ClassicSwordsMain.streakTimer(p);
|
||||||
|
Storage.great.add(p);
|
||||||
|
Storage.kb.add(damaged);
|
||||||
|
ClassicSwordsMain.runKB(damaged);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Storage.recenthealth.remove(damaged);
|
||||||
|
Storage.recent.remove(p);
|
||||||
|
}
|
||||||
|
Storage.swingers.remove(p);
|
||||||
|
|
||||||
|
ClassicSwordsMain.blockToShieldTimer(p);
|
||||||
|
}else {
|
||||||
|
//ClassicSword.sendActionbar(p, "§aBlock hit!");
|
||||||
|
}
|
||||||
|
|
||||||
|
// System.out.println("A");
|
||||||
|
// Storage.blockers.add(p);
|
||||||
|
// ClassicSwordsMain.runBlock(p);
|
||||||
|
}else {
|
||||||
|
//ClassicSword.sendActionbar(p, "§aBlock hit!");
|
||||||
|
}
|
||||||
|
|
||||||
|
try{
|
||||||
|
ItemStack holding = p.getInventory().getItemInMainHand();
|
||||||
|
if(event.hasBlock()){
|
||||||
|
if(holding != null){
|
||||||
|
if(holding.hasItemMeta()){
|
||||||
|
if(ClassicSword.isCShield(holding)){
|
||||||
|
if(event.getAction().toString().contains("LEFT") ){
|
||||||
|
if(event.getPlayer().getGameMode().equals(GameMode.CREATIVE)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(CItemType.isSword(holding.getType())) {
|
||||||
|
ClassicSword.toShield(holding, CItemType.getSwordType(holding.getType()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(NullPointerException npex){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,269 @@
|
||||||
|
package com.fpghoti.classicswords.item;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemFlag;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagCompound;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagDouble;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagInt;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagList;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagString;
|
||||||
|
|
||||||
|
public class CItem {
|
||||||
|
|
||||||
|
public static void givecDiamondSword(Player p, Boolean hold){
|
||||||
|
ItemStack csword = new ItemStack(Material.SHIELD, 1, (short)1);
|
||||||
|
ItemMeta meta = csword.getItemMeta();
|
||||||
|
meta.setUnbreakable(true);
|
||||||
|
meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
|
||||||
|
meta.setDisplayName("Classic Diamond Sword");
|
||||||
|
csword.setItemMeta(meta);
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword);
|
||||||
|
NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound();
|
||||||
|
NBTTagList modifiers = new NBTTagList();
|
||||||
|
NBTTagCompound damage = new NBTTagCompound();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
damage.set("AttributeName", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Name", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Amount", new NBTTagInt(7));
|
||||||
|
damage.set("Operation", new NBTTagInt(0));
|
||||||
|
damage.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
damage.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
damage.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
NBTTagCompound atspeed = new NBTTagCompound();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Name", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Amount", new NBTTagDouble(1021.6));
|
||||||
|
atspeed.set("Operation", new NBTTagInt(0));
|
||||||
|
atspeed.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
atspeed.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
atspeed.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
modifiers.add(damage);
|
||||||
|
modifiers.add(atspeed);
|
||||||
|
compound.set("AttributeModifiers", modifiers);
|
||||||
|
nmsStack.setTag(compound);
|
||||||
|
csword = CraftItemStack.asBukkitCopy(nmsStack);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(hold){
|
||||||
|
p.getInventory().setItemInMainHand(csword);
|
||||||
|
}else{
|
||||||
|
p.sendMessage(ChatColor.AQUA + "Spawning in a cSword...");
|
||||||
|
p.getInventory().addItem(csword);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void givecWoodSword(Player p, Boolean hold){
|
||||||
|
ItemStack csword = new ItemStack(Material.SHIELD, 1, (short)2);
|
||||||
|
ItemMeta meta = csword.getItemMeta();
|
||||||
|
meta.setUnbreakable(true);
|
||||||
|
meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
|
||||||
|
meta.setDisplayName("Classic Wood Sword");
|
||||||
|
csword.setItemMeta(meta);
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword);
|
||||||
|
NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound();
|
||||||
|
NBTTagList modifiers = new NBTTagList();
|
||||||
|
NBTTagCompound damage = new NBTTagCompound();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
damage.set("AttributeName", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Name", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Amount", new NBTTagInt(4));
|
||||||
|
damage.set("Operation", new NBTTagInt(0));
|
||||||
|
damage.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
damage.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
damage.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
NBTTagCompound atspeed = new NBTTagCompound();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Name", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Amount", new NBTTagDouble(1021.6));
|
||||||
|
atspeed.set("Operation", new NBTTagInt(0));
|
||||||
|
atspeed.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
atspeed.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
atspeed.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
modifiers.add(damage);
|
||||||
|
modifiers.add(atspeed);
|
||||||
|
compound.set("AttributeModifiers", modifiers);
|
||||||
|
nmsStack.setTag(compound);
|
||||||
|
csword = CraftItemStack.asBukkitCopy(nmsStack);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(hold){
|
||||||
|
p.getInventory().setItemInMainHand(csword);
|
||||||
|
}else{
|
||||||
|
p.sendMessage(ChatColor.AQUA + "Spawning in a cSword...");
|
||||||
|
p.getInventory().addItem(csword);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void givecStoneSword(Player p, Boolean hold){
|
||||||
|
ItemStack csword = new ItemStack(Material.SHIELD, 1, (short)3);
|
||||||
|
ItemMeta meta = csword.getItemMeta();
|
||||||
|
meta.setUnbreakable(true);
|
||||||
|
meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
|
||||||
|
meta.setDisplayName("Classic Stone Sword");
|
||||||
|
csword.setItemMeta(meta);
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword);
|
||||||
|
NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound();
|
||||||
|
NBTTagList modifiers = new NBTTagList();
|
||||||
|
NBTTagCompound damage = new NBTTagCompound();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
damage.set("AttributeName", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Name", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Amount", new NBTTagInt(5));
|
||||||
|
damage.set("Operation", new NBTTagInt(0));
|
||||||
|
damage.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
damage.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
damage.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
NBTTagCompound atspeed = new NBTTagCompound();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Name", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Amount", new NBTTagDouble(1021.6));
|
||||||
|
atspeed.set("Operation", new NBTTagInt(0));
|
||||||
|
atspeed.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
atspeed.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
atspeed.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
modifiers.add(damage);
|
||||||
|
modifiers.add(atspeed);
|
||||||
|
compound.set("AttributeModifiers", modifiers);
|
||||||
|
nmsStack.setTag(compound);
|
||||||
|
csword = CraftItemStack.asBukkitCopy(nmsStack);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(hold){
|
||||||
|
p.getInventory().setItemInMainHand(csword);
|
||||||
|
}else{
|
||||||
|
p.sendMessage(ChatColor.AQUA + "Spawning in a cSword...");
|
||||||
|
p.getInventory().addItem(csword);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void givecIronSword(Player p, Boolean hold){
|
||||||
|
ItemStack csword = new ItemStack(Material.SHIELD, 1, (short)4);
|
||||||
|
ItemMeta meta = csword.getItemMeta();
|
||||||
|
meta.setUnbreakable(true);
|
||||||
|
meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
|
||||||
|
meta.setDisplayName("Classic Iron Sword");
|
||||||
|
csword.setItemMeta(meta);
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword);
|
||||||
|
NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound();
|
||||||
|
NBTTagList modifiers = new NBTTagList();
|
||||||
|
NBTTagCompound damage = new NBTTagCompound();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
damage.set("AttributeName", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Name", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Amount", new NBTTagInt(6));
|
||||||
|
damage.set("Operation", new NBTTagInt(0));
|
||||||
|
damage.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
damage.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
damage.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
NBTTagCompound atspeed = new NBTTagCompound();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Name", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Amount", new NBTTagDouble(1021.6));
|
||||||
|
atspeed.set("Operation", new NBTTagInt(0));
|
||||||
|
atspeed.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
atspeed.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
atspeed.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
modifiers.add(damage);
|
||||||
|
modifiers.add(atspeed);
|
||||||
|
compound.set("AttributeModifiers", modifiers);
|
||||||
|
nmsStack.setTag(compound);
|
||||||
|
csword = CraftItemStack.asBukkitCopy(nmsStack);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(hold){
|
||||||
|
p.getInventory().setItemInMainHand(csword);
|
||||||
|
}else{
|
||||||
|
p.sendMessage(ChatColor.AQUA + "Spawning in a cSword...");
|
||||||
|
p.getInventory().addItem(csword);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void givecGoldSword(Player p, Boolean hold){
|
||||||
|
ItemStack csword = new ItemStack(Material.SHIELD, 1, (short)5);
|
||||||
|
ItemMeta meta = csword.getItemMeta();
|
||||||
|
meta.setUnbreakable(true);
|
||||||
|
meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
|
||||||
|
meta.setDisplayName("Classic Gold Sword");
|
||||||
|
csword.setItemMeta(meta);
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword);
|
||||||
|
NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound();
|
||||||
|
NBTTagList modifiers = new NBTTagList();
|
||||||
|
NBTTagCompound damage = new NBTTagCompound();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
damage.set("AttributeName", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Name", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Amount", new NBTTagInt(4));
|
||||||
|
damage.set("Operation", new NBTTagInt(0));
|
||||||
|
damage.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
damage.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
damage.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
NBTTagCompound atspeed = new NBTTagCompound();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Name", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Amount", new NBTTagDouble(1021.6));
|
||||||
|
atspeed.set("Operation", new NBTTagInt(0));
|
||||||
|
atspeed.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
atspeed.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
atspeed.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
modifiers.add(damage);
|
||||||
|
modifiers.add(atspeed);
|
||||||
|
compound.set("AttributeModifiers", modifiers);
|
||||||
|
nmsStack.setTag(compound);
|
||||||
|
csword = CraftItemStack.asBukkitCopy(nmsStack);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(hold){
|
||||||
|
p.getInventory().setItemInMainHand(csword);
|
||||||
|
}else{
|
||||||
|
p.sendMessage(ChatColor.AQUA + "Spawning in a cSword...");
|
||||||
|
p.getInventory().addItem(csword);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,216 @@
|
||||||
|
package com.fpghoti.classicswords.item;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import com.fpghoti.classicswords.util.Storage;
|
||||||
|
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagCompound;
|
||||||
|
|
||||||
|
public class CItemType {
|
||||||
|
|
||||||
|
public enum SwordType{
|
||||||
|
WOOD,
|
||||||
|
STONE,
|
||||||
|
IRON,
|
||||||
|
GOLD,
|
||||||
|
DIAMOND
|
||||||
|
}
|
||||||
|
|
||||||
|
public static NBTTagCompound getSwordType(SwordType type) {
|
||||||
|
switch (type) {
|
||||||
|
case WOOD:
|
||||||
|
return Storage.damagetag.get("wood");
|
||||||
|
|
||||||
|
case STONE:
|
||||||
|
return Storage.damagetag.get("stone");
|
||||||
|
|
||||||
|
case IRON:
|
||||||
|
return Storage.damagetag.get("iron");
|
||||||
|
|
||||||
|
case GOLD:
|
||||||
|
return Storage.damagetag.get("gold");
|
||||||
|
|
||||||
|
case DIAMOND:
|
||||||
|
return Storage.damagetag.get("diamond");
|
||||||
|
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static short getSwordModel(SwordType type) {
|
||||||
|
switch (type) {
|
||||||
|
case WOOD:
|
||||||
|
return (short)2;
|
||||||
|
|
||||||
|
case STONE:
|
||||||
|
return (short)3;
|
||||||
|
|
||||||
|
case IRON:
|
||||||
|
return (short)4;
|
||||||
|
|
||||||
|
case GOLD:
|
||||||
|
return (short)5;
|
||||||
|
|
||||||
|
case DIAMOND:
|
||||||
|
return (short)1;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return 2;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static short getSwordBlockModel(SwordType type) {
|
||||||
|
switch (type) {
|
||||||
|
case WOOD:
|
||||||
|
return (short)7;
|
||||||
|
|
||||||
|
case STONE:
|
||||||
|
return (short)8;
|
||||||
|
|
||||||
|
case IRON:
|
||||||
|
return (short)9;
|
||||||
|
|
||||||
|
case GOLD:
|
||||||
|
return (short)10;
|
||||||
|
|
||||||
|
case DIAMOND:
|
||||||
|
return (short)6;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return 7;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getDefaultName(SwordType type) {
|
||||||
|
switch (type) {
|
||||||
|
case WOOD:
|
||||||
|
return "Wooden Sword";
|
||||||
|
|
||||||
|
case STONE:
|
||||||
|
return "Stone Sword";
|
||||||
|
|
||||||
|
case IRON:
|
||||||
|
return "Iron Sword";
|
||||||
|
|
||||||
|
case GOLD:
|
||||||
|
return "Golden Sword";
|
||||||
|
|
||||||
|
case DIAMOND:
|
||||||
|
return "Diamond Sword";
|
||||||
|
|
||||||
|
default:
|
||||||
|
return "ERROR";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getShortName(SwordType type) {
|
||||||
|
switch (type) {
|
||||||
|
case WOOD:
|
||||||
|
return "wood";
|
||||||
|
|
||||||
|
case STONE:
|
||||||
|
return "stone";
|
||||||
|
|
||||||
|
case IRON:
|
||||||
|
return "iron";
|
||||||
|
|
||||||
|
case GOLD:
|
||||||
|
return "gold";
|
||||||
|
|
||||||
|
case DIAMOND:
|
||||||
|
return "diamond";
|
||||||
|
|
||||||
|
default:
|
||||||
|
return "ERROR";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Material getMaterial(SwordType type) {
|
||||||
|
switch (type) {
|
||||||
|
case WOOD:
|
||||||
|
return Material.WOOD_SWORD;
|
||||||
|
|
||||||
|
case STONE:
|
||||||
|
return Material.STONE_SWORD;
|
||||||
|
|
||||||
|
case IRON:
|
||||||
|
return Material.IRON_SWORD;
|
||||||
|
|
||||||
|
case GOLD:
|
||||||
|
return Material.GOLD_SWORD;
|
||||||
|
|
||||||
|
case DIAMOND:
|
||||||
|
return Material.DIAMOND_SWORD;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getMaxDurability(SwordType type) {
|
||||||
|
return getMaterial(type).getMaxDurability();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SwordType getSwordType(Material mat) {
|
||||||
|
switch (mat) {
|
||||||
|
case WOOD_SWORD:
|
||||||
|
return SwordType.WOOD;
|
||||||
|
|
||||||
|
case STONE_SWORD:
|
||||||
|
return SwordType.STONE;
|
||||||
|
|
||||||
|
case IRON_SWORD:
|
||||||
|
return SwordType.IRON;
|
||||||
|
|
||||||
|
case GOLD_SWORD:
|
||||||
|
return SwordType.GOLD;
|
||||||
|
|
||||||
|
case DIAMOND_SWORD:
|
||||||
|
return SwordType.DIAMOND;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static Boolean isSword(Material mat) {
|
||||||
|
return mat == Material.WOOD_SWORD || mat == Material.STONE_SWORD || mat == Material.IRON_SWORD || mat == Material.GOLD_SWORD || mat == Material.DIAMOND_SWORD;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static SwordType getType(String shortname) {
|
||||||
|
switch (shortname) {
|
||||||
|
case "wood":
|
||||||
|
return SwordType.WOOD;
|
||||||
|
|
||||||
|
case "stone":
|
||||||
|
return SwordType.STONE;
|
||||||
|
|
||||||
|
case "iron":
|
||||||
|
return SwordType.IRON;
|
||||||
|
|
||||||
|
case "gold":
|
||||||
|
return SwordType.GOLD;
|
||||||
|
|
||||||
|
case "diamond":
|
||||||
|
return SwordType.DIAMOND;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,469 @@
|
||||||
|
package com.fpghoti.classicswords.item;
|
||||||
|
|
||||||
|
import java.lang.reflect.Constructor;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemFlag;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import com.fpghoti.classicswords.item.CItemType.SwordType;
|
||||||
|
import com.fpghoti.classicswords.util.Storage;
|
||||||
|
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagCompound;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagDouble;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagInt;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagList;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagString;
|
||||||
|
|
||||||
|
public class ClassicSword {
|
||||||
|
|
||||||
|
public static ItemStack toShield(ItemStack old, SwordType type) {
|
||||||
|
|
||||||
|
String name;
|
||||||
|
|
||||||
|
ItemStack csword = new ItemStack(Material.SHIELD, 1, CItemType.getSwordModel(type));
|
||||||
|
ItemMeta meta = csword.getItemMeta();
|
||||||
|
if(old.hasItemMeta()) {
|
||||||
|
ItemMeta ometa = old.getItemMeta();
|
||||||
|
if(ometa.hasDisplayName()) {
|
||||||
|
name = ometa.getDisplayName();
|
||||||
|
}else {
|
||||||
|
name = CItemType.getDefaultName(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ometa.hasLore()) {
|
||||||
|
meta.setLore(ometa.getLore());
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
name = CItemType.getDefaultName(type);
|
||||||
|
}
|
||||||
|
meta.setUnbreakable(true);
|
||||||
|
meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
|
||||||
|
meta.setDisplayName(name);
|
||||||
|
csword.setItemMeta(meta);
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword);
|
||||||
|
NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound();
|
||||||
|
NBTTagList modifiers = new NBTTagList();
|
||||||
|
NBTTagCompound damage = CItemType.getSwordType(type);
|
||||||
|
|
||||||
|
NBTTagCompound atspeed = new NBTTagCompound();
|
||||||
|
|
||||||
|
atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Name", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Amount", new NBTTagDouble(1021.6));
|
||||||
|
atspeed.set("Operation", new NBTTagInt(0));
|
||||||
|
atspeed.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
atspeed.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
atspeed.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
NBTTagCompound cstag = new NBTTagCompound();
|
||||||
|
|
||||||
|
int dur = old.getType().getMaxDurability() - old.getDurability();
|
||||||
|
cstag.set("Durability", new NBTTagInt(dur));
|
||||||
|
cstag.set("Type", new NBTTagString(CItemType.getShortName(type)));
|
||||||
|
|
||||||
|
modifiers.add(damage);
|
||||||
|
modifiers.add(atspeed);
|
||||||
|
compound.set("AttributeModifiers", modifiers);
|
||||||
|
compound.set("ClassicSwords", cstag);
|
||||||
|
nmsStack.setTag(compound);
|
||||||
|
csword = CraftItemStack.asBukkitCopy(nmsStack);
|
||||||
|
if(old.getEnchantments() != null) {
|
||||||
|
csword.addUnsafeEnchantments(old.getEnchantments());
|
||||||
|
}
|
||||||
|
|
||||||
|
return csword;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemStack toBlockShield(ItemStack old, SwordType type) {
|
||||||
|
|
||||||
|
if(isCShield(old)) {
|
||||||
|
String name;
|
||||||
|
|
||||||
|
ItemStack csword = new ItemStack(Material.SHIELD, 1, CItemType.getSwordBlockModel(type));
|
||||||
|
|
||||||
|
ItemMeta meta = csword.getItemMeta();
|
||||||
|
if(old.hasItemMeta()) {
|
||||||
|
ItemMeta ometa = old.getItemMeta();
|
||||||
|
if(ometa.hasDisplayName()) {
|
||||||
|
name = ometa.getDisplayName();
|
||||||
|
}else {
|
||||||
|
name = CItemType.getDefaultName(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ometa.hasLore()) {
|
||||||
|
meta.setLore(ometa.getLore());
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
name = CItemType.getDefaultName(type);
|
||||||
|
}
|
||||||
|
meta.setUnbreakable(true);
|
||||||
|
meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
|
||||||
|
meta.setDisplayName(name);
|
||||||
|
csword.setItemMeta(meta);
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword);
|
||||||
|
NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound();
|
||||||
|
NBTTagList modifiers = new NBTTagList();
|
||||||
|
NBTTagCompound damage = CItemType.getSwordType(type);
|
||||||
|
|
||||||
|
NBTTagCompound atspeed = new NBTTagCompound();
|
||||||
|
|
||||||
|
atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Name", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Amount", new NBTTagDouble(1021.6));
|
||||||
|
atspeed.set("Operation", new NBTTagInt(0));
|
||||||
|
atspeed.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
atspeed.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
atspeed.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
NBTTagCompound cstag = new NBTTagCompound();
|
||||||
|
|
||||||
|
int dur = getCShieldDurability(old);
|
||||||
|
cstag.set("Durability", new NBTTagInt(dur));
|
||||||
|
cstag.set("Type", new NBTTagString(CItemType.getShortName(type)));
|
||||||
|
|
||||||
|
NBTTagCompound blocktag = new NBTTagCompound();
|
||||||
|
blocktag.set("BlockHit", new NBTTagString("BlockHit"));
|
||||||
|
|
||||||
|
modifiers.add(damage);
|
||||||
|
modifiers.add(atspeed);
|
||||||
|
compound.set("AttributeModifiers", modifiers);
|
||||||
|
compound.set("ClassicSwords", cstag);
|
||||||
|
compound.set("BlockHit", blocktag);
|
||||||
|
nmsStack.setTag(compound);
|
||||||
|
csword = CraftItemStack.asBukkitCopy(nmsStack);
|
||||||
|
if(old.getEnchantments() != null) {
|
||||||
|
csword.addUnsafeEnchantments(old.getEnchantments());
|
||||||
|
}
|
||||||
|
|
||||||
|
return csword;
|
||||||
|
}else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemStack blockToShield(ItemStack old, SwordType type) {
|
||||||
|
|
||||||
|
if(isCBlockShield(old)) {
|
||||||
|
|
||||||
|
String name;
|
||||||
|
|
||||||
|
ItemStack csword = new ItemStack(Material.SHIELD, 1, CItemType.getSwordModel(type));
|
||||||
|
|
||||||
|
ItemMeta meta = csword.getItemMeta();
|
||||||
|
if(old.hasItemMeta()) {
|
||||||
|
ItemMeta ometa = old.getItemMeta();
|
||||||
|
if(ometa.hasDisplayName()) {
|
||||||
|
name = ometa.getDisplayName();
|
||||||
|
}else {
|
||||||
|
name = CItemType.getDefaultName(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ometa.hasLore()) {
|
||||||
|
meta.setLore(ometa.getLore());
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
name = CItemType.getDefaultName(type);
|
||||||
|
}
|
||||||
|
meta.setUnbreakable(true);
|
||||||
|
meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
|
||||||
|
meta.setDisplayName(name);
|
||||||
|
csword.setItemMeta(meta);
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword);
|
||||||
|
NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound();
|
||||||
|
NBTTagList modifiers = new NBTTagList();
|
||||||
|
NBTTagCompound damage = CItemType.getSwordType(type);
|
||||||
|
|
||||||
|
NBTTagCompound atspeed = new NBTTagCompound();
|
||||||
|
|
||||||
|
atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Name", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Amount", new NBTTagDouble(1021.6));
|
||||||
|
atspeed.set("Operation", new NBTTagInt(0));
|
||||||
|
atspeed.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
atspeed.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
atspeed.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
NBTTagCompound cstag = new NBTTagCompound();
|
||||||
|
|
||||||
|
int dur = getCShieldDurability(old);
|
||||||
|
cstag.set("Durability", new NBTTagInt(dur));
|
||||||
|
cstag.set("Type", new NBTTagString(CItemType.getShortName(type)));
|
||||||
|
|
||||||
|
|
||||||
|
modifiers.add(damage);
|
||||||
|
modifiers.add(atspeed);
|
||||||
|
compound.set("AttributeModifiers", modifiers);
|
||||||
|
compound.set("ClassicSwords", cstag);
|
||||||
|
nmsStack.setTag(compound);
|
||||||
|
csword = CraftItemStack.asBukkitCopy(nmsStack);
|
||||||
|
if(old.getEnchantments() != null) {
|
||||||
|
csword.addUnsafeEnchantments(old.getEnchantments());
|
||||||
|
}
|
||||||
|
|
||||||
|
return csword;
|
||||||
|
}else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemStack toSword(ItemStack old, SwordType type) {
|
||||||
|
|
||||||
|
String name;
|
||||||
|
|
||||||
|
ItemStack csword = new ItemStack(CItemType.getMaterial(type), 1);
|
||||||
|
if(old.getEnchantments() != null) {
|
||||||
|
csword.addUnsafeEnchantments(old.getEnchantments());
|
||||||
|
}
|
||||||
|
ItemMeta meta = csword.getItemMeta();
|
||||||
|
if(old.hasItemMeta()) {
|
||||||
|
ItemMeta ometa = old.getItemMeta();
|
||||||
|
if(ometa.hasDisplayName()) {
|
||||||
|
name = ometa.getDisplayName();
|
||||||
|
}else {
|
||||||
|
name = CItemType.getDefaultName(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ometa.hasLore()) {
|
||||||
|
meta.setLore(ometa.getLore());
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
name = CItemType.getDefaultName(type);
|
||||||
|
}
|
||||||
|
meta.setUnbreakable(false);
|
||||||
|
meta.setDisplayName(name);
|
||||||
|
csword.setItemMeta(meta);
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nmsStack = CraftItemStack.asNMSCopy(csword);
|
||||||
|
NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound();
|
||||||
|
NBTTagList modifiers = new NBTTagList();
|
||||||
|
NBTTagCompound damage = CItemType.getSwordType(type);
|
||||||
|
|
||||||
|
NBTTagCompound atspeed = new NBTTagCompound();
|
||||||
|
|
||||||
|
atspeed.set("AttributeName", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Name", new NBTTagString("generic.attackSpeed"));
|
||||||
|
atspeed.set("Amount", new NBTTagDouble(1021.6));
|
||||||
|
atspeed.set("Operation", new NBTTagInt(0));
|
||||||
|
atspeed.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
atspeed.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
atspeed.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
NBTTagCompound cstag = new NBTTagCompound();
|
||||||
|
|
||||||
|
|
||||||
|
modifiers.add(damage);
|
||||||
|
modifiers.add(atspeed);
|
||||||
|
compound.set("AttributeModifiers", modifiers);
|
||||||
|
compound.set("ClassicSwords", cstag);
|
||||||
|
nmsStack.setTag(compound);
|
||||||
|
csword = CraftItemStack.asBukkitCopy(nmsStack);
|
||||||
|
|
||||||
|
csword.setDurability((short)(csword.getType().getMaxDurability() - (short)((int)getCShieldDurability(old))));
|
||||||
|
|
||||||
|
return csword;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean isCShield(ItemStack item) {
|
||||||
|
if(item == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(item.getType() != Material.SHIELD) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nms = CraftItemStack.asNMSCopy(item);
|
||||||
|
if(!nms.hasTag() || nms.getTag() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(nms.getTag().hasKey("ClassicSwords")) {
|
||||||
|
return true;
|
||||||
|
}else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean isCBlockShield(ItemStack item) {
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nms = CraftItemStack.asNMSCopy(item);
|
||||||
|
return nms.getTag() != null && isCShield(item) && nms.getTag().hasKey("ClassicSwords");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean isBlocking(Player p) {
|
||||||
|
return Storage.blockers.contains(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean isCSword(ItemStack item) {
|
||||||
|
if(!(item.getType() == Material.WOOD_SWORD || item.getType() == Material.STONE_SWORD ||item.getType() == Material.IRON_SWORD || item.getType() == Material.GOLD_SWORD || item.getType() == Material.DIAMOND_SWORD)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nms = CraftItemStack.asNMSCopy(item);
|
||||||
|
if(!nms.hasTag() || nms.getTag() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(nms.getTag().hasKey("ClassicSwords")) {
|
||||||
|
return true;
|
||||||
|
}else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean isCItem(ItemStack item) {
|
||||||
|
return isCSword(item) || isCShield(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Integer getCShieldDurability(ItemStack item) {
|
||||||
|
if(!isCItem(item)) {
|
||||||
|
return null;
|
||||||
|
}else {
|
||||||
|
NBTTagCompound cstag = getCSTag(item);
|
||||||
|
int dur = cstag.getInt("Durability");
|
||||||
|
return dur;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCShieldShortName(ItemStack item) {
|
||||||
|
if(!isCItem(item)) {
|
||||||
|
return null;
|
||||||
|
}else {
|
||||||
|
NBTTagCompound cstag = getCSTag(item);
|
||||||
|
String name = cstag.getString("Type");
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void blockToShieldInv(Inventory inv) {
|
||||||
|
for(int i = 0; i < inv.getSize()-1; i++){
|
||||||
|
ItemStack item = inv.getItem(i);
|
||||||
|
if(item != null && isCBlockShield(item)) {
|
||||||
|
ItemStack newitem = blockToShield(item, CItemType.getType(getCShieldShortName(item)));
|
||||||
|
inv.setItem(i, newitem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void toShieldInv(Inventory inv) {
|
||||||
|
for(int i = 0; i < inv.getSize()-1; i++){
|
||||||
|
ItemStack item = inv.getItem(i);
|
||||||
|
if(item != null && CItemType.isSword(item.getType())) {
|
||||||
|
ItemStack newitem = toShield(item, CItemType.getSwordType(item.getType()));
|
||||||
|
inv.setItem(i, newitem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void toSwordInv(Inventory inv) {
|
||||||
|
for(int i = 0; i < inv.getSize()-1; i++){
|
||||||
|
ItemStack item = inv.getItem(i);
|
||||||
|
if(isCShield(item)) {
|
||||||
|
ItemStack newitem = toSword(item, CItemType.getType(getCShieldShortName(item)));
|
||||||
|
inv.setItem(i, newitem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean hasOpenInv(Player p) {
|
||||||
|
return Storage.inInv.contains(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static void setCShieldDurability(Player p, ItemStack item, Integer dur) {
|
||||||
|
if(isCItem(item)) {
|
||||||
|
Boolean skip = false;
|
||||||
|
if(item.containsEnchantment(Enchantment.DURABILITY)) {
|
||||||
|
int level = item.getEnchantmentLevel(Enchantment.DURABILITY);
|
||||||
|
int chance = (100/(level+1));
|
||||||
|
int result = Storage.random.nextInt(101);
|
||||||
|
skip = result > chance;
|
||||||
|
}
|
||||||
|
if(!skip) {
|
||||||
|
NBTTagCompound cstag = getCSTag(item);
|
||||||
|
cstag.set("Durability", new NBTTagInt(dur));
|
||||||
|
p.getInventory().setItemInMainHand(updateCSTag(item, cstag));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static NBTTagCompound getCSTag(ItemStack item) {
|
||||||
|
if(!isCItem(item)) {
|
||||||
|
return null;
|
||||||
|
}else {
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nms = CraftItemStack.asNMSCopy(item);
|
||||||
|
NBTTagCompound cstag = (NBTTagCompound) nms.getTag().get("ClassicSwords");
|
||||||
|
return cstag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemStack updateCSTag(ItemStack item, NBTTagCompound tag) {
|
||||||
|
if(isCItem(item)) {
|
||||||
|
net.minecraft.server.v1_12_R1.ItemStack nms = CraftItemStack.asNMSCopy(item);
|
||||||
|
nms.getTag().set("ClassicSwords", tag);
|
||||||
|
return CraftItemStack.asBukkitCopy(nms);
|
||||||
|
}else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void breakHeldItem(Player p) {
|
||||||
|
p.getInventory().setItemInMainHand(new ItemStack(Material.AIR));
|
||||||
|
p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 10.0F, 1.0F);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void damageCItem(Player p, ItemStack item, int amount) {
|
||||||
|
int dur = ClassicSword.getCShieldDurability(item);
|
||||||
|
dur = dur - amount;
|
||||||
|
if(dur <= 0) {
|
||||||
|
sendActionbar(p, "§eDurability: 0");
|
||||||
|
breakHeldItem(p);
|
||||||
|
}else {
|
||||||
|
if(isCItem(item)) {
|
||||||
|
sendActionbar(p, "§eDurability: " + dur);
|
||||||
|
setCShieldDurability(p, item, dur);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//BY KNOAPP ON SPIGOT
|
||||||
|
|
||||||
|
public static void sendActionbar(Player player, String msg) {
|
||||||
|
try {
|
||||||
|
Constructor<?> constructor = getNMSClass("PacketPlayOutChat").getConstructor(getNMSClass("IChatBaseComponent"), getNMSClass("ChatMessageType"));
|
||||||
|
|
||||||
|
Object icbc = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class).invoke(null, "{\"text\":\"" + msg + "\"}");
|
||||||
|
Object packet = constructor.newInstance(icbc, getNMSClass("ChatMessageType").getEnumConstants()[2]);
|
||||||
|
Object entityPlayer= player.getClass().getMethod("getHandle").invoke(player);
|
||||||
|
Object playerConnection = entityPlayer.getClass().getField("playerConnection").get(entityPlayer);
|
||||||
|
|
||||||
|
playerConnection.getClass().getMethod("sendPacket", getNMSClass("Packet")).invoke(playerConnection, packet);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Class<?> getNMSClass(String name) {
|
||||||
|
try {
|
||||||
|
return Class.forName("net.minecraft.server." + getVersion() + "." + name);
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getVersion() {
|
||||||
|
return Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
package com.fpghoti.classicswords.item;
|
||||||
|
|
||||||
|
import com.fpghoti.classicswords.util.Storage;
|
||||||
|
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagCompound;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagInt;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagString;
|
||||||
|
|
||||||
|
public class SetAttributes {
|
||||||
|
|
||||||
|
public static void defineSwords() {
|
||||||
|
|
||||||
|
NBTTagCompound damage = new NBTTagCompound();
|
||||||
|
|
||||||
|
damage.set("AttributeName", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Name", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Amount", new NBTTagInt(7));
|
||||||
|
damage.set("Operation", new NBTTagInt(0));
|
||||||
|
damage.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
damage.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
damage.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
Storage.damagetag.put("diamond", damage);
|
||||||
|
|
||||||
|
damage = new NBTTagCompound();
|
||||||
|
|
||||||
|
damage.set("AttributeName", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Name", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Amount", new NBTTagInt(4));
|
||||||
|
damage.set("Operation", new NBTTagInt(0));
|
||||||
|
damage.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
damage.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
damage.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
Storage.damagetag.put("wood", damage);
|
||||||
|
|
||||||
|
damage = new NBTTagCompound();
|
||||||
|
|
||||||
|
damage.set("AttributeName", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Name", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Amount", new NBTTagInt(5));
|
||||||
|
damage.set("Operation", new NBTTagInt(0));
|
||||||
|
damage.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
damage.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
damage.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
Storage.damagetag.put("stone", damage);
|
||||||
|
|
||||||
|
damage = new NBTTagCompound();
|
||||||
|
|
||||||
|
damage.set("AttributeName", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Name", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Amount", new NBTTagInt(6));
|
||||||
|
damage.set("Operation", new NBTTagInt(0));
|
||||||
|
damage.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
damage.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
damage.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
Storage.damagetag.put("iron", damage);
|
||||||
|
|
||||||
|
damage = new NBTTagCompound();
|
||||||
|
|
||||||
|
damage.set("AttributeName", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Name", new NBTTagString("generic.attackDamage"));
|
||||||
|
damage.set("Amount", new NBTTagInt(4));
|
||||||
|
damage.set("Operation", new NBTTagInt(0));
|
||||||
|
damage.set("UUIDLeast", new NBTTagInt(894654));
|
||||||
|
damage.set("UUIDMost", new NBTTagInt(2872));
|
||||||
|
damage.set("Slot", new NBTTagString("mainhand"));
|
||||||
|
|
||||||
|
Storage.damagetag.put("gold", damage);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.fpghoti.classicswords.util;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class Functions {
|
||||||
|
|
||||||
|
public Player playerGet(String uuid){
|
||||||
|
UUID id = UUID.fromString(uuid);
|
||||||
|
Player p = Bukkit.getPlayer(id);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Player getEP(String playername){
|
||||||
|
Player p = null;
|
||||||
|
for(Player item : Bukkit.getOnlinePlayers()){
|
||||||
|
if(playername.equalsIgnoreCase(item.getName())){
|
||||||
|
p = item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isDigit(String s){
|
||||||
|
return s.matches("[0-9]+");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean isInteger(String str, int r){
|
||||||
|
if(str.isEmpty()){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for(int i = 0; i < str.length(); i++){
|
||||||
|
if((i == 0) && (str.charAt(i) == '-')){
|
||||||
|
if(str.length() == 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}else if(Character.digit(str.charAt(i), r) < 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.fpghoti.classicswords.util;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import io.netty.util.internal.ConcurrentSet;
|
||||||
|
import net.minecraft.server.v1_12_R1.NBTTagCompound;
|
||||||
|
|
||||||
|
public class Storage {
|
||||||
|
public static ConcurrentHashMap<String, Boolean> bools = new ConcurrentHashMap<>();
|
||||||
|
public static HashMap<String, NBTTagCompound> damagetag = new HashMap<>();
|
||||||
|
public static Set<Material> instabreaks = new HashSet<>();
|
||||||
|
public static Set<Player> inInv = new HashSet<>();
|
||||||
|
public static ConcurrentSet<Player> blockers = new ConcurrentSet<>();
|
||||||
|
public static ConcurrentSet<Player> swingers = new ConcurrentSet<>();
|
||||||
|
public static ConcurrentSet<Player> bswingers = new ConcurrentSet<>();
|
||||||
|
public static Random random = new Random();
|
||||||
|
public static Map<UUID, Long> regens = new HashMap<>();
|
||||||
|
public static ConcurrentHashMap<Player, Player> recent = new ConcurrentHashMap<>();
|
||||||
|
public static ConcurrentHashMap<Player, Double> recenthealth = new ConcurrentHashMap<>();
|
||||||
|
public static ConcurrentSet<Player> kb = new ConcurrentSet<>();
|
||||||
|
public static ConcurrentSet<Player> great = new ConcurrentSet<>();
|
||||||
|
public static ConcurrentSet<Player> perfect = new ConcurrentSet<>();
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
main: com.fpghoti.classicswords.ClassicSwordsMain
|
||||||
|
version: BETA-0.1
|
||||||
|
name: ClassicSwords
|
||||||
|
descripion: Bring back the old combat!
|
||||||
|
commands:
|
||||||
|
CSword:
|
||||||
|
description: Spawns a CSword
|
Loading…
Reference in New Issue