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