mirror of
https://github.com/Zrips/Jobs.git
synced 2025-02-27 09:43:22 +01:00
Added firework shoot when leveling up
- Fixed NPE when entered /jobs playerinfo command, #456
This commit is contained in:
parent
a9155efbc2
commit
3b42627cb8
Binary file not shown.
4
pom.xml
4
pom.xml
@ -23,9 +23,9 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>de.Keyle.MyPet</groupId>
|
<groupId>de.Keyle.MyPet</groupId>
|
||||||
<artifactId>MyPet</artifactId>
|
<artifactId>MyPet</artifactId>
|
||||||
<version>3.1-SNAPSHOT-B1433</version>
|
<version>3.2</version>
|
||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/libs/MyPet-3.1-SNAPSHOT-B1433.jar</systemPath>
|
<systemPath>${basedir}/libs/MyPet-3.2.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- McMMO -->
|
<!-- McMMO -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -998,16 +998,16 @@ public class Jobs extends JavaPlugin {
|
|||||||
|
|
||||||
Boost boost = getPlayerManager().getFinalBonus(jPlayer, noneJob);
|
Boost boost = getPlayerManager().getFinalBonus(jPlayer, noneJob);
|
||||||
|
|
||||||
JobsPrePaymentEvent JobsPrePaymentEvent = new JobsPrePaymentEvent(jPlayer.getPlayer(), noneJob, income, pointAmount);
|
JobsPrePaymentEvent JobsPrePaymentEvent = new JobsPrePaymentEvent(jPlayer.getPlayer(), noneJob, income, pointAmount);
|
||||||
Bukkit.getServer().getPluginManager().callEvent(JobsPrePaymentEvent);
|
Bukkit.getServer().getPluginManager().callEvent(JobsPrePaymentEvent);
|
||||||
// If event is canceled, don't do anything
|
// If event is canceled, don't do anything
|
||||||
if (JobsPrePaymentEvent.isCancelled()) {
|
if (JobsPrePaymentEvent.isCancelled()) {
|
||||||
income = 0D;
|
income = 0D;
|
||||||
pointAmount = 0D;
|
pointAmount = 0D;
|
||||||
} else {
|
} else {
|
||||||
income = JobsPrePaymentEvent.getAmount();
|
income = JobsPrePaymentEvent.getAmount();
|
||||||
pointAmount = JobsPrePaymentEvent.getPoints();
|
pointAmount = JobsPrePaymentEvent.getPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate income
|
// Calculate income
|
||||||
|
|
||||||
@ -1116,12 +1116,12 @@ public class Jobs extends JavaPlugin {
|
|||||||
Bukkit.getServer().getPluginManager().callEvent(JobsPrePaymentEvent);
|
Bukkit.getServer().getPluginManager().callEvent(JobsPrePaymentEvent);
|
||||||
// If event is canceled, don't do anything
|
// If event is canceled, don't do anything
|
||||||
if (JobsPrePaymentEvent.isCancelled()) {
|
if (JobsPrePaymentEvent.isCancelled()) {
|
||||||
income = 0D;
|
income = 0D;
|
||||||
pointAmount = 0D;
|
pointAmount = 0D;
|
||||||
} else {
|
} else {
|
||||||
income = JobsPrePaymentEvent.getAmount();
|
income = JobsPrePaymentEvent.getAmount();
|
||||||
pointAmount = JobsPrePaymentEvent.getPoints();
|
pointAmount = JobsPrePaymentEvent.getPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate income
|
// Calculate income
|
||||||
if (income != 0D) {
|
if (income != 0D) {
|
||||||
|
@ -22,17 +22,24 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.FireworkEffect.Type;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Firework;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.FireworkMeta;
|
||||||
|
|
||||||
import com.gamingmesh.jobs.CMILib.ItemReflection;
|
import com.gamingmesh.jobs.CMILib.ItemReflection;
|
||||||
import com.gamingmesh.jobs.CMILib.VersionChecker.Version;
|
import com.gamingmesh.jobs.CMILib.VersionChecker.Version;
|
||||||
@ -58,6 +65,7 @@ import com.gamingmesh.jobs.economy.PaymentData;
|
|||||||
import com.gamingmesh.jobs.economy.PointsData;
|
import com.gamingmesh.jobs.economy.PointsData;
|
||||||
import com.gamingmesh.jobs.stuff.Debug;
|
import com.gamingmesh.jobs.stuff.Debug;
|
||||||
import com.gamingmesh.jobs.stuff.PerformCommands;
|
import com.gamingmesh.jobs.stuff.PerformCommands;
|
||||||
|
import com.gamingmesh.jobs.stuff.Util;
|
||||||
|
|
||||||
public class PlayerManager {
|
public class PlayerManager {
|
||||||
|
|
||||||
@ -544,6 +552,71 @@ public class PlayerManager {
|
|||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Jobs.getGCManager().FireworkLevelupUse) {
|
||||||
|
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Jobs.getInstance(), new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Firework f = (Firework) player.getWorld().spawn(player.getLocation(), Firework.class);
|
||||||
|
FireworkMeta fm = f.getFireworkMeta();
|
||||||
|
if (Jobs.getGCManager().UseRandom) {
|
||||||
|
Random r = new Random();
|
||||||
|
int rt = r.nextInt(4) + 1;
|
||||||
|
Type type = Type.BALL;
|
||||||
|
if (rt == 1) type = Type.BALL;
|
||||||
|
if (rt == 2) type = Type.BALL_LARGE;
|
||||||
|
if (rt == 3) type = Type.BURST;
|
||||||
|
if (rt == 4) type = Type.CREEPER;
|
||||||
|
if (rt == 5) type = Type.STAR;
|
||||||
|
int r1i = r.nextInt(17) + 1;
|
||||||
|
int r2i = r.nextInt(17) + 1;
|
||||||
|
Color c1 = Util.getColor(r1i);
|
||||||
|
Color c2 = Util.getColor(r2i);
|
||||||
|
FireworkEffect effect = FireworkEffect.builder().flicker(r.nextBoolean()).withColor(c1).withFade(c2).with(type).trail(r.nextBoolean()).build();
|
||||||
|
fm.addEffect(effect);
|
||||||
|
int rp = r.nextInt(2) + 1;
|
||||||
|
fm.setPower(rp);
|
||||||
|
} else {
|
||||||
|
Pattern comma = Pattern.compile(",", 16);
|
||||||
|
List<String> colorStrings = Jobs.getGCManager().FwColors;
|
||||||
|
Color[] colors = new Color[colorStrings.size()];
|
||||||
|
for (int s = 0; s < colorStrings.size(); s++) {
|
||||||
|
String colorString = colorStrings.get(s);
|
||||||
|
String[] sSplit = comma.split(colorString);
|
||||||
|
if (sSplit.length < 3) {
|
||||||
|
Jobs.consoleMsg("[Jobs] &cInvalid color " + colorString + "! Colors must be 3 comma-separated numbers ranging from 0 to 255.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int[] colorRGB = new int[3];
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
String colorInt = sSplit[i];
|
||||||
|
try {
|
||||||
|
colorRGB[i] = Integer.valueOf(colorInt).intValue();
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
Jobs.consoleMsg("[Jobs] &cInvalid color component " + colorInt + ", it must be an integer.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
colors[s] = Color.fromRGB(colorRGB[0], colorRGB[1], colorRGB[2]);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
Jobs.consoleMsg("[Jobs] &cFailed to add color! " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fm.addEffect(FireworkEffect.builder()
|
||||||
|
.flicker(Jobs.getGCManager().UseFlicker)
|
||||||
|
.trail(Jobs.getGCManager().UseTrail)
|
||||||
|
.with(Type.valueOf(Jobs.getGCManager().FireworkType))
|
||||||
|
.withColor(colors)
|
||||||
|
.withFade(colors)
|
||||||
|
.build());
|
||||||
|
fm.setPower(Jobs.getGCManager().FireworkPower);
|
||||||
|
}
|
||||||
|
|
||||||
|
f.setFireworkMeta(fm);
|
||||||
|
}
|
||||||
|
}, Jobs.getGCManager().ShootTime);
|
||||||
|
}
|
||||||
|
|
||||||
String message;
|
String message;
|
||||||
if (Jobs.getGCManager().isBroadcastingLevelups())
|
if (Jobs.getGCManager().isBroadcastingLevelups())
|
||||||
message = Jobs.getLanguage().getMessage("message.levelup.broadcast");
|
message = Jobs.getLanguage().getMessage("message.levelup.broadcast");
|
||||||
|
@ -3,8 +3,6 @@ package com.gamingmesh.jobs.api;
|
|||||||
import com.gamingmesh.jobs.container.Job;
|
import com.gamingmesh.jobs.container.Job;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.Event;
|
|
||||||
import org.bukkit.event.HandlerList;
|
|
||||||
|
|
||||||
public final class JobsPrePaymentEvent extends BaseEvent implements Cancellable {
|
public final class JobsPrePaymentEvent extends BaseEvent implements Cancellable {
|
||||||
private OfflinePlayer offlinePlayer;
|
private OfflinePlayer offlinePlayer;
|
||||||
@ -14,43 +12,43 @@ public final class JobsPrePaymentEvent extends BaseEvent implements Cancellable
|
|||||||
private boolean cancelled = false;
|
private boolean cancelled = false;
|
||||||
|
|
||||||
public JobsPrePaymentEvent(OfflinePlayer offlinePlayer, Job job, double money, double points) {
|
public JobsPrePaymentEvent(OfflinePlayer offlinePlayer, Job job, double money, double points) {
|
||||||
this.job = job;
|
this.job = job;
|
||||||
this.offlinePlayer = offlinePlayer;
|
this.offlinePlayer = offlinePlayer;
|
||||||
this.money = money;
|
this.money = money;
|
||||||
this.points = points;
|
this.points = points;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OfflinePlayer getPlayer() {
|
public OfflinePlayer getPlayer() {
|
||||||
return offlinePlayer;
|
return offlinePlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getAmount() {
|
public double getAmount() {
|
||||||
return money;
|
return money;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getPoints() {
|
public double getPoints() {
|
||||||
return points;
|
return points;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Job getJob() {
|
public Job getJob() {
|
||||||
return job;
|
return job;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAmount(double money) {
|
public void setAmount(double money) {
|
||||||
this.money = money;
|
this.money = money;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPoints(double points) {
|
public void setPoints(double points) {
|
||||||
this.points = points;
|
this.points = points;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isCancelled() {
|
public boolean isCancelled() {
|
||||||
return cancelled;
|
return cancelled;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setCancelled(boolean cancelled) {
|
public void setCancelled(boolean cancelled) {
|
||||||
this.cancelled = cancelled;
|
this.cancelled = cancelled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,9 +20,12 @@ public class playerinfo implements Cmd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(args[0]);
|
JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(args[0]);
|
||||||
|
if (jPlayer == null) {
|
||||||
|
sender.sendMessage(Jobs.getLanguage().getMessage("general.error.noinfoByPlayer", "%playername%", args[0]));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
String jobName = args[1];
|
Job job = Jobs.getJob(args[1]);
|
||||||
Job job = Jobs.getJob(jobName);
|
|
||||||
if (job == null) {
|
if (job == null) {
|
||||||
sender.sendMessage(Jobs.getLanguage().getMessage("general.error.job"));
|
sender.sendMessage(Jobs.getLanguage().getMessage("general.error.job"));
|
||||||
return true;
|
return true;
|
||||||
|
@ -105,6 +105,11 @@ public class GeneralConfigManager {
|
|||||||
EmptyServerAccountActionBar, ActionBarsMessageByDefault, ShowTotalWorkers, ShowPenaltyBonus, useDynamicPayment,
|
EmptyServerAccountActionBar, ActionBarsMessageByDefault, ShowTotalWorkers, ShowPenaltyBonus, useDynamicPayment,
|
||||||
JobsGUIOpenOnBrowse, JobsGUIShowChatBrowse, JobsGUISwitcheButtons, JobsGUIOpenOnJoin;
|
JobsGUIOpenOnBrowse, JobsGUIShowChatBrowse, JobsGUISwitcheButtons, JobsGUIOpenOnJoin;
|
||||||
|
|
||||||
|
public boolean FireworkLevelupUse, UseRandom, UseFlicker, UseTrail;
|
||||||
|
public String FireworkType;
|
||||||
|
public List<String> FwColors = new ArrayList<>();
|
||||||
|
public int FireworkPower, ShootTime;
|
||||||
|
|
||||||
private int JobsGUIRows, JobsGUIBackButton,
|
private int JobsGUIRows, JobsGUIBackButton,
|
||||||
JobsGUIStartPosition,
|
JobsGUIStartPosition,
|
||||||
JobsGUIGroupAmount,
|
JobsGUIGroupAmount,
|
||||||
@ -870,6 +875,21 @@ public class GeneralConfigManager {
|
|||||||
SoundTitleChangeVolume = c.get("Sounds.TitleChange.volume", 1);
|
SoundTitleChangeVolume = c.get("Sounds.TitleChange.volume", 1);
|
||||||
SoundTitleChangePitch = c.get("Sounds.TitleChange.pitch", 3);
|
SoundTitleChangePitch = c.get("Sounds.TitleChange.pitch", 3);
|
||||||
|
|
||||||
|
c.addComment("Fireworks", "Extra firework shooting in some events");
|
||||||
|
FireworkLevelupUse = c.get("Fireworks.LevelUp.use", false);
|
||||||
|
c.addComment("Fireworks.LevelUp.Random", "Makes the firework to randomize, such as random colors, type, power and so on.",
|
||||||
|
"These are under settings will not be work, when this enabled.");
|
||||||
|
UseRandom = c.get("Fireworks.LevelUp.Random", true);
|
||||||
|
UseFlicker = c.get("Fireworks.LevelUp.flicker", true);
|
||||||
|
UseTrail = c.get("Fireworks.LevelUp.trail", true);
|
||||||
|
c.addComment("Fireworks.LevelUp.type", "Firework types",
|
||||||
|
"All types can be found in https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/FireworkEffect.Type.html");
|
||||||
|
FireworkType = c.get("Fireworks.LevelUp.type", "STAR");
|
||||||
|
FwColors = c.get("Fireworks.LevelUp.colors", Arrays.asList("230,0,0", "0,90,0", "0,0,104"));
|
||||||
|
FireworkPower = c.get("Fireworks.LevelUp.power", 1);
|
||||||
|
c.addComment("Fireworks.LevelUp.ShootTime", "Fire shooting time in ticks.", "Example: 20 tick = 1 second");
|
||||||
|
ShootTime = c.get("Fireworks.LevelUp.ShootTime", 20);
|
||||||
|
|
||||||
c.addComment("Signs", "You can disable this to save SMALL amount of server resources");
|
c.addComment("Signs", "You can disable this to save SMALL amount of server resources");
|
||||||
SignsEnabled = c.get("Signs.Enable", true);
|
SignsEnabled = c.get("Signs.Enable", true);
|
||||||
SignsColorizeJobName = c.get("Signs.Colors.ColorizeJobName", true);
|
SignsColorizeJobName = c.get("Signs.Colors.ColorizeJobName", true);
|
||||||
|
@ -5,6 +5,7 @@ import java.util.HashMap;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Color;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
@ -21,9 +22,6 @@ import com.gamingmesh.jobs.CMILib.ItemManager.CMIMaterial;
|
|||||||
|
|
||||||
public class Util {
|
public class Util {
|
||||||
|
|
||||||
public Util() {
|
|
||||||
}
|
|
||||||
|
|
||||||
private static HashMap<UUID, String> jobsEditorMap = new HashMap<>();
|
private static HashMap<UUID, String> jobsEditorMap = new HashMap<>();
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
@ -33,7 +31,7 @@ public class Util {
|
|||||||
ItemStack testis = CMIMaterial.SPAWNER.newItemStack();
|
ItemStack testis = CMIMaterial.SPAWNER.newItemStack();
|
||||||
ItemMeta meta = testis.getItemMeta();
|
ItemMeta meta = testis.getItemMeta();
|
||||||
useMeta = meta instanceof BlockStateMeta;
|
useMeta = meta instanceof BlockStateMeta;
|
||||||
} catch (Exception e) {
|
} catch (Throwable e) {
|
||||||
useMeta = false;
|
useMeta = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,6 +88,7 @@ public class Util {
|
|||||||
distance = 15 * 16;
|
distance = 15 * 16;
|
||||||
if (distance < 1)
|
if (distance < 1)
|
||||||
distance = 1;
|
distance = 1;
|
||||||
|
|
||||||
ArrayList<Block> blocks = new ArrayList<>();
|
ArrayList<Block> blocks = new ArrayList<>();
|
||||||
Iterator<Block> itr = new BlockIterator(player, distance);
|
Iterator<Block> itr = new BlockIterator(player, distance);
|
||||||
while (itr.hasNext()) {
|
while (itr.hasNext()) {
|
||||||
@ -115,4 +114,60 @@ public class Util {
|
|||||||
}
|
}
|
||||||
return !blocks.isEmpty() ? blocks.get(blocks.size() - 1) : null;
|
return !blocks.isEmpty() ? blocks.get(blocks.size() - 1) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Color getColor(int a) {
|
||||||
|
Color c = null;
|
||||||
|
if (a == 1)
|
||||||
|
c = Color.AQUA;
|
||||||
|
|
||||||
|
if (a == 2)
|
||||||
|
c = Color.BLACK;
|
||||||
|
|
||||||
|
if (a == 3)
|
||||||
|
c = Color.BLUE;
|
||||||
|
|
||||||
|
if (a == 4)
|
||||||
|
c = Color.FUCHSIA;
|
||||||
|
|
||||||
|
if (a == 5)
|
||||||
|
c = Color.GRAY;
|
||||||
|
|
||||||
|
if (a == 6)
|
||||||
|
c = Color.GREEN;
|
||||||
|
|
||||||
|
if (a == 7)
|
||||||
|
c = Color.LIME;
|
||||||
|
|
||||||
|
if (a == 8)
|
||||||
|
c = Color.MAROON;
|
||||||
|
|
||||||
|
if (a == 9)
|
||||||
|
c = Color.NAVY;
|
||||||
|
|
||||||
|
if (a == 10)
|
||||||
|
c = Color.OLIVE;
|
||||||
|
|
||||||
|
if (a == 11)
|
||||||
|
c = Color.ORANGE;
|
||||||
|
|
||||||
|
if (a == 12)
|
||||||
|
c = Color.PURPLE;
|
||||||
|
|
||||||
|
if (a == 13)
|
||||||
|
c = Color.RED;
|
||||||
|
|
||||||
|
if (a == 14)
|
||||||
|
c = Color.SILVER;
|
||||||
|
|
||||||
|
if (a == 15)
|
||||||
|
c = Color.TEAL;
|
||||||
|
|
||||||
|
if (a == 16)
|
||||||
|
c = Color.WHITE;
|
||||||
|
|
||||||
|
if (a == 17)
|
||||||
|
c = Color.YELLOW;
|
||||||
|
|
||||||
|
return c == null ? Color.BLACK : c;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user