Adds information about the appropriate crafting station in ActionStartEvent
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
This commit is contained in:
parent
5efba6687c
commit
81c15b6600
@ -1,5 +1,7 @@
|
||||
package net.knarcraft.blacksmith.event;
|
||||
|
||||
import org.bukkit.Material;
|
||||
|
||||
/**
|
||||
* An event triggered when a blacksmith or scrapper starts reforging or salvaging an item
|
||||
*/
|
||||
@ -13,4 +15,11 @@ public interface ActionStartEvent extends BlacksmithPluginEvent {
|
||||
*/
|
||||
long getActionDurationTicks();
|
||||
|
||||
/**
|
||||
* Gets the appropriate crafting station for this action
|
||||
*
|
||||
* @return <p>The appropriate crafting station</p>
|
||||
*/
|
||||
Material craftingStation();
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package net.knarcraft.blacksmith.event;
|
||||
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -12,6 +13,7 @@ public class BlacksmithReforgeStartEvent extends AbstractBlacksmithPluginEvent i
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private final long durationTicks;
|
||||
private final Material craftingStation;
|
||||
|
||||
/**
|
||||
* Instantiates a new blacksmith reforge start event
|
||||
@ -19,10 +21,13 @@ public class BlacksmithReforgeStartEvent extends AbstractBlacksmithPluginEvent i
|
||||
* @param npc <p>The NPC involved in the event</p>
|
||||
* @param player <p>The player involved in the event</p>
|
||||
* @param durationTicks <p>The duration of the reforge</p>
|
||||
* @param craftingStation <p>The appropriate crafting station for this reforging</p>
|
||||
*/
|
||||
public BlacksmithReforgeStartEvent(@NotNull NPC npc, @NotNull Player player, long durationTicks) {
|
||||
public BlacksmithReforgeStartEvent(@NotNull NPC npc, @NotNull Player player, long durationTicks,
|
||||
@NotNull Material craftingStation) {
|
||||
super(npc, player);
|
||||
this.durationTicks = durationTicks;
|
||||
this.craftingStation = craftingStation;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -30,6 +35,11 @@ public class BlacksmithReforgeStartEvent extends AbstractBlacksmithPluginEvent i
|
||||
return durationTicks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Material craftingStation() {
|
||||
return craftingStation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a handler-list containing all event handlers
|
||||
*
|
||||
|
@ -1,6 +1,7 @@
|
||||
package net.knarcraft.blacksmith.event;
|
||||
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -13,6 +14,7 @@ public class ScrapperSalvageStartEvent extends AbstractBlacksmithPluginEvent imp
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private final long durationTicks;
|
||||
private final Material craftingStation;
|
||||
|
||||
/**
|
||||
* Instantiates a new scrapper salvage start event
|
||||
@ -20,10 +22,13 @@ public class ScrapperSalvageStartEvent extends AbstractBlacksmithPluginEvent imp
|
||||
* @param npc <p>The NPC involved in the event</p>
|
||||
* @param player <p>The player involved in the event</p>
|
||||
* @param durationTicks <p>The duration of the salvage</p>
|
||||
* @param craftingStation <p>The appropriate crafting station for this salvaging</p>
|
||||
*/
|
||||
public ScrapperSalvageStartEvent(@NotNull NPC npc, @NotNull Player player, long durationTicks) {
|
||||
public ScrapperSalvageStartEvent(@NotNull NPC npc, @NotNull Player player, long durationTicks,
|
||||
@NotNull Material craftingStation) {
|
||||
super(npc, player);
|
||||
this.durationTicks = durationTicks;
|
||||
this.craftingStation = craftingStation;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -31,6 +36,11 @@ public class ScrapperSalvageStartEvent extends AbstractBlacksmithPluginEvent imp
|
||||
return this.durationTicks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Material craftingStation() {
|
||||
return this.craftingStation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a handler-list containing all event handlers
|
||||
*
|
||||
|
@ -92,7 +92,7 @@ public class EconomyManager {
|
||||
private static double getSalvageCost(@NotNull SalvageMethod salvageMethod) {
|
||||
GlobalScrapperSettings settings = BlacksmithPlugin.getInstance().getGlobalScrapperSettings();
|
||||
return switch (salvageMethod) {
|
||||
case SALVAGE -> settings.getSalvageCost();
|
||||
case SALVAGE, EXTENDED_SALVAGE -> settings.getSalvageCost();
|
||||
case NETHERITE -> settings.getNetheriteSalvageCost();
|
||||
case ARMOR_TRIM -> settings.getArmorTrimSalvageCost();
|
||||
};
|
||||
|
@ -10,6 +10,11 @@ public enum SalvageMethod {
|
||||
*/
|
||||
SALVAGE,
|
||||
|
||||
/**
|
||||
* Salvaging unrepairable items normally by returning the item's crafting recipe, but with unrestricted
|
||||
*/
|
||||
EXTENDED_SALVAGE,
|
||||
|
||||
/**
|
||||
* Removing the armor trim from an item
|
||||
*/
|
||||
|
@ -92,6 +92,11 @@ public class ReforgeSession extends Session implements Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NotNull Material getCraftingStation() {
|
||||
return Material.ANVIL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs the actual reforge which fixes the item and gives it back to the player
|
||||
*/
|
||||
|
@ -9,6 +9,7 @@ import net.knarcraft.blacksmith.manager.EconomyManager;
|
||||
import net.knarcraft.blacksmith.property.SalvageMethod;
|
||||
import net.knarcraft.blacksmith.util.ItemHelper;
|
||||
import net.knarcraft.blacksmith.util.SalvageHelper;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -87,6 +88,15 @@ public class SalvageSession extends Session implements Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NotNull Material getCraftingStation() {
|
||||
return switch (this.salvageMethod) {
|
||||
case EXTENDED_SALVAGE -> Material.CRAFTING_TABLE;
|
||||
case SALVAGE -> Material.ANVIL;
|
||||
case NETHERITE, ARMOR_TRIM -> Material.SMITHING_TABLE;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs the actual salvage which fixes the item and gives it back to the player
|
||||
*/
|
||||
|
@ -177,12 +177,13 @@ public class ScrapperTrait extends CustomTrait<ScrapperSetting> {
|
||||
|
||||
// Check if any salvage will be produced
|
||||
RecipeResult recipeResult = getSalvage(itemInHand, extended);
|
||||
SalvageMethod method = ItemHelper.isRepairable(itemInHand) ? SalvageMethod.SALVAGE : SalvageMethod.EXTENDED_SALVAGE;
|
||||
boolean noUsefulSalvage = recipeResult == null || recipeResult.salvage().isEmpty();
|
||||
if (noUsefulSalvage) {
|
||||
sendNPCMessage(this.npc, player, getSettings().getTooDamagedMessage());
|
||||
return new SalvageResult(SalvageMethod.SALVAGE, new ArrayList<>(), SalvageState.NO_SALVAGE, 0);
|
||||
return new SalvageResult(method, new ArrayList<>(), SalvageState.NO_SALVAGE, 0);
|
||||
} else {
|
||||
return new SalvageResult(SalvageMethod.SALVAGE, recipeResult.salvage(), SalvageState.FOUND_SALVAGE,
|
||||
return new SalvageResult(method, recipeResult.salvage(), SalvageState.FOUND_SALVAGE,
|
||||
recipeResult.recipe().getResult().getAmount());
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import net.knarcraft.blacksmith.event.BlacksmithReforgeStartEvent;
|
||||
import net.knarcraft.blacksmith.event.NPCSoundEvent;
|
||||
import net.knarcraft.blacksmith.event.ScrapperSalvageStartEvent;
|
||||
import net.knarcraft.blacksmith.util.ItemHelper;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.SoundCategory;
|
||||
import org.bukkit.World;
|
||||
@ -100,10 +101,11 @@ public abstract class Session implements Runnable {
|
||||
this.finishTime = System.currentTimeMillis() + (actionDelay * 1000L);
|
||||
long actionDelayTicks = actionDelay * 20L;
|
||||
|
||||
BlacksmithPlugin instance = BlacksmithPlugin.getInstance();
|
||||
if (this instanceof ReforgeSession) {
|
||||
BlacksmithPlugin.getInstance().callEvent(new BlacksmithReforgeStartEvent(npc, player, actionDelayTicks));
|
||||
instance.callEvent(new BlacksmithReforgeStartEvent(npc, player, actionDelayTicks, getCraftingStation()));
|
||||
} else if (this instanceof SalvageSession) {
|
||||
BlacksmithPlugin.getInstance().callEvent(new ScrapperSalvageStartEvent(npc, player, actionDelayTicks));
|
||||
instance.callEvent(new ScrapperSalvageStartEvent(npc, player, actionDelayTicks, getCraftingStation()));
|
||||
}
|
||||
|
||||
taskId = scheduler.scheduleSyncDelayedTask(BlacksmithPlugin.getInstance(), this, actionDelayTicks);
|
||||
@ -157,6 +159,13 @@ public abstract class Session implements Runnable {
|
||||
*/
|
||||
protected abstract int getActionDelay();
|
||||
|
||||
/**
|
||||
* Gets the appropriate crafting station for this session
|
||||
*
|
||||
* @return <p>The appropriate crafting station</p>
|
||||
*/
|
||||
protected abstract @NotNull Material getCraftingStation();
|
||||
|
||||
/**
|
||||
* Plays an NPC sound
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user