From 73332fad3822d2a72f00b198c35c3b9534d5b410 Mon Sep 17 00:00:00 2001 From: Zrips Date: Wed, 19 Jul 2017 11:11:41 +0300 Subject: [PATCH] Allow payment for crafting items with predefined names --- src/main/java/com/gamingmesh/jobs/Jobs.java | 1 - .../jobs/actions/ItemNameActionInfo.java | 43 +++++++++++++++++++ .../gamingmesh/jobs/config/ConfigManager.java | 2 + .../jobs/listeners/JobsPaymentListener.java | 15 +++++-- src/main/resources/jobConfig.yml | 4 ++ 5 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/gamingmesh/jobs/actions/ItemNameActionInfo.java diff --git a/src/main/java/com/gamingmesh/jobs/Jobs.java b/src/main/java/com/gamingmesh/jobs/Jobs.java index b848a96c..e6dffb70 100644 --- a/src/main/java/com/gamingmesh/jobs/Jobs.java +++ b/src/main/java/com/gamingmesh/jobs/Jobs.java @@ -541,7 +541,6 @@ public class Jobs extends JavaPlugin { // Cloning to avoid issues HashMap temp = new HashMap(Jobs.getPlayerManager().getPlayersInfoUUIDMap()); Iterator> it = temp.entrySet().iterator(); - Jobs.consoleMsg("map size: " + temp.size()); while (it.hasNext()) { Entry one = it.next(); if (!running) diff --git a/src/main/java/com/gamingmesh/jobs/actions/ItemNameActionInfo.java b/src/main/java/com/gamingmesh/jobs/actions/ItemNameActionInfo.java new file mode 100644 index 00000000..e41a793d --- /dev/null +++ b/src/main/java/com/gamingmesh/jobs/actions/ItemNameActionInfo.java @@ -0,0 +1,43 @@ +/** + * Jobs Plugin for Bukkit + * Copyright (C) 2011 Zak Ford + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.gamingmesh.jobs.actions; + +import com.gamingmesh.jobs.container.ActionInfo; +import com.gamingmesh.jobs.container.ActionType; +import com.gamingmesh.jobs.container.BaseActionInfo; + +public class ItemNameActionInfo extends BaseActionInfo implements ActionInfo { + private String name; + + public ItemNameActionInfo(String name, ActionType type) { + super(type); + this.name = name; + } + + @Override + public String getName() { + return name; + } + + @Override + public String getNameWithSub() { + return name; + } + +} diff --git a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java index 8e6a6ae3..61f81b16 100644 --- a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java @@ -589,6 +589,8 @@ public class ConfigManager { } Jobs.getExplore().setExploreEnabled(); Jobs.getExplore().setPlayerAmount(amount + 1); + } else if (actionType == ActionType.CRAFT && myKey.startsWith("!")) { + type = myKey.substring(1, myKey.length()); } if (type == null) { diff --git a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java index d58ef7b0..d76dfce9 100644 --- a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java +++ b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java @@ -26,6 +26,7 @@ import java.util.Map.Entry; import java.util.UUID; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; @@ -85,6 +86,7 @@ import com.gamingmesh.jobs.actions.EnchantActionInfo; import com.gamingmesh.jobs.actions.EntityActionInfo; import com.gamingmesh.jobs.actions.ExploreActionInfo; import com.gamingmesh.jobs.actions.ItemActionInfo; +import com.gamingmesh.jobs.actions.ItemNameActionInfo; import com.gamingmesh.jobs.api.JobsChunkChangeEvent; import com.gamingmesh.jobs.container.ActionType; import com.gamingmesh.jobs.container.BlockProtection; @@ -93,7 +95,6 @@ import com.gamingmesh.jobs.container.ExploreRespond; import com.gamingmesh.jobs.container.FastPayment; import com.gamingmesh.jobs.container.JobProgression; import com.gamingmesh.jobs.container.JobsPlayer; -import com.gamingmesh.jobs.stuff.ChatColor; import com.gamingmesh.jobs.stuff.Debug; import com.google.common.base.Objects; @@ -514,9 +515,14 @@ public class JobsPaymentListener implements Listener { } } + Debug.D("Crafted item " + resultStack.getType().name() + " " + resultStack.getAmount()); + // If we need to pay only by each craft action we will skip calculation how much was crafted if (!Jobs.getGCManager().PayForEachCraft) { - Jobs.action(jPlayer, new ItemActionInfo(resultStack, ActionType.CRAFT)); + if (resultStack.getItemMeta().hasDisplayName()) + Jobs.action(jPlayer, new ItemNameActionInfo(ChatColor.stripColor(resultStack.getItemMeta().getDisplayName()), ActionType.CRAFT)); + else + Jobs.action(jPlayer, new ItemActionInfo(resultStack, ActionType.CRAFT)); return; } @@ -533,7 +539,10 @@ public class JobsPaymentListener implements Listener { int newItemsCount = toCraft.getAmount(); while (newItemsCount >= 0) { newItemsCount--; - Jobs.action(jPlayer, new ItemActionInfo(resultStack, ActionType.CRAFT)); + if (resultStack.getItemMeta().hasDisplayName()) + Jobs.action(jPlayer, new ItemNameActionInfo(ChatColor.stripColor(resultStack.getItemMeta().getDisplayName()), ActionType.CRAFT)); + else + Jobs.action(jPlayer, new ItemActionInfo(resultStack, ActionType.CRAFT)); } } } diff --git a/src/main/resources/jobConfig.yml b/src/main/resources/jobConfig.yml index 92a599ec..c38839f2 100644 --- a/src/main/resources/jobConfig.yml +++ b/src/main/resources/jobConfig.yml @@ -308,6 +308,10 @@ Jobs: LEATHER_BOOTS: income: 1.0 experience: 6.0 + # Add ! at front when you want to pay for crafted items with special names + "!Healing Bandage": + income: 1.0 + experience: 6.0 # Smelting ores Smelt: IRON_INGOT: