Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save SrBlecaute01/4bf031a74125b10359aac6db070a957c to your computer and use it in GitHub Desktop.
Save SrBlecaute01/4bf031a74125b10359aac6db070a957c to your computer and use it in GitHub Desktop.
<component name="ArtifactManager">
<artifact type="jar" name="SrEmpregos:jar">
<output-path>$PROJECT_DIR$/../../..</output-path>
<root id="archive" name="SrEmpregos.jar">
<element id="module-output" name="SrEmpregos" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.4.2/HikariCP-3.4.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar" path-in-jar="/" />
</root>
</artifact>
</component>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="SrEmpregos" />
</profile>
</annotationProcessing>
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectNotificationSettings">
<option name="askShowProject" value="false" />
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ArtifactsWorkspaceSettings">
<artifacts-to-build>
<artifact name="SrEmpregos:jar" />
</artifacts-to-build>
</component>
<component name="ChangeListManager">
<list default="true" id="4dce16e8-554c-438f-9174-b5ab871ed9fd" name="Default Changelist" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FavoritesManager">
<favorites_list name="SrEmpregos" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Enum" />
<option value="Class" />
</list>
</option>
</component>
<component name="ProjectId" id="1YULzTrR8DxG7jhNeCPjeN3Yo6l" />
<component name="ProjectViewState">
<option name="abbreviatePackageNames" value="true" />
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showExcludedFiles" value="true" />
<option name="showLibraryContents" value="true" />
<option name="showMembers" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="com.intellij.ide.scratch.LRUPopupBuilder$1/New Scratch File" value="GitIgnore" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../.." />
<property name="project.structure.last.edited" value="Artifacts" />
<property name="project.structure.proportion" value="0.0" />
<property name="project.structure.side.proportion" value="0.0" />
</component>
<component name="RecentsManager">
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="br.com.blecaute.empregos.utils" />
<recent name="br.com.blecaute.empregos.apis" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="C:\Users\c\Desktop\New Plugins Projects\Workspace\SrEmpregos\src\main\java\br\com\blecaute\empregos" />
<recent name="C:\Users\c\Desktop\New Plugins Projects\Workspace\SrEmpregos" />
</key>
</component>
<component name="RunManager" selected="Application.JobUtils">
<configuration name="JobUtils" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="br.com.blecaute.empregos.utils.JobUtils" />
<module name="SrEmpregos" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="PlaceholderHook" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="br.com.blecaute.empregos.hooks.PlaceholderHook" />
<module name="SrEmpregos" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="SQLManager" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="br.com.blecaute.empregos.manager.SQLManager" />
<module name="SrEmpregos" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<recent_temporary>
<list>
<item itemvalue="Application.JobUtils" />
<item itemvalue="Application.PlaceholderHook" />
<item itemvalue="Application.SQLManager" />
</list>
</recent_temporary>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="4dce16e8-554c-438f-9174-b5ab871ed9fd" name="Default Changelist" comment="" />
<created>1582992491688</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1582992491688</updated>
</task>
<servers />
</component>
<component name="WindowStateProjectService">
<state x="488" y="66" key="#com.intellij.ide.util.MemberChooser" timestamp="1583282736321">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="488" y="66" key="#com.intellij.ide.util.MemberChooser/0.0.1366.728@0.0.1366.728" timestamp="1583282736321" />
<state x="363" y="95" key="#com.intellij.openapi.updateSettings.impl.PluginUpdateInfoDialog" timestamp="1583112597815">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="363" y="95" key="#com.intellij.openapi.updateSettings.impl.PluginUpdateInfoDialog/0.0.1366.728@0.0.1366.728" timestamp="1583112597815" />
<state x="483" y="235" key="#com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesDialog.classes" timestamp="1583208268994">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="483" y="235" key="#com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesDialog.classes/0.0.1366.728@0.0.1366.728" timestamp="1583208268994" />
<state x="413" y="111" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog" timestamp="1583209644285">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="413" y="111" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.0.1366.728@0.0.1366.728" timestamp="1583209644285" />
<state x="463" y="106" key="FileChooserDialogImpl" timestamp="1583378469176">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="463" y="106" key="FileChooserDialogImpl/0.0.1366.728@0.0.1366.728" timestamp="1583378469176" />
<state x="751" y="305" key="Github.CreateGistDialog" timestamp="1583378351393">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="751" y="305" key="Github.CreateGistDialog/0.0.1366.728@0.0.1366.728" timestamp="1583378351393" />
<state x="556" y="260" key="Github.ShareDialog" timestamp="1583378450779">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="556" y="260" key="Github.ShareDialog/0.0.1366.728@0.0.1366.728" timestamp="1583378450779" />
<state width="1326" height="152" key="GridCell.Tab.0.bottom" timestamp="1583212013223">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1326" height="152" key="GridCell.Tab.0.bottom/0.0.1366.728@0.0.1366.728" timestamp="1583212013223" />
<state width="1326" height="152" key="GridCell.Tab.0.center" timestamp="1583212013223">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1326" height="152" key="GridCell.Tab.0.center/0.0.1366.728@0.0.1366.728" timestamp="1583212013223" />
<state width="1326" height="152" key="GridCell.Tab.0.left" timestamp="1583212013223">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1326" height="152" key="GridCell.Tab.0.left/0.0.1366.728@0.0.1366.728" timestamp="1583212013223" />
<state width="1326" height="152" key="GridCell.Tab.0.right" timestamp="1583212013223">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1326" height="152" key="GridCell.Tab.0.right/0.0.1366.728@0.0.1366.728" timestamp="1583212013223" />
<state x="163" y="0" key="SettingsEditor" timestamp="1583279270461">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="163" y="0" key="SettingsEditor/0.0.1366.728@0.0.1366.728" timestamp="1583279270461" />
<state x="397" y="0" key="refactoring.ChangeSignatureDialog" timestamp="1583120034310">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="397" y="0" key="refactoring.ChangeSignatureDialog/0.0.1366.728@0.0.1366.728" timestamp="1583120034310" />
<state x="339" y="157" key="run.anything.popup" timestamp="1583371275092">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="339" y="157" key="run.anything.popup/0.0.1366.728@0.0.1366.728" timestamp="1583371275092" />
</component>
</project>
<?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>br.com.blecaute.empregos</groupId>
<artifactId>SrEmpregos</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.19.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.8.8-R0.1-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/Libs/Spigot.jar</systemPath>
</dependency>
<dependency>
<groupId>br.com.devpaulo.legendchat</groupId>
<artifactId>LegendChat</artifactId>
<version>1.1.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/Libs/LegendChat.jar</systemPath>
</dependency>
<dependency>
<groupId>be.maximvdw</groupId>
<artifactId>MVdWPlaceholderAPI</artifactId>
<version>3.0.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/Libs/MVdWPlaceholderAPI.jar</systemPath>
</dependency>
<dependency>
<groupId>me.clip.placeholderapi</groupId>
<artifactId>PlaceholderAPI</artifactId>
<version>2.10.4</version>
<scope>system</scope>
<systemPath>${project.basedir}/Libs/PlaceholderAPI.jar</systemPath>
</dependency>
<dependency>
<groupId>com.github.MilkBowl</groupId>
<artifactId>VaultAPI</artifactId>
<version>1.7</version>
<scope>system</scope>
<systemPath>${project.basedir}/Libs/Vault.jar</systemPath>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
package br.com.blecaute.empregos.apis;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Employee;
import br.com.blecaute.empregos.objects.Quest;
import org.bukkit.entity.Player;
import java.math.BigDecimal;
import java.util.List;
public class EmployeeAPI {
private EmployeeAPI() {}
/**
*
* @param p jogador a ser verificado
* @return verifica se o jogador tem algum trabalho
*/
public Boolean hasJob(String p) {
return SrEmpregos.getEmployeeManager().hasJob(p);
}
/**
*
* @param p jogador a ser verificado
* @return retorna a conta do jogador
*/
public Employee getEmployeeAccount(String p) {
return SrEmpregos.getEmployeeManager().getEmployeeAccount(p);
}
/**
*
* @param p jogador a ser verificado
* @param job trabalho a ser verificado
* @return verificar se o jogador está em um determinado trablho
*/
public Boolean isInJob(String p, JobType job) {
return SrEmpregos.getEmployeeManager().isInJob(p, job);
}
/**
*
* @param p jogador a ser verificado
* @return retorna o trabalho atual do jogador
*/
public JobType getEmployeeJob(String p) {
return SrEmpregos.getEmployeeManager().getEmployeeJob(p);
}
/**
*
* @param p jogador a ser verificado
* @return retorna o salário atual do jogador
*/
public BigDecimal getEmployeeSalary(String p) {
return SrEmpregos.getEmployeeManager().getEmployeeSalary(p);
}
/**
*
* @param p jogador para definir o salário
* @param salary salário a ser dado
* @return define o salário do jogador
*/
public Boolean setEmployeeSalary(String p, BigDecimal salary) {
return SrEmpregos.getEmployeeManager().setEmployeeSalary(p, salary);
}
/**
*
* @param p jogador para adicionar o salário
* @param salary salário
* @return aumenta o salário do jogador
*/
public Boolean addEmployeeSalary(String p, BigDecimal salary) {
return SrEmpregos.getEmployeeManager().addEmployeeSalary(p, salary);
}
/**
*
* @param p jogador a ser removido
* @param salary salário a ser removido
* @return diminui o salário do jogador
*/
public Boolean removeEmployeeSalary(String p, BigDecimal salary) {
return SrEmpregos.getEmployeeManager().removeEmployeeSalary(p, salary);
}
/**
*
* @param p jogador a ser verificado
* @return retorna a contagem para pegar o salário
*/
public Integer getEmployeeCurrentMeta(String p) {
return SrEmpregos.getEmployeeManager().getEmployeeCurrentMeta(p);
}
/**
*
* @param p jogador a ter sua meta modificada
* @param value nova meta do jogador
* @return define a contagem para pegar osalário
*/
public Boolean setEmployeeCurrentMeta(String p, Integer value) {
return SrEmpregos.getEmployeeManager().setEmployeeCurrentMeta(p, value);
}
/**
*
* @param p jogador a ser verificado
* @return retorna total de ações efetuadas (cortar, quebrar, pescar etc.)
*/
public Integer getEmployeeMeta(String p) {
return SrEmpregos.getEmployeeManager().getEmployeeMeta(p);
}
/**
*
* @param p jogador a ter sua meta modificada
* @param value nova meta a ser dada
* @return define o total de ações efetuadas
*/
public Boolean setEmployeeMeta(String p, Integer value) {
return SrEmpregos.getEmployeeManager().setEmployeeMeta(p, value);
}
/**
*
* @param p jogador a ser adicionado
* @param job emprego que será dado ao jogador
* @return adiciona um emprego ao jogador
*/
public Boolean addJob(Player p, JobType job) {
return SrEmpregos.getEmployeeManager().contractPlayer(p, job);
}
/**
*
* @param p jogador a ser demitido
* @return demite o jogador do seu emprego atual
*/
public Boolean dismissPlayer(String p) {
return SrEmpregos.getEmployeeManager().dismissPlayer(p);
}
/**
*
* @param p jogador a ter seu trabalho modificado
* @param job novo trabalho do jogador
* @return define o emprego do jogador
*/
public Boolean setEmployeeJob(String p, JobType job) {
return SrEmpregos.getEmployeeManager().setEmployeeJob(p, job);
}
/**
*
* @param p jogador a ser verificado
* @return retorna a lista de ids das quests completadas pelo jogador
*/
public List<String> getEmployeeQuests(String p) {
return SrEmpregos.getEmployeeManager().getEmployeeQuests(p);
}
/**
*
* @param p jogador a ter suas quests modificadas
* @param q quest a ser dada
* @return adiciona uma quest ao jogador
*/
public Boolean addEmployeeQuests(String p, Quest q) {
return SrEmpregos.getEmployeeManager().addEmployeeQuests(p, q);
}
/**
*
* @param p jogador a ter a quest removida
* @param q quest a ser removida
* @return remove uma quest do jogador
*/
public Boolean removeEmployeeQuest(String p, Quest q) {
return SrEmpregos.getEmployeeManager().removeEmployeeQuest(p, q);
}
/**
*
* @param p jogador a ser verificado
* @param q quest a ser verificada
* @return verifica se a quest do jogador está completada
*/
public Boolean isCompleted(String p, Quest q) {
return SrEmpregos.getEmployeeManager().isCompleted(p, q);
}
}
package br.com.blecaute.empregos.apis.events;
import br.com.blecaute.empregos.enums.JobType;
import lombok.Getter;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
public class JobContractEvent extends PlayerEvent {
@Getter private JobType job;
public JobContractEvent(Player p, JobType job) {
super(p);
this.job = job;
}
private static final HandlerList handler = new HandlerList();
public static HandlerList getHandlerList() {
return handler;
}
@Override
public HandlerList getHandlers() {
return handler;
}
}
package br.com.blecaute.empregos.apis.events;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Employee;
import lombok.Getter;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class JobDismissEvent extends Event {
@Getter private Employee employee;
@Getter private JobType job;
private static final HandlerList handler = new HandlerList();
public JobDismissEvent(Employee employee, JobType job) {
this.employee = employee;
this.job = job;
}
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
}
package br.com.blecaute.empregos.apis.events;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Employee;
import lombok.Getter;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
public class JobGetPaymentEvent extends PlayerEvent {
@Getter private Employee employee;
@Getter private JobType job;
private static final HandlerList handler = new HandlerList();
public JobGetPaymentEvent(Player p, Employee employee, JobType job) {
super(p);
this.employee = employee;
this.job = job;
}
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
}
package br.com.blecaute.empregos.apis.events;
import br.com.blecaute.empregos.objects.Employee;
import br.com.blecaute.empregos.objects.Quest;
import lombok.Getter;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
public class JobQuestCompleteEvent extends PlayerEvent implements Cancellable {
@Getter private Quest quest;
@Getter private Employee employee;
private Boolean cancelled = false;
private static final HandlerList handler = new HandlerList();
public JobQuestCompleteEvent(Player p, Quest quest, Employee employee) {
super(p);
this.quest = quest;
this.employee = employee;
}
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean b) {
this.cancelled = b;
}
}
package br.com.blecaute.empregos.apis;
import br.com.blecaute.empregos.utils.ReflectionUtils;
import org.bukkit.inventory.ItemStack;
import java.lang.reflect.Method;
public class GlowAPI {
private static Class<?> NBTTagCompoundClass;
private static Class<?> NBTTagListClass;
private static Method asNMSCopy;
private static Method asCraftMirror;
private static Method hasNBTTagCompound;
private static Method getNBTTagCompound;
private static Method setNBTTagCompound;
private static Method setNBTBaseCompound;
public static ItemStack addGlow(ItemStack item) {
try {
Object NBTTagCompound = null;
Object CraftItemStack = asNMSCopy.invoke(null, item);
boolean hasNBTTag = (boolean) hasNBTTagCompound.invoke(CraftItemStack);
if (!hasNBTTag) {
NBTTagCompound = NBTTagCompoundClass.newInstance();
setNBTBaseCompound.invoke(CraftItemStack, NBTTagCompound);
}
if (NBTTagCompound == null) NBTTagCompound = getNBTTagCompound.invoke(CraftItemStack);
setNBTBaseCompound.invoke(NBTTagCompound, "ench", NBTTagListClass.newInstance());
setNBTTagCompound.invoke(CraftItemStack, NBTTagCompound);
return (ItemStack) asCraftMirror.invoke(null, CraftItemStack);
} catch (Throwable e) {
return item;
}
}
public static void load() {
try {
Class<?> itemStackClass = ReflectionUtils.getNMSClass("ItemStack");
Class<?> craftItemStackClass = ReflectionUtils.getOBClass("inventory.CraftItemStack");
NBTTagListClass = ReflectionUtils.getNMSClass("NBTTagList");
NBTTagCompoundClass = ReflectionUtils.getNMSClass("NBTTagCompound");
asNMSCopy = craftItemStackClass.getDeclaredMethod("asNMSCopy", ItemStack.class);
asCraftMirror = craftItemStackClass.getDeclaredMethod("asCraftMirror", itemStackClass);
hasNBTTagCompound = itemStackClass.getDeclaredMethod("hasTag");
getNBTTagCompound = itemStackClass.getDeclaredMethod("getTag");
setNBTTagCompound = itemStackClass.getDeclaredMethod("setTag", NBTTagCompoundClass);
Class<?> NBTBaseClass = ReflectionUtils.getNMSClass("NBTBase");
setNBTBaseCompound = NBTTagCompoundClass.getDeclaredMethod("set", String.class, NBTBaseClass);
} catch (Throwable ignored) { }
}
}
package br.com.blecaute.empregos.apis;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Quest;
import java.math.BigDecimal;
import java.util.List;
public class JobAPI {
private JobAPI() {}
/**
*
* @param job emprego a ser verificado
* @return retorna o nome de um emprego
*/
public String getJobName(JobType job) {
return SrEmpregos.getJobManager().getJobName(job);
}
/**
*
* @param job emprego a ser verificado
* @return retorna a tag de um emprego
*/
public String getJobTag(JobType job) {
return SrEmpregos.getJobManager().getJobTag(job);
}
/**
*
* @param job emprego a ser verificado
* @return retorna o salário inicial do emprego
*/
public BigDecimal getJobSalary(JobType job) {
return SrEmpregos.getJobManager().getJobSalary(job);
}
/**
*
* @param job emprego a ser verificado
* @return retorna a meta a ser concluida para receber o salário
*/
public Integer getJobMeta(JobType job) {
return SrEmpregos.getJobManager().getJobMeta(job);
}
/**
*
* @param job emprego a ser verificado
* @return retorna a lista de mundos válidos para esse emprego
*/
public List<String> getJobWorlds(JobType job) {
return SrEmpregos.getJobManager().getJobWorlds(job);
}
/**
*
* @param job emprego a ser verificado
* @return retorna a lista de quests do emprego
*/
public List<Quest> getJobQuests(JobType job) {
return SrEmpregos.getJobManager().getJobQuests(job);
}
/**
*
* @param job emprego a ser verificado
* @param world mundo a ser verificado
* @return verifica se é um mundo válido
*/
public Boolean isValidJobWorld(JobType job, String world) {
return SrEmpregos.getJobManager().isValidJobWorld(job, world);
}
}
package br.com.blecaute.empregos.apis;
import br.com.blecaute.empregos.utils.ReflectionUtils;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import java.lang.reflect.Field;
import java.util.Base64;
import java.util.Base64.Encoder;
import java.util.UUID;
/**
* @author Mior
**/
public class SkullAPI {
private static Encoder encoder;
private static ItemStack base;
private static Field profileField;
public static ItemStack getByUrl(String url) {
ItemStack skull = base.clone();
try {
SkullMeta skullMeta = (SkullMeta) skull.getItemMeta();
GameProfile profile = new GameProfile(UUID.randomUUID(), null);
byte[] encodedData = encoder.encode(String.format("{textures:{SKIN:{url:\"%s\"}}}", url).getBytes());
profile.getProperties().put("textures", new Property("textures", new String(encodedData)));
profileField.set(skullMeta, profile);
skull.setItemMeta(skullMeta);
} catch (Throwable e) {
e.printStackTrace();
}
return skull;
}
public static ItemStack getByName(String name) {
ItemStack skull = base.clone();
SkullMeta meta = (SkullMeta) skull.getItemMeta();
meta.setOwner(name);
skull.setItemMeta(meta);
return skull;
}
public static void load() {
try
{
Class<?> skullMetaClass = ReflectionUtils.getOBClass("inventory.CraftMetaSkull");
profileField = skullMetaClass.getDeclaredField("profile");
profileField.setAccessible(true);
base = new ItemStack(Material.SKULL_ITEM);
base.setDurability((short) 3);
encoder = Base64.getEncoder();
}
catch (Throwable ignored) {}
}
}
package br.com.blecaute.empregos.database;
import java.sql.Connection;
import java.sql.SQLException;
public abstract class Database {
public abstract void close();
public abstract Connection getConnection() throws SQLException;
}
package br.com.blecaute.empregos.database;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class MySQL extends Database {
private final HikariDataSource source;
public MySQL(String host, String port, String database, String user, String password) {
source = new HikariDataSource();
source.setMaximumPoolSize(10);
source.setJdbcUrl("jdbc:mysql://" + host + ":" + port + "/" + database);
source.setUsername(user);
source.setPassword(password);
source.addDataSourceProperty("autoReconnect", "true");
}
@Override
public void close() {
source.close();
}
@Override
public Connection getConnection() throws SQLException {
return source.getConnection();
}
}
package br.com.blecaute.empregos.database;
import br.com.blecaute.empregos.SrEmpregos;
import org.sqlite.SQLiteDataSource;
import java.io.File;
import java.sql.Connection;
import java.sql.SQLException;
public class SQLite extends Database {
private final SQLiteDataSource source = new SQLiteDataSource();
@SuppressWarnings("ResultOfMethodCallIgnored")
public SQLite() {
try {
File pasta = new File(SrEmpregos.getInstance().getDataFolder() + File.separator + "database");
if (!pasta.exists()) {
pasta.mkdirs();
}
} catch (Throwable e) {
SrEmpregos.info("§cOcorreu um erro ao tentar criar a pasta da database: " + e.getMessage());
return;
}
source.setUrl("jdbc:sqlite:" + new File(SrEmpregos.getInstance().getDataFolder() + File.separator + "database", "dados.db"));
}
@Override
public void close() { }
@Override
public Connection getConnection() throws SQLException {
return source.getConnection();
}
}
package br.com.blecaute.empregos.enums;
public enum GuiType {
JOBS,
CONFIRM,
QUESTS
}
package br.com.blecaute.empregos.enums;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.jobs.Job;
public enum JobType {
HUNTER,
FARMER,
KILLER,
LUMBERJACK,
MINER,
DIGGER,
FISHER;
public static String getName(String job) {
return SrEmpregos.getJobs().stream().filter(f -> f.getType().name().equalsIgnoreCase(job)).map(Job::getName).findFirst().orElse("");
}
}
package br.com.blecaute.empregos.hooks;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.enums.JobType;
import br.com.devpaulo.legendchat.api.events.ChatMessageEvent;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class LegendHook implements Listener {
private boolean enable;
public LegendHook() {
SrEmpregos.info("§aLegendchat encontrado... ativando implementação!");
Bukkit.getServer().getPluginManager().registerEvents(this, SrEmpregos.getInstance());
enable = SrEmpregos.getInstance().getConfig().getBoolean("Preferencias.Chat-Tag");
}
@EventHandler
public void onChat(ChatMessageEvent e) {
if(!enable) return;
if(!e.getTags().contains("empregos")) return;
if(SrEmpregos.getEmployeeManager().hasJob(e.getSender().getName())) {
JobType job = SrEmpregos.getEmployeeManager().getEmployeeJob(e.getSender().getName());
String tag = SrEmpregos.getJobManager().getJobTag(job);
e.setTagValue("empregos", tag);
}
}
}
package br.com.blecaute.empregos.hooks;
import be.maximvdw.placeholderapi.PlaceholderAPI;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.utils.Utils;
import org.bukkit.OfflinePlayer;
public class MvdwHook {
private String withoutJob;
private String bar;
private int amount;
private String colorCompleted;
private String colorIncomplete;
String first;
String end;
public MvdwHook() {
SrEmpregos.info("§aMVdWPlaceholderAPI encontrado... ativando implementação!");
withoutJob = SrEmpregos.getInstance().getConfig().getString("Preferencias.Placeholder.Desempregado");
bar = SrEmpregos.getInstance().getConfig().getString("Preferencias.Barra-De-Progress.Barra");
amount = SrEmpregos.getInstance().getConfig().getInt("Preferencias.Barra-De-Progress.Quantidade");
colorCompleted = SrEmpregos.getInstance().getConfig().getString("Preferencias.Barra-De-Progress.Cor-Completa").replace("&", "§");
colorIncomplete = SrEmpregos.getInstance().getConfig().getString("Preferencias.Barra-De-Progress.Cor-Imcompleta").replace("&", "§");
first = SrEmpregos.getInstance().getConfig().getString("Preferencias.Barra-De-Progress.Primeiro").replace("&", "§");
end = SrEmpregos.getInstance().getConfig().getString("Preferencias.Barra-De-Progress.Ultimo").replace("&", "§");
}
public void register() {
PlaceholderAPI.registerPlaceholder(SrEmpregos.getInstance(), "empregos_player_emprego", placeholderReplaceEvent -> {
if(placeholderReplaceEvent.getOfflinePlayer() == null) return null;
OfflinePlayer p = placeholderReplaceEvent.getOfflinePlayer();
if (SrEmpregos.getEmployeeManager().hasJob(p.getName())) {
JobType job = SrEmpregos.getEmployeeManager().getEmployeeJob(p.getName());
return SrEmpregos.getJobManager().getJobTag(job);
} else {
return withoutJob.replace("&", "§");
}
});
PlaceholderAPI.registerPlaceholder(SrEmpregos.getInstance(), "empregos_player_meta_total", placeholderReplaceEvent -> {
if(placeholderReplaceEvent.getOfflinePlayer() == null) return null;
OfflinePlayer p = placeholderReplaceEvent.getOfflinePlayer();
return "" + SrEmpregos.getEmployeeManager().getEmployeeMeta(p.getName());
});
PlaceholderAPI.registerPlaceholder(SrEmpregos.getInstance(), "empregos_player_current", placeholderReplaceEvent -> {
if(placeholderReplaceEvent.getOfflinePlayer() == null) return null;
OfflinePlayer p = placeholderReplaceEvent.getOfflinePlayer();
return "" + SrEmpregos.getEmployeeManager().getEmployeeCurrentMeta(p.getName());
});
PlaceholderAPI.registerPlaceholder(SrEmpregos.getInstance(), "empregos_player_quests", placeholderReplaceEvent -> {
if(placeholderReplaceEvent.getOfflinePlayer() == null) return null;
OfflinePlayer p = placeholderReplaceEvent.getOfflinePlayer();
return "" + SrEmpregos.getEmployeeManager().getEmployeeQuests(p.getName()).size();
});
PlaceholderAPI.registerPlaceholder(SrEmpregos.getInstance(), "empregos_player_salary", placeholderReplaceEvent -> {
if(placeholderReplaceEvent.getOfflinePlayer() == null) return null;
OfflinePlayer p = placeholderReplaceEvent.getOfflinePlayer();
return Utils.getNumberFormatted(SrEmpregos.getEmployeeManager().getEmployeeSalary(p.getName()).doubleValue());
});
PlaceholderAPI.registerPlaceholder(SrEmpregos.getInstance(), "empregos_player_progress", placeholderReplaceEvent -> {
if(placeholderReplaceEvent.getOfflinePlayer() == null) return null;
OfflinePlayer p = placeholderReplaceEvent.getOfflinePlayer();
if (SrEmpregos.getEmployeeManager().hasJob(p.getName())) {
int current = SrEmpregos.getEmployeeManager().getEmployeeCurrentMeta(p.getName());
JobType job = SrEmpregos.getEmployeeManager().getEmployeeJob(p.getName());
int meta = SrEmpregos.getJobManager().getJobMeta(job);
return "" + (float) ((current * 100) / meta);
} else {
return "" + 0.0;
}
});
PlaceholderAPI.registerPlaceholder(SrEmpregos.getInstance(), "empregos_player_progress_bar", placeholderReplaceEvent -> {
if(placeholderReplaceEvent.getOfflinePlayer() == null) return null;
OfflinePlayer p = placeholderReplaceEvent.getOfflinePlayer();
int current = SrEmpregos.getEmployeeManager().getEmployeeCurrentMeta(p.getName());
JobType job = SrEmpregos.getEmployeeManager().getEmployeeJob(p.getName());
int meta = SrEmpregos.getJobManager().getJobMeta(job);
if (meta <= 0) meta = 100;
return first + Utils.getProgressBar(current, meta, bar, amount, colorCompleted, colorIncomplete) + end;
});
}
}
package br.com.blecaute.empregos.hooks;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.utils.Utils;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.OfflinePlayer;
public class PlaceholderHook extends PlaceholderExpansion {
private String withoutJob;
private String bar;
private int amount;
private String colorCompleted;
private String colorIncomplete;
String first;
String end;
public PlaceholderHook() {
SrEmpregos.info("§aPlaceholderAPI encontrado... ativando implementação!");
withoutJob = SrEmpregos.getInstance().getConfig().getString("Preferencias.Placeholder.Desempregado");
bar = SrEmpregos.getInstance().getConfig().getString("Preferencias.Barra-De-Progress.Barra");
amount = SrEmpregos.getInstance().getConfig().getInt("Preferencias.Barra-De-Progress.Quantidade");
colorCompleted = SrEmpregos.getInstance().getConfig().getString("Preferencias.Barra-De-Progress.Cor-Completa").replace("&", "§");
colorIncomplete = SrEmpregos.getInstance().getConfig().getString("Preferencias.Barra-De-Progress.Cor-Imcompleta").replace("&", "§");
first = SrEmpregos.getInstance().getConfig().getString("Preferencias.Barra-De-Progress.Primeiro").replace("&", "§");
end = SrEmpregos.getInstance().getConfig().getString("Preferencias.Barra-De-Progress.Ultimo").replace("&", "§");
}
@Override
public String getIdentifier() {
return "empregos";
}
@Override
public String getAuthor() {
return "SrBlecaute";
}
@Override
public String getVersion() {
return "1.0-SNAPSHOT";
}
@Override
public String onRequest(OfflinePlayer p, String param) {
if(p == null) return null;
switch (param) {
case "player_emprego":
if (SrEmpregos.getEmployeeManager().hasJob(p.getName())) {
JobType job = SrEmpregos.getEmployeeManager().getEmployeeJob(p.getName());
return SrEmpregos.getJobManager().getJobTag(job);
} else {
return withoutJob.replace("&", "§");
}
case "player_meta_total":
return "" + SrEmpregos.getEmployeeManager().getEmployeeMeta(p.getName());
case "player_current":
return "" + SrEmpregos.getEmployeeManager().getEmployeeCurrentMeta(p.getName());
case "player_quests":
return "" + SrEmpregos.getEmployeeManager().getEmployeeQuests(p.getName()).size();
case "player_salary":
return Utils.getNumberFormatted(SrEmpregos.getEmployeeManager().getEmployeeSalary(p.getName()).doubleValue());
case "player_progress": {
if (SrEmpregos.getEmployeeManager().hasJob(p.getName())) {
int current = SrEmpregos.getEmployeeManager().getEmployeeCurrentMeta(p.getName());
JobType job = SrEmpregos.getEmployeeManager().getEmployeeJob(p.getName());
int meta = SrEmpregos.getJobManager().getJobMeta(job);
return "" + (float) ((current * 100) / meta);
} else {
return "" + 0.0;
}
}
case "player_progress_bar": {
int current = SrEmpregos.getEmployeeManager().getEmployeeCurrentMeta(p.getName());
JobType job = SrEmpregos.getEmployeeManager().getEmployeeJob(p.getName());
int meta = SrEmpregos.getJobManager().getJobMeta(job);
if (meta <= 0) meta = 100;
return first + Utils.getProgressBar(current, meta, bar, amount, colorCompleted, colorIncomplete) + end;
}
default:
break;
}
return null;
}
}
package br.com.blecaute.empregos;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class JobCmd implements CommandExecutor {
@Override
public boolean onCommand(CommandSender s, Command cmd, String l, String[] args) {
if(cmd.getName().equalsIgnoreCase("emprego")) {
if(!(s instanceof Player)) {
s.sendMessage("§cApenas jogadores podem executar esse comando");
return true;
}
Player p = (Player)s;
p.playSound(p.getLocation(), Sound.NOTE_PLING, 5, 1.0F);
SrEmpregos.getGuiManager().openJobsGui(p);
return true;
}
return false;
}
}
package br.com.blecaute.empregos.jobs;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Quest;
import lombok.AllArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@AllArgsConstructor
public class Digger implements Job {
private String name;
private String tag;
private BigDecimal salary;
private Integer meta;
private List<String> worlds;
private List<Quest> quests;
@Override
public String getName() {
return this.name;
}
@Override
public String getTag() {
return this.tag;
}
@Override
public JobType getType() {
return JobType.DIGGER;
}
@Override
public BigDecimal getSalary() {
return this.salary;
}
@Override
public Integer getMeta() {
return this.meta;
}
@Override
public List<String> getWorlds() {
return this.worlds;
}
@Override
public List<Quest> getQuests() {
return this.quests;
}
}
package br.com.blecaute.empregos.jobs;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Quest;
import lombok.AllArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@AllArgsConstructor
public class Farmer implements Job {
private String name;
private String tag;
private BigDecimal salary;
private Integer meta;
private List<String> worlds;
private List<Quest> quests;
@Override
public String getName() {
return this.name;
}
@Override
public String getTag() {
return this.tag;
}
@Override
public JobType getType() {
return JobType.FARMER;
}
@Override
public BigDecimal getSalary() {
return this.salary;
}
@Override
public Integer getMeta() {
return this.meta;
}
@Override
public List<String> getWorlds() {
return this.worlds;
}
@Override
public List<Quest> getQuests() {
return this.quests;
}
}
package br.com.blecaute.empregos.jobs;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Quest;
import lombok.AllArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@AllArgsConstructor
public class Fisher implements Job {
private String name;
private String tag;
private BigDecimal salary;
private Integer meta;
private List<String> worlds;
private List<Quest> quests;
@Override
public String getName() {
return this.name;
}
@Override
public String getTag() {
return this.tag;
}
@Override
public JobType getType() {
return JobType.FISHER;
}
@Override
public BigDecimal getSalary() {
return this.salary;
}
@Override
public Integer getMeta() {
return this.meta;
}
@Override
public List<String> getWorlds() {
return this.worlds;
}
@Override
public List<Quest> getQuests() {
return this.quests;
}
}
package br.com.blecaute.empregos.jobs;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Quest;
import lombok.AllArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@AllArgsConstructor
public class Hunter implements Job {
private String name;
private String tag;
private BigDecimal salary;
private Integer meta;
private List<String> worlds;
private List<Quest> quests;
@Override
public String getName() {
return this.name;
}
@Override
public String getTag() {
return this.tag;
}
@Override
public JobType getType() {
return JobType.HUNTER;
}
@Override
public BigDecimal getSalary() {
return this.salary;
}
@Override
public Integer getMeta() {
return this.meta;
}
@Override
public List<String> getWorlds() {
return this.worlds;
}
@Override
public List<Quest> getQuests() {
return this.quests;
}
}
package br.com.blecaute.empregos.jobs;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Quest;
import java.math.BigDecimal;
import java.util.List;
public interface Job {
String getName();
String getTag();
JobType getType();
BigDecimal getSalary();
Integer getMeta();
List<String> getWorlds();
List<Quest> getQuests();
}
package br.com.blecaute.empregos.jobs;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Quest;
import lombok.AllArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@AllArgsConstructor
public class Killer implements Job {
private String name;
private String tag;
private BigDecimal salary;
private Integer meta;
private List<String> worlds;
private List<Quest> quests;
@Override
public String getName() {
return this.name;
}
@Override
public String getTag() {
return this.tag;
}
@Override
public JobType getType() {
return JobType.KILLER;
}
@Override
public BigDecimal getSalary() {
return this.salary;
}
@Override
public Integer getMeta() {
return this.meta;
}
@Override
public List<String> getWorlds() {
return this.worlds;
}
@Override
public List<Quest> getQuests() {
return this.quests;
}
}
package br.com.blecaute.empregos.jobs;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Quest;
import lombok.AllArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@AllArgsConstructor
public class Lumberjack implements Job {
private String name;
private String tag;
private BigDecimal salary;
private Integer meta;
private List<String> worlds;
private List<Quest> quests;
@Override
public String getName() {
return this.name;
}
@Override
public String getTag() {
return this.tag;
}
@Override
public JobType getType() {
return JobType.LUMBERJACK;
}
@Override
public BigDecimal getSalary() {
return this.salary;
}
@Override
public Integer getMeta() {
return this.meta;
}
@Override
public List<String> getWorlds() {
return this.worlds;
}
@Override
public List<Quest> getQuests() {
return this.quests;
}
}
package br.com.blecaute.empregos.jobs;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Quest;
import lombok.AllArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@AllArgsConstructor
public class Miner implements Job {
private String name;
private String tag;
private BigDecimal salary;
private Integer meta;
private List<String> worlds;
private List<Quest> quests;
@Override
public String getName() {
return this.name;
}
@Override
public String getTag() {
return this.tag;
}
@Override
public JobType getType() {
return JobType.MINER;
}
@Override
public BigDecimal getSalary() {
return this.salary;
}
@Override
public Integer getMeta() {
return this.meta;
}
@Override
public List<String> getWorlds() {
return this.worlds;
}
@Override
public List<Quest> getQuests() {
return this.quests;
}
}
package br.com.blecaute.empregos.listeners;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Employee;
import br.com.blecaute.empregos.utils.JobUtils;
import org.bukkit.GameMode;
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.BlockBreakEvent;
import org.bukkit.material.Crops;
public class BreakEvent implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
public void onBlockBreak(BlockBreakEvent e) {
if(e.getPlayer().getGameMode().equals(GameMode.CREATIVE)) return;
if(SrEmpregos.getEmployeeManager().hasJob(e.getPlayer().getName())) {
Player p = e.getPlayer();
JobType playerJob = SrEmpregos.getEmployeeManager().getEmployeeJob(p.getName());
if(!SrEmpregos.getJobManager().isValidJobWorld(playerJob, p.getWorld().getName())) return;
if(playerJob.equals(JobType.MINER) || playerJob.equals(JobType.DIGGER) || playerJob.equals(JobType.FARMER) || playerJob.equals(JobType.LUMBERJACK)) {
if(SrEmpregos.getJobManager().isValidJobMaterial(playerJob, e.getBlock().getType())) {
if(playerJob.equals(JobType.FARMER)) {
if(e.getBlock().getState().getData() instanceof Crops && !JobUtils.isGrown(e.getBlock())) return;
}
Employee employee = SrEmpregos.getEmployeeManager().getEmployeeAccount(p.getName());
employee.setCompletedMeta(employee.getCompletedMeta() + 1);
employee.setCurrentMeta(employee.getCurrentMeta() + 1);
JobUtils.executeEvents(p, employee, playerJob);
}
}
}
}
}
package br.com.blecaute.empregos.listeners;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.GuiHolder;
import br.com.blecaute.empregos.utils.Utils;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
public class ClickEvent implements Listener {
@EventHandler
public void onClick(InventoryClickEvent e) {
if(e.getInventory() == null) return;
if(!(e.getInventory().getHolder() instanceof GuiHolder)) return;
if(e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) return;
e.setCancelled(true);
Player p = (Player)e.getWhoClicked();
GuiHolder holder = (GuiHolder) e.getInventory().getHolder();
switch (holder.getType()) {
case JOBS:
if(e.getRawSlot() == 37) {
p.playSound(p.getLocation(), Sound.CLICK, 5, 1.0F);
if(!SrEmpregos.getEmployeeManager().hasJob(p.getName())) {
Utils.sendSound(p, SrEmpregos.getInstance().getConfig().getString("Sons.Erro"));
p.sendMessage(SrEmpregos.getMessagesManager().getMessage("sem.emprego"));
break;
}
JobType job = SrEmpregos.getEmployeeManager().getEmployeeJob(p.getName());
SrEmpregos.getGuiManager().openQuests(p, 1, job);
break;
}
if(e.getRawSlot() == 44) {
p.playSound(p.getLocation(), Sound.CLICK, 5, 1.0F);
if(!SrEmpregos.getEmployeeManager().hasJob(p.getName())) {
Utils.sendSound(p, SrEmpregos.getInstance().getConfig().getString("Sons.Erro"));
p.sendMessage(SrEmpregos.getMessagesManager().getMessage("sem.emprego"));
break;
}
SrEmpregos.getGuiManager().openDismiss(p);
break;
}
JobType job = null;
switch (e.getRawSlot()) {
case 10:
job = JobType.MINER;
break;
case 12:
job = JobType.LUMBERJACK;
break;
case 14:
job = JobType.DIGGER;
break;
case 16:
job = JobType.HUNTER;
break;
case 20:
job = JobType.FISHER;
break;
case 22:
job = JobType.FARMER;
break;
case 24:
job = JobType.KILLER;
break;
default:
break;
}
if(job == null) break;
p.playSound(p.getLocation(), Sound.CLICK, 5, 1.0F);
if(SrEmpregos.getEmployeeManager().isInJob(p.getName(), job)) break;
if(SrEmpregos.getEmployeeManager().hasJob(p.getName())) {
Utils.sendSound(p, SrEmpregos.getInstance().getConfig().getString("Sons.Erro"));
p.sendMessage(SrEmpregos.getMessagesManager().getMessage("com.emprego"));
break;
}
p.closeInventory();
if(SrEmpregos.getEmployeeManager().contractPlayer(p, job)) {
Utils.sendSound(p, SrEmpregos.getInstance().getConfig().getString("Sons.Sucesso"));
p.sendMessage(SrEmpregos.getMessagesManager().getMessage("contratado").replace("@emprego", SrEmpregos.getJobManager().getJobName(job)));
} else {
p.sendMessage("§cOcorreu um erro ao tentar fazer essa operação!");
}
break;
case CONFIRM:
if(e.getRawSlot() == 11) {
p.closeInventory();
p.playSound(p.getLocation(), Sound.VILLAGER_HAGGLE, 5, 1.0F);
break;
}
if(e.getRawSlot() == 15) {
p.closeInventory();
p.playSound(p.getLocation(), Sound.CLICK, 5, 1.0F);
if(SrEmpregos.getEmployeeManager().dismissPlayer(p.getName())) {
Utils.sendSound(p, SrEmpregos.getInstance().getConfig().getString("Sons.Sucesso"));
p.sendMessage(SrEmpregos.getMessagesManager().getMessage("demissao"));
} else {
p.sendMessage("§cOcorreu um erro ao tentar fazer essa operação!");
}
}
break;
case QUESTS:
if(e.getRawSlot() == 48) {
p.playSound(p.getLocation(), Sound.CLICK, 5, 1.0F);
int page = holder.getPage() - 1;
SrEmpregos.getGuiManager().openQuests(p, page, holder.getJob());
break;
}
if(e.getRawSlot() == 49) {
p.playSound(p.getLocation(), Sound.CLICK, 5, 1.0F);
SrEmpregos.getGuiManager().openJobsGui(p);
break;
}
if(e.getRawSlot() == 50) {
p.playSound(p.getLocation(), Sound.CLICK, 5, 1.0F);
int page = holder.getPage() + 1;
SrEmpregos.getGuiManager().openQuests(p, page, holder.getJob());
break;
}
break;
default:
break;
}
}
}
package br.com.blecaute.empregos.listeners;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Employee;
import br.com.blecaute.empregos.utils.JobUtils;
import org.bukkit.GameMode;
import org.bukkit.Material;
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.EntityDeathEvent;
public class EntityEvent implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
public void onEntityDeath(EntityDeathEvent e) {
if(e.getEntity().getKiller() != null) {
Player p = e.getEntity().getKiller();
if(p.getGameMode().equals(GameMode.CREATIVE)) return;
if(SrEmpregos.getEmployeeManager().hasJob(p.getName())) {
JobType playerJob = SrEmpregos.getEmployeeManager().getEmployeeJob(p.getName());
if(!SrEmpregos.getJobManager().isValidJobWorld(playerJob, p.getWorld().getName())) return;
if(playerJob.equals(JobType.KILLER) || playerJob.equals(JobType.HUNTER)) {
if(SrEmpregos.getJobManager().isValidJobEntity(playerJob, e.getEntityType())) {
Employee employee = SrEmpregos.getEmployeeManager().getEmployeeAccount(p.getName());
employee.setCompletedMeta(employee.getCompletedMeta() + 1);
employee.setCurrentMeta(employee.getCurrentMeta() + 1);
JobUtils.executeEvents(p, employee, playerJob);
}
}
}
}
}
}
package br.com.blecaute.empregos.listeners;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Employee;
import br.com.blecaute.empregos.utils.JobUtils;
import org.bukkit.GameMode;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerFishEvent;
public class FishEvent implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerFish(PlayerFishEvent e) {
if(e.getPlayer().getGameMode().equals(GameMode.CREATIVE)) return;
if(!e.getState().equals(PlayerFishEvent.State.CAUGHT_FISH)) return;
if(!(e.getCaught() instanceof Item)) return;
if(SrEmpregos.getEmployeeManager().hasJob(e.getPlayer().getName())) {
Player p = e.getPlayer();
JobType playerJob = SrEmpregos.getEmployeeManager().getEmployeeJob(p.getName());
if(!SrEmpregos.getJobManager().isValidJobWorld(playerJob, p.getWorld().getName())) return;
if(playerJob.equals(JobType.FISHER)) {
Item item = (Item) e.getCaught();
if(SrEmpregos.getJobManager().isValidJobMaterial(playerJob, item.getItemStack().getType())) {
Employee employee = SrEmpregos.getEmployeeManager().getEmployeeAccount(p.getName());
employee.setCompletedMeta(employee.getCompletedMeta() + 1);
employee.setCurrentMeta(employee.getCurrentMeta() + 1);
JobUtils.executeEvents(p, employee, playerJob);
}
}
}
}
}
package br.com.blecaute.empregos.manager;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.apis.events.JobContractEvent;
import br.com.blecaute.empregos.apis.events.JobDismissEvent;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Employee;
import br.com.blecaute.empregos.objects.Quest;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class EmployeeManager {
public Boolean hasJob(String p) {
return SrEmpregos.getEmployees().stream().anyMatch(m -> m.getName().equalsIgnoreCase(p));
}
public Employee getEmployeeAccount(String p) {
return SrEmpregos.getEmployees().stream().filter(f -> f.getName().equalsIgnoreCase(p)).findFirst().orElse(null);
}
public Boolean isInJob(String p, JobType job) {
Employee employee = getEmployeeAccount(p);
if(employee != null) {
return employee.getJob().equals(job);
}
return false;
}
public JobType getEmployeeJob(String p) {
return SrEmpregos.getEmployees().stream().filter(f -> f.getName().equalsIgnoreCase(p)).map(Employee::getJob).findFirst().orElse(null);
}
public BigDecimal getEmployeeSalary(String p) {
return SrEmpregos.getEmployees().stream().filter(f -> f.getName().equalsIgnoreCase(p)).map(Employee::getSalary).findFirst().orElse(new BigDecimal("0"));
}
public Boolean setEmployeeSalary(String p, BigDecimal salary) {
Employee employee = getEmployeeAccount(p);
if(employee != null) {
employee.setSalary(salary);
return true;
}
return false;
}
public Boolean addEmployeeSalary(String p, BigDecimal salary) {
Employee employee = getEmployeeAccount(p);
if(employee != null) {
employee.addSalary(salary);
return true;
}
return false;
}
public Boolean removeEmployeeSalary(String p, BigDecimal salary) {
Employee employee = getEmployeeAccount(p);
if(employee != null) {
employee.removeSalary(salary);
return true;
}
return false;
}
public Integer getEmployeeCurrentMeta(String p) {
return SrEmpregos.getEmployees().stream().filter(f -> f.getName().equalsIgnoreCase(p)).map(Employee::getCurrentMeta).findFirst().orElse(0);
}
public Boolean setEmployeeCurrentMeta(String p, Integer value) {
Employee employee = getEmployeeAccount(p);
if(employee != null) {
employee.setCurrentMeta(value);
return true;
}
return false;
}
public Integer getEmployeeMeta(String p) {
return SrEmpregos.getEmployees().stream().filter(f -> f.getName().equalsIgnoreCase(p)).map(Employee::getCompletedMeta).findFirst().orElse(0);
}
public Boolean setEmployeeMeta(String p, Integer value) {
Employee employee = getEmployeeAccount(p);
if(employee != null) {
employee.setCompletedMeta(value);
return true;
}
return false;
}
public Boolean contractPlayer(Player p, JobType job) {
if(!hasJob(p.getName())) {
SrEmpregos.getEmployees().add(new Employee(p.getName(), job, SrEmpregos.getJobManager().getJobSalary(job)));
JobContractEvent event = new JobContractEvent(p, job);
Bukkit.getPluginManager().callEvent(event);
return true;
}
return false;
}
public Boolean dismissPlayer(String p) {
if(hasJob(p)) {
Employee employee = getEmployeeAccount(p);
SrEmpregos.getEmployees().remove(employee);
SrEmpregos.getSqlManager().deleteEmployee(employee);
JobDismissEvent event = new JobDismissEvent(employee, employee.getJob());
Bukkit.getPluginManager().callEvent(event);
return true;
}
return false;
}
public Boolean setEmployeeJob(String p, JobType job) {
Employee employee = getEmployeeAccount(p);
if(employee != null) {
employee.setJob(job);
}
return false;
}
public List<String> getEmployeeQuests(String p) {
return SrEmpregos.getEmployees().stream().filter(f -> f.getName().equalsIgnoreCase(p)).map(Employee::getQuestsComplete).findFirst().orElse(new ArrayList<>());
}
public Boolean addEmployeeQuests(String p, Quest q) {
Employee employee = getEmployeeAccount(p);
if(employee != null) {
if(q.getJob().equals(employee.getJob())) {
if(employee.getQuestsComplete().contains(q.getId())) {
employee.getQuestsComplete().add(q.getId());
return true;
}
}
}
return false;
}
public Boolean removeEmployeeQuest(String p, Quest q) {
Employee employee = getEmployeeAccount(p);
if(employee != null) {
if(q.getJob().equals(employee.getJob())) {
if(employee.getQuestsComplete().contains(q.getId())) {
employee.getQuestsComplete().removeIf(f -> q.getId().equals(f));
return true;
}
}
}
return false;
}
public Boolean isCompleted(String p, Quest q) {
Employee employee = getEmployeeAccount(p);
if(employee != null) {
if(q.getJob().equals(employee.getJob())) {
return employee.getQuestsComplete().stream().anyMatch(m -> q.getId().equals(m));
}
}
return false;
}
}
package br.com.blecaute.empregos.manager;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.apis.GlowAPI;
import br.com.blecaute.empregos.apis.SkullAPI;
import br.com.blecaute.empregos.enums.GuiType;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.GuiHolder;
import br.com.blecaute.empregos.objects.Quest;
import br.com.blecaute.empregos.utils.ItemBuilder;
import br.com.blecaute.empregos.utils.Utils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
public class GuiManager {
private String guiName;
private String selectJob;
private String selectedJob;
private String jobStatus;
private String itemInfoName;
private List<String> itemInfoLore;
private String questName;
private List<String> questLore;
private ItemStack miner;
private ItemStack farmer;
private ItemStack fisher;
private ItemStack hunter;
private ItemStack killer;
private ItemStack lumber;
private ItemStack digger;
private ItemStack itemConfirm;
private ItemStack itemCancel;
private ItemStack quitJob;
private ItemStack quests;
private HashMap<JobType, String> type = new HashMap<>();
public GuiManager() {
load();
}
public void openJobsGui(Player p) {
Inventory inv = Bukkit.createInventory(new GuiHolder(GuiType.JOBS), 5 * 9, this.guiName);
JobType job = SrEmpregos.getEmployeeManager().getEmployeeJob(p.getName());
inv.setItem(10, getJobItem(miner, JobType.MINER, job));
inv.setItem(12, getJobItem(lumber, JobType.LUMBERJACK, job));
inv.setItem(14, getJobItem(digger, JobType.DIGGER, job));
inv.setItem(16, getJobItem(hunter, JobType.HUNTER, job));
inv.setItem(20, getJobItem(fisher, JobType.FISHER, job));
inv.setItem(22, getJobItem(farmer, JobType.FARMER, job));
inv.setItem(24, getJobItem(killer, JobType.KILLER, job));
String name = changePlayerValues(p, itemInfoName);
List<String> lore = itemInfoLore.stream().map(m -> changePlayerValues(p, m.replace("&", "§"))).collect(Collectors.toList());
inv.setItem(36, new ItemBuilder(SkullAPI.getByName(p.getName())).setName(name).setLore(lore).toItemStack());
inv.setItem(37, quests);
inv.setItem(44, quitJob);
p.openInventory(inv);
}
public void openDismiss(Player p) {
Inventory inv = Bukkit.createInventory(new GuiHolder(GuiType.CONFIRM), 3 * 9, "§8Sair do emprego ?");
inv.setItem(11, itemCancel);
inv.setItem(13, quitJob);
inv.setItem(15, itemConfirm);
p.openInventory(inv);
}
public void openQuests(Player p, int page, JobType job) {
int start = 11, index = page * 15 - 15;
Inventory inv = Bukkit.createInventory(new GuiHolder(GuiType.QUESTS, page, job), 6 * 9, "§8Suas conquistas");
List<Quest> quests = SrEmpregos.getJobManager().getJobQuests(job);
EmployeeManager employee = SrEmpregos.getEmployeeManager();
for(; index < quests.size(); index++) {
ItemStack item;
Quest q = quests.get(index);
String name = changeQuestValues(job, q, this.questName);
List<String> lore = this.questLore.stream().map(m -> changeQuestValues(job, q, m)).collect(Collectors.toList());
if(employee.isCompleted(p.getName(), q)) {
lore.add("§aQuest concluida");
item = GlowAPI.addGlow(new ItemBuilder(Material.BOOK).setName(name).setLore(lore).toItemStack());
} else {
lore.add("§cQuest não concluida");
item = new ItemBuilder(Material.PAPER).setName(name).setLore(lore).toItemStack();
}
inv.setItem(start, item);
start++;
if(start == 16 || start == 25) {
start += 4;
} else if(start == 34) {
break;
}
}
inv.setItem(49, new ItemBuilder(Material.BOOK_AND_QUILL).setName("§aMenu princiapl").toItemStack());
if(page > 1) inv.setItem(48, new ItemBuilder(Material.ARROW).setName("§7Voltar").toItemStack());
if(page * 15 - 15 > quests.size()) inv.setItem(48, new ItemBuilder(Material.ARROW).setName("§7Próxima página").toItemStack());
p.openInventory(inv);
}
public void load() {
FileConfiguration config = SrEmpregos.getInstance().getConfig();
guiName = config.getString("Empregos-Gui.Nome").replace("&", "§");
selectJob = config.getString("Empregos-Gui.Seleionar-Emprego").replace("&", "§");
selectedJob = config.getString("Empregos-Gui.Emprego-Selecionado").replace("&", "§");
miner = getItemFromConfig(config, "Empregos-Gui.Minerador", JobType.MINER);
farmer = getItemFromConfig(config, "Empregos-Gui.Fazendeiro", JobType.FARMER);
fisher = getItemFromConfig(config, "Empregos-Gui.Pescador", JobType.FISHER);
hunter = getItemFromConfig(config, "Empregos-Gui.Cacador", JobType.HUNTER);
killer = getItemFromConfig(config, "Empregos-Gui.Assassino", JobType.KILLER);
lumber = getItemFromConfig(config, "Empregos-Gui.Lenhador", JobType.LUMBERJACK);
digger = getItemFromConfig(config, "Empregos-Gui.Escavador", JobType.DIGGER);
itemConfirm = getItemFromConfig(config, "Item-Confirmar", null);
itemCancel = getItemFromConfig(config, "Item-Cancelar", null);
quitJob = getItemFromConfig(config, "Item-Pedir-As-Contas", null);
quests = getItemFromConfig(config, "Item-Conquistas", null);
jobStatus = config.getString("Empregos-Gui.Sem-Emprego").replace("&", "§");
itemInfoName = config.getString("Item-Info.Nome").replace("&", "§");
itemInfoLore = config.getStringList("Item-Info.Lore").stream().map(m -> m.replace("&", "§")).collect(Collectors.toList());
type.put(JobType.MINER, config.getString("Item-Quest.Tipos.Minerador"));
type.put(JobType.KILLER, config.getString("Item-Quest.Tipos.Assassino"));
type.put(JobType.FISHER, config.getString("Item-Quest.Tipos.Pescador"));
type.put(JobType.FARMER, config.getString("Item-Quest.Tipos.Fazendeiro"));
type.put(JobType.LUMBERJACK, config.getString("Item-Quest.Tipos.Lenhador"));
type.put(JobType.DIGGER, config.getString("Item-Quest.Tipos.Escavador"));
type.put(JobType.HUNTER, config.getString("Item-Quest.Tipos.Cacador"));
questName = config.getString("Item-Quest.Nome").replace("&", "§");
questLore = config.getStringList("Item-Quest.Lore").stream().map(m -> m.replace("&", "§")).collect(Collectors.toList());
}
private String getAction(JobType job, int type) {
String[] value = this.type.get(job).split("-");
if(value.length >= 2) {
return type == 1 ? value[0] : value[1];
}
return "";
}
private ItemStack getJobItem(ItemStack item, JobType job, JobType playerJob) {
String toAdd = job.equals(playerJob) ? selectedJob : selectJob;
List<String> lore = item.getItemMeta().getLore();
lore.add(toAdd);
ItemStack toReturn = new ItemBuilder(item.clone()).setLore(lore).toItemStack();
if(job.equals(playerJob)) {
toReturn = GlowAPI.addGlow(toReturn);
}
return toReturn;
}
private ItemStack getItemFromConfig(FileConfiguration config, String node, JobType job) {
ItemStack items = config.getBoolean( node + ".Skull.Ativado") ?
SkullAPI.getByUrl(config.getString(node + ".Skull.Url")) :
getItemDeserializer(config.getString(node + ".ID-Data"));
if(items != null) {
ItemBuilder ib = new ItemBuilder(items);
ib.setName(changeValues(job, config.getString(node + ".Nome").replace("&", "§")));
ib.setLore(config.getStringList(node + ".Lore").stream().map(s -> changeValues(job, s.replace("&", "§"))).collect(Collectors.toList()));
return ib.toItemStack();
}
return new ItemStack(Material.BARRIER);
}
@SuppressWarnings("deprecation")
private ItemStack getItemDeserializer(String serialized) {
String[] item = serialized.split(":");
int id = 0, data = 0;
try {
id = Integer.parseInt(item[0]);
if(item.length == 2) {
data = Integer.parseInt(item[1]);
}
} catch (NumberFormatException ignored) {}
return new ItemStack(Material.getMaterial(id), 1, (short) data);
}
private String changePlayerValues(Player p, String msg) {
EmployeeManager employee = SrEmpregos.getEmployeeManager();
JobManager manager = SrEmpregos.getJobManager();
String meta = employee.hasJob(p.getName()) ? "" + manager.getJobMeta(employee.getEmployeeJob(p.getName())) : "0";
String job = employee.hasJob(p.getName()) ? manager.getJobName(employee.getEmployeeJob(p.getName())) : jobStatus;
return msg
.replace("@quests", "" + employee.getEmployeeQuests(p.getName()).size())
.replace("@salario", Utils.getNumberFormatted(employee.getEmployeeSalary(p.getName()).doubleValue()))
.replace("@total", "" + employee.getEmployeeMeta(p.getName()))
.replace("@meta", meta)
.replace("@current", "" + employee.getEmployeeCurrentMeta(p.getName()))
.replace("@tag", manager.getJobTag(employee.getEmployeeJob(p.getName())).replace("&", "§"))
.replace("@emprego", job.replace("&", "§"))
.replace("@player", p.getName());
}
private String changeQuestValues(JobType job, Quest q, String msg) {
return msg
.replace("@tipo2", getAction(job, 2))
.replace("@tipo1", getAction(job, 1))
.replace("@quantia", "" + q.getMeta())
.replace("@emprego", JobType.getName(job.name()))
.replace("&", "§");
}
private String changeValues(JobType job, String msg) {
if(job == null) return msg;
JobManager manager = SrEmpregos.getJobManager();
return msg
.replace("@emprego", JobType.getName(job.name()).replace("&", "§"))
.replace("@tag", manager.getJobTag(job).replace("&", "§"))
.replace("@meta", "" + manager.getJobMeta(job))
.replace("@salario", Utils.getNumberFormatted(manager.getJobSalary(job).doubleValue()))
.replace("@quests", "" + manager.getJobQuests(job).size());
}
}
package br.com.blecaute.empregos.manager;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.jobs.Job;
import br.com.blecaute.empregos.objects.Quest;
import br.com.blecaute.empregos.utils.FileUtils;
import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.EntityType;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
public class JobManager {
private HashMap<JobType, List<Material>> validWMaterials = new HashMap<>();
private HashMap<JobType, List<EntityType>> validEntity = new HashMap<>();
public JobManager() {
List<Material> miner = checkMaterials(FileUtils.getConfiguration(FileUtils.getFile("minerador", "empregos")));
List<Material> digger = checkMaterials(FileUtils.getConfiguration(FileUtils.getFile("escavador", "empregos")));
List<Material> lumber = checkMaterials(FileUtils.getConfiguration(FileUtils.getFile("lenhador", "empregos")));
List<Material> farmer = checkMaterials(FileUtils.getConfiguration(FileUtils.getFile("fazendeiro", "empregos")));
List<Material> fisher = checkMaterials(FileUtils.getConfiguration(FileUtils.getFile("pescador", "empregos")));
validWMaterials.put(JobType.MINER, miner);
validWMaterials.put(JobType.DIGGER, digger);
validWMaterials.put(JobType.LUMBERJACK, lumber);
validWMaterials.put(JobType.FARMER, farmer);
validWMaterials.put(JobType.FISHER, fisher);
List<EntityType> killer = checkEntity(FileUtils.getConfiguration(FileUtils.getFile("assassino", "empregos")));
List<EntityType> hunter = checkEntity(FileUtils.getConfiguration(FileUtils.getFile("cacador", "empregos")));
validEntity.put(JobType.KILLER, killer);
validEntity.put(JobType.HUNTER, hunter);
}
public String getJobName(JobType job) {
return SrEmpregos.getJobs().stream().filter(f -> f.getType().equals(job)).map(Job::getName).findFirst().orElse("invalid");
}
public String getJobTag(JobType job) {
return SrEmpregos.getJobs().stream().filter(f -> f.getType().equals(job)).map(Job::getTag).findFirst().orElse("");
}
public BigDecimal getJobSalary(JobType job) {
return SrEmpregos.getJobs().stream().filter(f -> f.getType().equals(job)).map(Job::getSalary).findFirst().orElse(new BigDecimal("0"));
}
public Integer getJobMeta(JobType job) {
return SrEmpregos.getJobs().stream().filter(f -> f.getType().equals(job)).map(Job::getMeta).findFirst().orElse(0);
}
public List<String> getJobWorlds(JobType job) {
return SrEmpregos.getJobs().stream().filter(f -> f.getType().equals(job)).map(Job::getWorlds).findFirst().orElse(new ArrayList<>());
}
public List<Quest> getJobQuests(JobType job) {
return SrEmpregos.getJobs().stream().filter(f -> f.getType().equals(job)).map(Job::getQuests).findFirst().orElse(new ArrayList<>());
}
public Boolean isValidJobWorld(JobType job, String world) {
return this.getJobWorlds(job).stream().anyMatch(w -> w.equalsIgnoreCase(world));
}
public Boolean isValidJobMaterial(JobType job, Material m) {
return validWMaterials.containsKey(job) && validWMaterials.get(job).contains(m);
}
public Boolean isValidJobEntity(JobType job, EntityType entity) {
return validEntity.containsKey(job) && validEntity.get(job).contains(entity);
}
private List<Material> checkMaterials(FileConfiguration config) {
return config.getStringList("Validos").stream().filter(f -> {
try {
Material.valueOf(f.toUpperCase());
return true;
} catch (IllegalArgumentException e) {
SrEmpregos.info("§cO material " + f + " não é um material válido!");
return false;
}
}).map(e -> Material.valueOf(e.toUpperCase())).collect(Collectors.toList());
}
private List<EntityType> checkEntity(FileConfiguration config) {
return config.getStringList("Validos").stream().filter(f -> {
try {
EntityType.valueOf(f);
return true;
} catch (IllegalArgumentException e) {
SrEmpregos.info("§cA entidade " + f + " não é uma entidade válida!");
return false;
}
}).map(m -> EntityType.valueOf(m.toUpperCase())).collect(Collectors.toList());
}
}
package br.com.blecaute.empregos.manager;
import br.com.blecaute.empregos.SrEmpregos;
import org.bukkit.configuration.file.FileConfiguration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
public class MessagesManager {
private static HashMap<String, String> map = new HashMap<>();
private static HashMap<String, List<String>> list = new HashMap<>();
public MessagesManager() {
load();
}
public void load() {
FileConfiguration config = SrEmpregos.getInstance().getConfig();
map.put("sem.emprego", config.getString("Mensagens.Sem-Emprego"));
map.put("com.emprego", config.getString("Mensagens.Com-Emprego"));
map.put("contratado", config.getString("Mensagens.Foi-Contratado"));
map.put("demissao", config.getString("Mensagens.Pediu-Demissao"));
list.put("pagamento", config.getStringList("Mensagens.Recebeu-Pagamento"));
}
public String getMessage(String key) {
return map.getOrDefault(key, "").replace("&", "§");
}
public List<String> getMessageList(String key) {
return list.getOrDefault(key, new ArrayList<>()).stream().map(m -> m.replace("&", "§")).collect(Collectors.toList());
}
}
package br.com.blecaute.empregos.manager;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Employee;
import br.com.blecaute.empregos.utils.JobUtils;
import com.google.common.collect.ImmutableList;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.ForkJoinPool;
public class SQLManager {
private final String table = "`SrEmpregos`";
private final Executor executor = ForkJoinPool.commonPool();
public void createTable(String table, String column) {
try (Connection c = SrEmpregos.getDb().getConnection()) {
c.createStatement().execute("CREATE TABLE IF NOT EXISTS " + table + " (" + column + ")");
} catch (SQLException e) {
SrEmpregos.info("§cOcorreu um erro ao tentar criar a tabela do plugin (" + e.getMessage() + ")");
}
}
public List<Employee> getEmployees() {
List<Employee> list = new ArrayList<>();
try (Connection c = SrEmpregos.getDb().getConnection()) {
try(ResultSet rs = c.createStatement().executeQuery("SELECT * FROM " + table)) {
while(rs.next()) {
String name = rs.getString("name");
JobType job;
try {
job = JobType.valueOf(rs.getString("job"));
} catch (IllegalArgumentException e) {
SrEmpregos.info("§cNão foi possível carregar os dados do jogador " + name);
continue;
}
BigDecimal balance = new BigDecimal(rs.getString("salary"));
int current = rs.getInt("current");
int meta = rs.getInt("total");
List<String> quests = JobUtils.deserializeQuests(rs.getString("quests"));
list.add(new Employee(name, job, balance, current, meta, quests));
}
}
} catch (SQLException e) {
SrEmpregos.info("§cOcorreu um erro ao tentar puxar os dados dos jogadores (" + e.getMessage() + ")");
}
return list;
}
public void saveEmployees() {
ImmutableList<Employee> employees = ImmutableList.copyOf(SrEmpregos.getEmployees());
try (Connection c = SrEmpregos.getDb().getConnection()) {
for(Employee employee : employees) {
try(PreparedStatement ps = c.prepareStatement("SELECT * FROM " + table + " WHERE `name` = ?")) {
ps.setString(1, employee.getName());
try(ResultSet rs = ps.executeQuery()) {
if(rs.next()) {
try(PreparedStatement ps1 = c.prepareStatement("UPDATE " + table + " SET `job` = ?, `salary` = ?, `current` = ?, `total` = ?, `quests` = ? WHERE `name` = ?")) {
ps1.setString(1, employee.getJob().name());
ps1.setString(2, employee.getSalary().toPlainString());
ps1.setInt(3, employee.getCurrentMeta());
ps1.setInt(4, employee.getCompletedMeta());
ps1.setString(5, JobUtils.serializeQuests(employee.getQuestsComplete()));
ps1.setString(6, employee.getName());
ps1.executeUpdate();
}
} else {
try(PreparedStatement ps2 = c.prepareStatement("INSERT INTO " + table + " (`name`, `job`, `salary`, `current`, `total`, `quests`) VALUES (?,?,?,?,?,?)")) {
ps2.setString(1, employee.getName());
ps2.setString(2, employee.getJob().name());
ps2.setString(3, employee.getSalary().toPlainString());
ps2.setInt(4, employee.getCurrentMeta());
ps2.setInt(5, employee.getCompletedMeta());
ps2.setString(6, JobUtils.serializeQuests(employee.getQuestsComplete()));
ps2.executeUpdate();
}
}
}
}
}
} catch (SQLException e) {
SrEmpregos.info("§cOcorreu um erro ao tentar salvar os dados dos jogadores (" + e.getMessage() + ")");
}
}
public void deleteEmployee(Employee employee) {
CompletableFuture.runAsync(() -> {
try (Connection c = SrEmpregos.getDb().getConnection()) {
try(PreparedStatement ps = c.prepareStatement("DELETE FROM " + table + " WHERE `name` = ?")) {
ps.setString(1, employee.getName());
ps.executeUpdate();
}
} catch (SQLException e) {
SrEmpregos.info("§cOcorreu um erro ao tentar deletar os dados do jogador " + employee.getName() + " (" + e.getMessage() + ")");
}
}, executor);
}
}
package br.com.blecaute.empregos.objects;
import br.com.blecaute.empregos.enums.JobType;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class Employee {
@Getter private String name;
@Getter @Setter private JobType job;
@Getter @Setter private BigDecimal salary;
@Getter @Setter private Integer currentMeta = 0;
@Getter @Setter private Integer completedMeta = 0;
@Getter @Setter private List<String> questsComplete = new ArrayList<>();
public Employee(String name, JobType job, BigDecimal salary) {
this.name = name;
this.job = job;
this.salary = salary;
}
public Employee(String name, JobType job, BigDecimal salary, Integer currentMeta, Integer completedMeta, List<String> quests) {
this.name = name;
this.job = job;
this.salary = salary;
this.currentMeta = currentMeta;
this.completedMeta = completedMeta;
this.questsComplete = quests;
}
public void addSalary(BigDecimal value) {
this.salary = this.salary.add(value);
}
public void removeSalary(BigDecimal value) {
this.salary = this.salary.subtract(value);
}
}
package br.com.blecaute.empregos.objects;
import br.com.blecaute.empregos.enums.GuiType;
import br.com.blecaute.empregos.enums.JobType;
import lombok.Getter;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
public class GuiHolder implements InventoryHolder {
@Getter private GuiType type;
@Getter private int page;
@Getter private JobType job;
public GuiHolder(GuiType type) {
this.type = type;
}
public GuiHolder(GuiType type, int page, JobType job) {
this.type = type;
this.page = page;
this.job = job;
}
@Override
public Inventory getInventory() {
return null;
}
}
package br.com.blecaute.empregos.objects;
import br.com.blecaute.empregos.enums.JobType;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.List;
@AllArgsConstructor
public class Quest {
@Getter private String id;
@Getter private JobType job;
@Getter @Setter private BigDecimal salary;
@Getter @Setter private Integer meta;
@Getter private Boolean increaseSalary;
@Getter @Setter private List<String> messageComplete;
@Getter @Setter private List<String> commands;
}
package br.com.blecaute.empregos;
import br.com.blecaute.empregos.apis.GlowAPI;
import br.com.blecaute.empregos.apis.SkullAPI;
import br.com.blecaute.empregos.database.Database;
import br.com.blecaute.empregos.database.MySQL;
import br.com.blecaute.empregos.database.SQLite;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.hooks.LegendHook;
import br.com.blecaute.empregos.hooks.MvdwHook;
import br.com.blecaute.empregos.hooks.PlaceholderHook;
import br.com.blecaute.empregos.jobs.*;
import br.com.blecaute.empregos.listeners.BreakEvent;
import br.com.blecaute.empregos.listeners.ClickEvent;
import br.com.blecaute.empregos.listeners.EntityEvent;
import br.com.blecaute.empregos.listeners.FishEvent;
import br.com.blecaute.empregos.manager.*;
import br.com.blecaute.empregos.objects.Employee;
import br.com.blecaute.empregos.objects.Quest;
import br.com.blecaute.empregos.utils.FileUtils;
import br.com.blecaute.empregos.utils.ReflectionUtils;
import lombok.Getter;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class SrEmpregos extends JavaPlugin {
@Getter private static SrEmpregos instance;
@Getter private static Economy economy;
@Getter private static Database db;
@Getter private static MessagesManager messagesManager;
@Getter private static GuiManager guiManager;
@Getter private static JobManager jobManager;
@Getter private static EmployeeManager employeeManager;
@Getter private static SQLManager sqlManager;
@Getter private static List<Job> jobs = new ArrayList<>();
@Getter private static List<Employee> employees = new ArrayList<>();
@Override
public void onEnable() {
instance = this;
saveDefaultConfig();
loadFiles();
if(setupEconomy()) {
loadDatabase();
loadAPIs();
loadJobs();
loadHooks();
loadManagers();
registerEvents();
registerCommands();
Bukkit.getConsoleSender().sendMessage("");
Bukkit.getConsoleSender().sendMessage("§b _____ ");
Bukkit.getConsoleSender().sendMessage("§b| __|___ ");
Bukkit.getConsoleSender().sendMessage("§b|__ | _| §fSrEmpregos");
Bukkit.getConsoleSender().sendMessage("§b|_____|_| §fSrBlecaute#3731");
Bukkit.getConsoleSender().sendMessage("");
Bukkit.getConsoleSender().sendMessage("");
Bukkit.getScheduler().runTaskTimerAsynchronously(this, sqlManager::saveEmployees, 20 * 60, 10 * 20 * 60);
} else {
info("§cNão foi possível se conectar com o Vault. Certifique-se que você");
info("§ctenha o vault e um plugin de economia instalados em seu servidor.");
Bukkit.getPluginManager().disablePlugin(this);
}
}
@Override
public void onDisable() {
sqlManager.saveEmployees();
db.close();
}
public static void info(String msg) {
Bukkit.getConsoleSender().sendMessage("[SrEmpregos] " + msg);
}
private void loadDatabase() {
FileConfiguration config = SrEmpregos.getInstance().getConfig();
if(config.getBoolean("MySQL.ativado")) {
String host = config.getString("MySQL.host");
String port = config.getString("MySQL.porta");
String database = config.getString("MySQL.database");
String user = config.getString("MySQL.usuario");
String password = config.getString("MySQL.senha");
db = new MySQL(host, port, database, user, password);
} else {
db = new SQLite();
}
sqlManager = new SQLManager();
sqlManager.createTable("`SrEmpregos`", "`name` VARCHAR(36) NOT NULL, `job` TEXT NOT NULL, `salary` TEXT NOT NULL, `current` INTEGER NOT NULL, `total` INTEGER NOT NULL, `quests` TEXT, PRIMARY KEY (`name`)");
employees = sqlManager.getEmployees();
}
private void loadAPIs() {
GlowAPI.load();
SkullAPI.load();
}
private boolean setupEconomy() {
if (Bukkit.getServer().getPluginManager().getPlugin("Vault") == null) return false;
RegisteredServiceProvider<Economy> rsp = Bukkit.getServer().getServicesManager().getRegistration(Economy.class);
if (rsp == null) return false;
economy = rsp.getProvider();
return economy != null;
}
private void loadManagers() {
messagesManager = new MessagesManager();
jobManager = new JobManager();
employeeManager = new EmployeeManager();
guiManager = new GuiManager();
}
private void loadHooks() {
PluginManager pluginManager = Bukkit.getPluginManager();
if(pluginManager.getPlugin("Legendchat") != null) {
new LegendHook();
}
if(pluginManager.getPlugin("PlaceholderAPI") != null) {
new PlaceholderHook().register();
}
if(pluginManager.getPlugin("MVdWPlaceholderAPI") != null) {
new MvdwHook().register();
}
}
private void registerEvents() {
PluginManager pluginManager = Bukkit.getPluginManager();
pluginManager.registerEvents(new BreakEvent(), getInstance());
pluginManager.registerEvents(new ClickEvent(), getInstance());
pluginManager.registerEvents(new EntityEvent(), getInstance());
pluginManager.registerEvents(new FishEvent(), getInstance());
}
private void registerCommands() {
getCommand("emprego").setExecutor(new JobCmd());
}
private void loadFiles() {
FileUtils.createFolder("empregos");
FileUtils.createConfig("assassino", "empregos");
FileUtils.createConfig("cacador", "empregos");
FileUtils.createConfig("escavador", "empregos");
FileUtils.createConfig("fazendeiro", "empregos");
FileUtils.createConfig("lenhador", "empregos");
FileUtils.createConfig("minerador", "empregos");
FileUtils.createConfig("pescador", "empregos");
}
private void loadJobs() {
jobs.add(loadJob("assassino", JobType.KILLER));
jobs.add(loadJob("cacador", JobType.HUNTER));
jobs.add(loadJob("escavador", JobType.DIGGER));
jobs.add(loadJob("fazendeiro", JobType.FARMER));
jobs.add(loadJob("lenhador", JobType.LUMBERJACK));
jobs.add(loadJob("minerador", JobType.MINER));
jobs.add(loadJob("pescador", JobType.FISHER));
}
private Job loadJob(String file, JobType job) {
FileConfiguration config = FileUtils.getConfiguration(FileUtils.getFile(file, "empregos"));
String name = config.getString("Nome").replace("&", "§");
String tag = config.getString("Tag").replace("&", "§");
int meta = config.getInt("Meta");
BigDecimal salary = new BigDecimal("" + config.getDouble("Salario"));
List<String> worlds = config.getStringList("Mundos");
List<Quest> quests = new ArrayList<>();
for(String section : config.getConfigurationSection("Quests").getKeys(false)) {
boolean increaseSalary = config.getBoolean("Quests." + section + ".Aumentar-Salario.ativado");
BigDecimal questSalary = new BigDecimal("" + config.getDouble("Quests." + section + ".Aumentar-Salario.valor"));
int questMeta = config.getInt("Quests." + section + ".Meta");
List<String> msg = config.getStringList("Quests." + section + ".Mensagem-Completou-Quest").stream().map(m -> m.replace("&", "§")).collect(Collectors.toList());
List<String> cmd = config.getStringList("Quests." + section + ".Comandos");
quests.add(new Quest(section, job, questSalary, questMeta, increaseSalary, msg, cmd));
}
switch (job) {
case MINER:
return new Miner(name, tag, salary, meta, worlds, quests);
case FARMER:
return new Farmer(name, tag, salary, meta, worlds, quests);
case DIGGER:
return new Digger(name, tag, salary, meta, worlds, quests);
case FISHER:
return new Fisher(name, tag, salary, meta, worlds, quests);
case HUNTER:
return new Hunter(name, tag, salary, meta, worlds, quests);
case KILLER:
return new Killer(name, tag, salary, meta, worlds, quests);
case LUMBERJACK:
return new Lumberjack(name, tag, salary, meta, worlds, quests);
default:
break;
}
return null;
}
}
package br.com.blecaute.empregos.utils;
import br.com.blecaute.empregos.SrEmpregos;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
public class FileUtils {
public static void createConfig(String file, String folder) {
if (!new File(SrEmpregos.getInstance().getDataFolder() + File.separator + folder, file + ".yml").exists()) {
SrEmpregos.getInstance().saveResource(folder + File.separator + file + ".yml", false);
}
}
@SuppressWarnings("ResultOfMethodCallIgnored")
public static void createFolder(String folder) {
try {
File pasta = new File(SrEmpregos.getInstance().getDataFolder() + File.separator + folder);
if (!pasta.exists()) {
pasta.mkdirs();
}
} catch (Throwable e) {
e.printStackTrace();
}
}
public static File getFile(String file, String folder) {
return new File(SrEmpregos.getInstance().getDataFolder() + File.separator + folder, file + ".yml");
}
public static FileConfiguration getConfiguration(File file) {
return YamlConfiguration.loadConfiguration(file);
}
}
package br.com.blecaute.empregos.utils;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.List;
public class ItemBuilder {
private ItemStack is;
public ItemBuilder(Material Material) {
this(Material, 1);
}
public ItemBuilder(ItemStack ItemStack) {
this.is = ItemStack;
}
public ItemBuilder(Material Material, int Int) {
this.is = new ItemStack(Material, Int);
}
public ItemBuilder setName(String String) {
ItemMeta localItemMeta = this.is.getItemMeta();
localItemMeta.setDisplayName(String);
this.is.setItemMeta(localItemMeta);
return this;
}
public ItemBuilder setLore(List<String> List) {
ItemMeta localItemMeta = this.is.getItemMeta();
localItemMeta.setLore(List);
this.is.setItemMeta(localItemMeta);
return this;
}
public ItemStack toItemStack() {
return this.is;
}
}
package br.com.blecaute.empregos.utils;
import br.com.blecaute.empregos.SrEmpregos;
import br.com.blecaute.empregos.apis.events.JobGetPaymentEvent;
import br.com.blecaute.empregos.apis.events.JobQuestCompleteEvent;
import br.com.blecaute.empregos.enums.JobType;
import br.com.blecaute.empregos.objects.Employee;
import org.bukkit.Bukkit;
import org.bukkit.CropState;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.material.Crops;
import org.bukkit.material.MaterialData;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class JobUtils {
@SuppressWarnings("deprecation")
public static void executeEvents(Player p, Employee employee, JobType job) {
SrEmpregos.getJobManager().getJobQuests(job).stream().filter(f -> !SrEmpregos.getEmployeeManager().isCompleted(p.getName(), f)).forEach(q -> {
if(employee.getCompletedMeta() >= q.getMeta()) {
JobQuestCompleteEvent event = new JobQuestCompleteEvent(p, q, employee);
Bukkit.getPluginManager().callEvent(event);
if(!event.isCancelled()) {
if(event.getQuest().getIncreaseSalary()) {
employee.addSalary(event.getQuest().getSalary());
}
if(event.getQuest().getMessageComplete() != null) {
event.getQuest().getMessageComplete().stream().map(m -> m.replace("@player", p.getName()))
.forEach(p::sendMessage);
}
if(event.getQuest().getCommands() != null) {
event.getQuest().getCommands().stream()
.map(m -> m.replace("@player", p.getName()))
.forEach(cmd -> Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd));
}
employee.getQuestsComplete().add(q.getId());
}
}
});
int jobMeta = SrEmpregos.getJobManager().getJobMeta(job);
if(employee.getCurrentMeta() >= jobMeta) {
JobGetPaymentEvent event = new JobGetPaymentEvent(p, employee, job);
Bukkit.getPluginManager().callEvent(event);
SrEmpregos.getEconomy().depositPlayer(p.getName(), event.getEmployee().getSalary().doubleValue());
employee.setCurrentMeta(0);
p.playSound(p.getLocation(), Sound.ITEM_PICKUP, 5, 1.0F);
SrEmpregos.getMessagesManager().getMessageList("pagamento").stream()
.map(m -> m.replace("@salario", Utils.getNumberFormatted(event.getEmployee().getSalary().doubleValue())))
.forEach(p::sendMessage);
}
}
public static String serializeQuests(List<String> quests) {
if(quests.isEmpty()) return "[]";
StringBuilder sb = new StringBuilder();
for(int i = 0; i < quests.size(); i++) {
sb.append(quests.get(i));
if(i + 1 < quests.size()) {
sb.append(";");
}
}
return sb.toString();
}
public static List<String> deserializeQuests(String serialized) {
List<String> list = new ArrayList<>();
if(serialized.equals("[]")) return list;
Collections.addAll(list, serialized.split(";"));
return list;
}
public static boolean isGrown(Block block) {
MaterialData m = block.getState().getData();
if(m instanceof Crops) {
Crops crops = (Crops) m;
return crops.getState().equals(CropState.RIPE);
}
return false;
}
}
package br.com.blecaute.empregos.utils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* @author Mior
* @version 1.0
*/
public class ReflectionUtils {
private static final String version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
public static Class<?> getNMSClass(String name) throws ClassNotFoundException {
return Class.forName("net.minecraft.server." + version + "." + name);
}
public static Class<?> getOBClass(String name) throws ClassNotFoundException {
return Class.forName("org.bukkit.craftbukkit." + version + "." + name);
}
}
package br.com.blecaute.empregos.utils;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Arrays;
import java.util.Locale;
public class Utils {
private static DecimalFormat decimal = new DecimalFormat("#.##", new DecimalFormatSymbols(new Locale("pt", "br")));
public static void sendSound(Player p, String sound) {
Arrays.stream(Sound.values()).filter(f -> f.name().equalsIgnoreCase(sound)).forEach(e -> p.playSound(p.getLocation(), e, 5, 1.0F));
}
public static String getNumberFormatted(double number) {
return decimal.format(number);
}
public static String getProgressBar(int current, int total, String bar, int barAmount, String barCompletedColor, String barIncompleteColor) {
float percent = (float) current / total;
if(percent > 1) percent = 1;
int bars1 = Math.round(barAmount * percent);
int bars2 = barAmount - bars1;
return barCompletedColor + StringUtils.repeat(bar, bars1) + barIncompleteColor + StringUtils.repeat(bar, bars2);
}
}
# _________ ____ _ ___ __ ____ __ __ ______ ___
# / ___/ \| \| | / _] / ]/ | | | | / _]
# ( \_| D ) o ) | / [_ / /| o | | | |/ [_
# \__ | /| | |___| _]/ / | | | |_| |_| _]
# / \ | \| O | | [_/ \_| _ | : | | | | [_
# \ | . \ | | \ | | | | | | | |
# \___|__|\_|_____|_____|_____|\____|__|__|\__,_| |__| |_____|
# plugin de empregos Versão: 1.0-SNAPSHOT
# =========================
# MySQL
# caso desativado irá usar sqlite como forma de armazenamento.
MySQL:
ativado: false
host: 'localhost'
porta: '3306'
database: ''
usuario: ''
senha: ''
#
# Placeholders do plugins. Integração ao PlaceholderAPI e ao MVdWPlaceholderAPI
#
# {empregos_player_emprego} : nome do emprego do jogador
# {empregos_player_meta_total} : total de ações efetuadas (quebrar, cortar, pescar etc)
# {empregos_player_current} : total de ações efetuadas para receber o salário
# {empregos_player_quests} : quantidade de quests concluidas
# {empregos_player_salary} : salário atual do jogador
# {empregos_player_progress} : progresso numérico para receber osalário
# {empregos_player_progress_bar} : barra de progresso para receber o salário
#
# OBS: caso use PlaceholderAPi use % no lugar dos {}
#
# Sons do sistema, mais sons em -> https://github.com/Attano/Spigot-1.8/blob/master/org/bukkit/Sound.java
Sons:
Erro: 'NOTE_BASS'
Geral: 'ITEM_PICKUP'
Sucesso: 'NOTE_PLING'
# mensagens do plugin
Mensagens:
Sem-Emprego: '&cVocê não tem nenhum emprego para poder fazer isso!'
Com-Emprego: '&cVocê já tem um emprego! peça demissão para exercer este cargo'
Foi-Contratado: '&aVocê foi contratado para o emprego de @emprego'
Pediu-Demissao: '&cVocê pediu demissão do seu emprego ;('
Recebeu-Pagamento:
- ''
- ' &eEmprego: &7você recebeu seu salário de &2R$ &f@salario'
- ''
Preferencias:
# tag do emprego no legendchat {empregos}
Chat-Tag: true
# nome do emprego da placeholder caso o jogador não tenha nenhum
Placeholder:
Desempregado: '&cSem emprego'
# barra de progresso
Barra-De-Progress:
# símbolo da barra
Barra: '|'
# quatidade de barras
Quantidade: 10
# cor da barra completa
Cor-Completa: '&a'
# cor da barra imcompleta
Cor-Imcompleta: '&7'
# primeiro simbolo da barra
Primeiro: '&8['
# último símbolo da barra
Ultimo: '&8]'
Empregos-Gui:
# nome da gui de empregos
Nome: '&8Empregos'
# ficará na lore do item
Sem-Emprego: '&cDesempregado'
Seleionar-Emprego: '&aClique para selecionar esse emprego'
Emprego-Selecionado: '&cVocê já está nesse emprego'
# @emprego : nome do emprego
# @tag : tag do emprego
# @meta : meta para receer o salário
# @salario : salário do emprego
# @quests : número de quests
Minerador:
# se ativado ele irá ignorar o item
Skull:
Ativado: false
Url: ''
# id do item no formato id:data
ID-Data: '278:0'
# nome do item
Nome: '&eMinerador'
# lore do item
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &cminerar @meta blocos'
- '&7Quests: &e@quests'
- ''
Escavador:
Skull:
Ativado: false
Url: ''
ID-Data: '277:0'
Nome: '&eEscavador'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &cescavar @meta blocos'
- '&7Quests: &e@quests'
- ''
Lenhador:
Skull:
Ativado: false
Url: ''
ID-Data: '279:0'
Nome: '&eLenhador'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &ccortar @meta madeiras'
- '&7Quests: &e@quests'
- ''
Fazendeiro:
Skull:
Ativado: false
Url: ''
ID-Data: '293:0'
Nome: '&eFazendeiro'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &ccolher @meta plantas'
- '&7Quests: &e@quests'
- ''
Pescador:
Skull:
Ativado: false
Url: ''
ID-Data: '346:0'
Nome: '&ePescador'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &cpescar @meta peixes'
- '&7Quests: &e@quests'
- ''
Cacador:
Skull:
Ativado: false
Url: ''
ID-Data: '261:0'
Nome: '&eCaçador'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &ccaçar @meta mobs'
- '&7Quests: &e@quests'
- ''
Assassino:
Skull:
Ativado: false
Url: ''
ID-Data: '276:0'
Nome: '&eAssassino'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &cmatar @meta jogadores'
- '&7Quests: &e@quests'
- ''
Item-Confirmar:
Skull:
Ativado: true
Url: 'http://textures.minecraft.net/texture/8d82fcfa5578715c0d248e0aac42ab572e9a826ed3dad9dc66c9926e8473ed'
ID-Data: '35:5'
Nome: '&aConfirmar'
Lore:
- '&7Clique para confirmar'
Item-Cancelar:
Skull:
Ativado: true
Url: 'http://textures.minecraft.net/texture/bc2e972afa9115b6d32075b1f1b7fed7aa29a5341c1024288361abe8e69b46'
ID-Data: '35:14'
Nome: '&cCancelar'
Lore:
- '&7Clique para cancelar'
Item-Pedir-As-Contas:
Skull:
Ativado: false
Url: ''
ID-Data: '395:0'
Nome: '&cPedir Demissão'
Lore:
- '&7Se sair do seu emprego todo o seu'
- '&7progresso conquistado será perdido!'
Item-Conquistas:
Skull:
Ativado: false
Url: ''
ID-Data: '399:0'
Nome: '&aSuas conquistas'
Lore:
- '&7Veja suas conquistas'
#
# @player : nome do jogador
# @emprego : nome do emprego do jogador
# @tag : tag do emprego do jogador
# @current : meta para receber o salário
# @meta : meta para receber o salário
# @total : total de blocos, peixes ou entidades quebradas, pescadas ou mortas.
# @salario : salário do jogador
# @quests : número de quests concluidas.
#
Item-Info:
Nome: '&e@player'
Lore:
- '&7Emprego Atual: &f@emprego'
- '&7Salário Atual: &2R$ &f@salario'
- ''
- '&7Meta: &a@current&7/&c@meta'
- '&7Total: @total'
- '&7Quests concluidas: &e@quests'
# @emprego : nome do emprego da quest
# @tipo1 : ação efetuada
# @tipo2 : tipo de bloco/entidade válida
Item-Quest:
Tipos:
Minerador: 'minerar-minérios'
Lenhador: 'cortar-madeiras'
Fazendeiro: 'plantar-plantas'
Cacador: 'caçar-mobs'
Pescador: 'pescar-peixes'
Assassino: 'assassinar-jogadores'
Escavador: 'escavar-blocos'
Nome: '&aDesafio do emprego @emprego'
Lore:
- '&7O objetivo deste emprego é @tipo1 &e@quantia &7@tipo2'
- ''
# nome do emprego
Nome: 'Assassino'
# tag do emprego
Tag: '&8[&cAssassino&8]'
# meta para obter o salário
Meta: 10
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# entidades efetivas -> https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/EntityType.html
Validos:
- 'PLAYER'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você matou 100 jogadores e completou a quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Caçador'
# tag do emprego
Tag: '&8[&5Caçador&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# entidades efetivas -> https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/EntityType.html
Validos:
- 'BAT'
- 'BLAZE'
- 'CAVE_SPIDER'
- 'CHICKEN'
- 'COW'
- 'CREEPER'
- 'ENDER_DRAGON'
- 'ENDERMAN'
- 'GHAST'
- 'GUARDIAN'
- 'IRON_GOLEM'
- 'MAGMA_CUBE'
- 'MUSHROOM_COW'
- 'PIG'
- 'PIG_ZOMBIE'
- 'ZOMBIE'
- 'SPIDER'
- 'SILVERFISH'
- 'SKELETON'
- 'WITCH'
- 'WITHER'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você matou 100 mobs e completou a quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Escavador'
# tag do emprego
Tag: '&8[&6Escavador&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# blocos efetivos -> https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
Validos:
- 'DIRT'
- 'GRASS'
- 'CLAY'
- 'GRAVEL'
- 'SAND'
- 'SNOW'
- 'SNOW_BLOCK'
- 'SOUL_SAND'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você escavou 100 blocos e completou uma quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Fazendeiro'
# tag do emprego
Tag: '&8[&eFazendeiro&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# blocos efetivos -> https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
Validos:
- 'CROPS'
- 'MELON_BLOCK'
- 'NETHER_WARTS'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você colheu 100 plantas e completou uma quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Lenhador'
# tag do emprego
Tag: '&8[&6Lenhador&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# blocos efetivos -> https://helpch.at/docs/1.8/org/bukkit/Material.html
Validos:
- 'WOOD'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você cortou 100 madeiras e completou uma quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Minerador'
# tag do emprego
Tag: '&8[&bMinerador&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# blocos efetivos -> https://helpch.at/docs/1.8/org/bukkit/Material.html
Validos:
- 'DIAMOND_ORE'
- 'EMERALD_ORE'
- 'REDSTONE_ORE'
- 'GLOWING_REDSTONE_ORE'
- 'IRON_ORE'
- 'GOLD_ORE'
- 'COAL_ORE'
- 'LAPIS_ORE'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você minerou 100 blocos e completou uma quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Minerador'
# tag do emprego
Tag: '&8[&aPescador&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# blocos efetivos -> https://helpch.at/docs/1.8/org/bukkit/Material.html
Validos:
- 'RAW_FISH'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você pescou 100 peixes e completou uma quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
name: SrEmpregos
main: br.com.blecaute.empregos.SrEmpregos
version: 1.0-SNAPSHOT
description: plugin de empregos
depend: [Vault]
softdepend: [MVdWPlaceholderAP, PlaceholderAPI, Legendchat]
author: SrBlecaute
commands:
emprego:
aliases: [empregos, job, jobs, trabalho, trabalhos]
description: comando para visualizar os empregos
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4" />
# _________ ____ _ ___ __ ____ __ __ ______ ___
# / ___/ \| \| | / _] / ]/ | | | | / _]
# ( \_| D ) o ) | / [_ / /| o | | | |/ [_
# \__ | /| | |___| _]/ / | | | |_| |_| _]
# / \ | \| O | | [_/ \_| _ | : | | | | [_
# \ | . \ | | \ | | | | | | | |
# \___|__|\_|_____|_____|_____|\____|__|__|\__,_| |__| |_____|
# plugin de empregos Versão: 1.0-SNAPSHOT
# =========================
# MySQL
# caso desativado irá usar sqlite como forma de armazenamento.
MySQL:
ativado: false
host: 'localhost'
porta: '3306'
database: ''
usuario: ''
senha: ''
#
# Placeholders do plugins. Integração ao PlaceholderAPI e ao MVdWPlaceholderAPI
#
# {empregos_player_emprego} : nome do emprego do jogador
# {empregos_player_meta_total} : total de ações efetuadas (quebrar, cortar, pescar etc)
# {empregos_player_current} : total de ações efetuadas para receber o salário
# {empregos_player_quests} : quantidade de quests concluidas
# {empregos_player_salary} : salário atual do jogador
# {empregos_player_progress} : progresso numérico para receber osalário
# {empregos_player_progress_bar} : barra de progresso para receber o salário
#
# OBS: caso use PlaceholderAPi use % no lugar dos {}
#
# Sons do sistema, mais sons em -> https://github.com/Attano/Spigot-1.8/blob/master/org/bukkit/Sound.java
Sons:
Erro: 'NOTE_BASS'
Geral: 'ITEM_PICKUP'
Sucesso: 'NOTE_PLING'
# mensagens do plugin
Mensagens:
Sem-Emprego: '&cVocê não tem nenhum emprego para poder fazer isso!'
Com-Emprego: '&cVocê já tem um emprego! peça demissão para exercer este cargo'
Foi-Contratado: '&aVocê foi contratado para o emprego de @emprego'
Pediu-Demissao: '&cVocê pediu demissão do seu emprego ;('
Recebeu-Pagamento:
- ''
- ' &eEmprego: &7você recebeu seu salário de &2R$ &f@salario'
- ''
Preferencias:
# tag do emprego no legendchat {empregos}
Chat-Tag: true
# nome do emprego da placeholder caso o jogador não tenha nenhum
Placeholder:
Desempregado: '&cSem emprego'
# barra de progresso
Barra-De-Progress:
# símbolo da barra
Barra: '|'
# quatidade de barras
Quantidade: 10
# cor da barra completa
Cor-Completa: '&a'
# cor da barra imcompleta
Cor-Imcompleta: '&7'
# primeiro simbolo da barra
Primeiro: '&8['
# último símbolo da barra
Ultimo: '&8]'
Empregos-Gui:
# nome da gui de empregos
Nome: '&8Empregos'
# ficará na lore do item
Sem-Emprego: '&cDesempregado'
Seleionar-Emprego: '&aClique para selecionar esse emprego'
Emprego-Selecionado: '&cVocê já está nesse emprego'
# @emprego : nome do emprego
# @tag : tag do emprego
# @meta : meta para receer o salário
# @salario : salário do emprego
# @quests : número de quests
Minerador:
# se ativado ele irá ignorar o item
Skull:
Ativado: false
Url: ''
# id do item no formato id:data
ID-Data: '278:0'
# nome do item
Nome: '&eMinerador'
# lore do item
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &cminerar @meta blocos'
- '&7Quests: &e@quests'
- ''
Escavador:
Skull:
Ativado: false
Url: ''
ID-Data: '277:0'
Nome: '&eEscavador'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &cescavar @meta blocos'
- '&7Quests: &e@quests'
- ''
Lenhador:
Skull:
Ativado: false
Url: ''
ID-Data: '279:0'
Nome: '&eLenhador'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &ccortar @meta madeiras'
- '&7Quests: &e@quests'
- ''
Fazendeiro:
Skull:
Ativado: false
Url: ''
ID-Data: '293:0'
Nome: '&eFazendeiro'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &ccolher @meta plantas'
- '&7Quests: &e@quests'
- ''
Pescador:
Skull:
Ativado: false
Url: ''
ID-Data: '346:0'
Nome: '&ePescador'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &cpescar @meta peixes'
- '&7Quests: &e@quests'
- ''
Cacador:
Skull:
Ativado: false
Url: ''
ID-Data: '261:0'
Nome: '&eCaçador'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &ccaçar @meta mobs'
- '&7Quests: &e@quests'
- ''
Assassino:
Skull:
Ativado: false
Url: ''
ID-Data: '276:0'
Nome: '&eAssassino'
Lore:
- '&7Salário Inicial: &2R$ &f@salario'
- '&7Meta: &cmatar @meta jogadores'
- '&7Quests: &e@quests'
- ''
Item-Confirmar:
Skull:
Ativado: true
Url: 'http://textures.minecraft.net/texture/8d82fcfa5578715c0d248e0aac42ab572e9a826ed3dad9dc66c9926e8473ed'
ID-Data: '35:5'
Nome: '&aConfirmar'
Lore:
- '&7Clique para confirmar'
Item-Cancelar:
Skull:
Ativado: true
Url: 'http://textures.minecraft.net/texture/bc2e972afa9115b6d32075b1f1b7fed7aa29a5341c1024288361abe8e69b46'
ID-Data: '35:14'
Nome: '&cCancelar'
Lore:
- '&7Clique para cancelar'
Item-Pedir-As-Contas:
Skull:
Ativado: false
Url: ''
ID-Data: '395:0'
Nome: '&cPedir Demissão'
Lore:
- '&7Se sair do seu emprego todo o seu'
- '&7progresso conquistado será perdido!'
Item-Conquistas:
Skull:
Ativado: false
Url: ''
ID-Data: '399:0'
Nome: '&aSuas conquistas'
Lore:
- '&7Veja suas conquistas'
#
# @player : nome do jogador
# @emprego : nome do emprego do jogador
# @tag : tag do emprego do jogador
# @current : meta para receber o salário
# @meta : meta para receber o salário
# @total : total de blocos, peixes ou entidades quebradas, pescadas ou mortas.
# @salario : salário do jogador
# @quests : número de quests concluidas.
#
Item-Info:
Nome: '&e@player'
Lore:
- '&7Emprego Atual: &f@emprego'
- '&7Salário Atual: &2R$ &f@salario'
- ''
- '&7Meta: &a@current&7/&c@meta'
- '&7Total: @total'
- '&7Quests concluidas: &e@quests'
# @emprego : nome do emprego da quest
# @tipo1 : ação efetuada
# @tipo2 : tipo de bloco/entidade válida
Item-Quest:
Tipos:
Minerador: 'minerar-minérios'
Lenhador: 'cortar-madeiras'
Fazendeiro: 'plantar-plantas'
Cacador: 'caçar-mobs'
Pescador: 'pescar-peixes'
Assassino: 'assassinar-jogadores'
Escavador: 'escavar-blocos'
Nome: '&aDesafio do emprego @emprego'
Lore:
- '&7O objetivo deste emprego é @tipo1 &e@quantia &7@tipo2'
- ''
# nome do emprego
Nome: 'Assassino'
# tag do emprego
Tag: '&8[&cAssassino&8]'
# meta para obter o salário
Meta: 10
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# entidades efetivas -> https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/EntityType.html
Validos:
- 'PLAYER'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você matou 100 jogadores e completou a quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Caçador'
# tag do emprego
Tag: '&8[&5Caçador&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# entidades efetivas -> https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/EntityType.html
Validos:
- 'BAT'
- 'BLAZE'
- 'CAVE_SPIDER'
- 'CHICKEN'
- 'COW'
- 'CREEPER'
- 'ENDER_DRAGON'
- 'ENDERMAN'
- 'GHAST'
- 'GUARDIAN'
- 'IRON_GOLEM'
- 'MAGMA_CUBE'
- 'MUSHROOM_COW'
- 'PIG'
- 'PIG_ZOMBIE'
- 'ZOMBIE'
- 'SPIDER'
- 'SILVERFISH'
- 'SKELETON'
- 'WITCH'
- 'WITHER'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você matou 100 mobs e completou a quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Escavador'
# tag do emprego
Tag: '&8[&6Escavador&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# blocos efetivos -> https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
Validos:
- 'DIRT'
- 'GRASS'
- 'CLAY'
- 'GRAVEL'
- 'SAND'
- 'SNOW'
- 'SNOW_BLOCK'
- 'SOUL_SAND'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você escavou 100 blocos e completou uma quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Fazendeiro'
# tag do emprego
Tag: '&8[&eFazendeiro&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# blocos efetivos -> https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
Validos:
- 'CROPS'
- 'MELON_BLOCK'
- 'NETHER_WARTS'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você colheu 100 plantas e completou uma quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Lenhador'
# tag do emprego
Tag: '&8[&6Lenhador&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# blocos efetivos -> https://helpch.at/docs/1.8/org/bukkit/Material.html
Validos:
- 'WOOD'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você cortou 100 madeiras e completou uma quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Minerador'
# tag do emprego
Tag: '&8[&bMinerador&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# blocos efetivos -> https://helpch.at/docs/1.8/org/bukkit/Material.html
Validos:
- 'DIAMOND_ORE'
- 'EMERALD_ORE'
- 'REDSTONE_ORE'
- 'GLOWING_REDSTONE_ORE'
- 'IRON_ORE'
- 'GOLD_ORE'
- 'COAL_ORE'
- 'LAPIS_ORE'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você minerou 100 blocos e completou uma quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
# nome do emprego
Nome: 'Minerador'
# tag do emprego
Tag: '&8[&aPescador&8]'
# meta para obter o salário
Meta: 500
# salário do emprego
Salario: 1500
# mundos que serão efetivos
Mundos:
- 'world'
# blocos efetivos -> https://helpch.at/docs/1.8/org/bukkit/Material.html
Validos:
- 'RAW_FISH'
Quests:
1:
Aumentar-Salario:
ativado: true
valor: 500
Meta: 100
Mensagem-Completou-Quest:
- ''
- ' &aParabéns você pescou 100 peixes e completou uma quest'
- ' &aSeu salário foi aumentado em 500 reais'
- ''
Comandos:
- 'give @player diamond_sword 1'
name: SrEmpregos
main: br.com.blecaute.empregos.SrEmpregos
version: 1.0-SNAPSHOT
description: plugin de empregos
depend: [Vault]
softdepend: [MVdWPlaceholderAP, PlaceholderAPI, Legendchat]
author: SrBlecaute
commands:
emprego:
aliases: [empregos, job, jobs, trabalho, trabalhos]
description: comando para visualizar os empregos
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment