mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-08-03 04:55:28 +02:00
Step 1 of rewriting Alchemy - Removing all the old code
This commit is contained in:
@@ -1,23 +0,0 @@
|
||||
//package com.gmail.nossr50.runnables;
|
||||
//
|
||||
//import com.gmail.nossr50.mcMMO;
|
||||
//import com.gmail.nossr50.runnables.skills.AprilTask;
|
||||
//import com.gmail.nossr50.util.Misc;
|
||||
//import org.bukkit.scheduler.BukkitRunnable;
|
||||
//
|
||||
//public class CheckDateTask extends BukkitRunnable {
|
||||
//
|
||||
// @Override
|
||||
// public void run() {
|
||||
// if (!mcMMO.getHolidayManager().isAprilFirst()) {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // Set up jokes
|
||||
// new AprilTask().runTaskTimer(mcMMO.p, 1L * 60L * Misc.TICK_CONVERSION_FACTOR, 10L * 60L * Misc.TICK_CONVERSION_FACTOR);
|
||||
// mcMMO.getHolidayManager().registerAprilCommand();
|
||||
//
|
||||
// // Jokes deployed.
|
||||
// this.cancel();
|
||||
// }
|
||||
//}
|
@@ -1,38 +0,0 @@
|
||||
package com.gmail.nossr50.runnables.skills;
|
||||
|
||||
import com.gmail.nossr50.skills.alchemy.Alchemy;
|
||||
import com.gmail.nossr50.skills.alchemy.AlchemyPotionBrewer;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.BrewingStand;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class AlchemyBrewCheckTask extends BukkitRunnable {
|
||||
private Player player;
|
||||
private BrewingStand brewingStand;
|
||||
private ItemStack[] oldInventory;
|
||||
|
||||
public AlchemyBrewCheckTask(Player player, BrewingStand brewingStand) {
|
||||
this.player = player;
|
||||
this.brewingStand = brewingStand;
|
||||
this.oldInventory = Arrays.copyOfRange(brewingStand.getInventory().getContents(), 0, 4);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
Location location = brewingStand.getLocation();
|
||||
ItemStack[] newInventory = Arrays.copyOfRange(brewingStand.getInventory().getContents(), 0, 4);
|
||||
boolean validBrew = brewingStand.getFuelLevel() > 0 && AlchemyPotionBrewer.isValidBrew(player, newInventory);
|
||||
|
||||
if (Alchemy.brewingStandMap.containsKey(location)) {
|
||||
if (oldInventory[Alchemy.INGREDIENT_SLOT] == null || newInventory[Alchemy.INGREDIENT_SLOT] == null || !oldInventory[Alchemy.INGREDIENT_SLOT].isSimilar(newInventory[Alchemy.INGREDIENT_SLOT]) || !validBrew) {
|
||||
Alchemy.brewingStandMap.get(location).cancelBrew();
|
||||
}
|
||||
} else if (validBrew) {
|
||||
Alchemy.brewingStandMap.put(location, new AlchemyBrewTask(brewingStand, player));
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,118 +0,0 @@
|
||||
package com.gmail.nossr50.runnables.skills;
|
||||
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||
import com.gmail.nossr50.events.skills.alchemy.McMMOPlayerBrewEvent;
|
||||
import com.gmail.nossr50.events.skills.alchemy.McMMOPlayerCatalysisEvent;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.skills.alchemy.Alchemy;
|
||||
import com.gmail.nossr50.skills.alchemy.AlchemyPotionBrewer;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.BrewingStand;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class AlchemyBrewTask extends BukkitRunnable {
|
||||
|
||||
private BlockState brewingStand;
|
||||
private Location location;
|
||||
private double brewSpeed;
|
||||
private double brewTimer;
|
||||
private Player player;
|
||||
private int fuel;
|
||||
private boolean firstRun = true;
|
||||
|
||||
public AlchemyBrewTask(BlockState brewingStand, Player player) {
|
||||
this.brewingStand = brewingStand;
|
||||
this.location = brewingStand.getLocation();
|
||||
this.player = player;
|
||||
|
||||
brewSpeed = 1.0;
|
||||
brewTimer = 400;
|
||||
|
||||
if (player != null
|
||||
&& !Misc.isNPCEntity(player)
|
||||
&& Permissions.isSubSkillEnabled(player, SubSkillType.ALCHEMY_CATALYSIS)
|
||||
&& UserManager.getPlayer(player) != null) {
|
||||
|
||||
double catalysis = UserManager.getPlayer(player).getAlchemyManager().calculateBrewSpeed(Permissions.lucky(player, PrimarySkillType.ALCHEMY));
|
||||
|
||||
McMMOPlayerCatalysisEvent event = new McMMOPlayerCatalysisEvent(player, catalysis);
|
||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (!event.isCancelled()) {
|
||||
brewSpeed = catalysis;
|
||||
}
|
||||
}
|
||||
|
||||
if (Alchemy.brewingStandMap.containsKey(location)) {
|
||||
Alchemy.brewingStandMap.get(location).cancel();
|
||||
}
|
||||
|
||||
fuel = ((BrewingStand) brewingStand).getFuelLevel();
|
||||
|
||||
if (((BrewingStand) brewingStand).getBrewingTime() == -1) // Only decrement on our end if it isn't a vanilla ingredient.
|
||||
fuel--;
|
||||
|
||||
Alchemy.brewingStandMap.put(location, this);
|
||||
this.runTaskTimer(mcMMO.p, 1, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player == null || !player.isValid() || brewingStand == null || brewingStand.getType() != Material.BREWING_STAND || !AlchemyPotionBrewer.isValidIngredient(player, ((BrewingStand) brewingStand).getInventory().getContents()[Alchemy.INGREDIENT_SLOT])) {
|
||||
if (Alchemy.brewingStandMap.containsKey(location)) {
|
||||
Alchemy.brewingStandMap.remove(location);
|
||||
}
|
||||
|
||||
this.cancel();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (firstRun) {
|
||||
firstRun = false;
|
||||
((BrewingStand) brewingStand).setFuelLevel(fuel);
|
||||
}
|
||||
|
||||
brewTimer -= brewSpeed;
|
||||
|
||||
// Vanilla potion brewing completes when BrewingTime == 1
|
||||
if (brewTimer < Math.max(brewSpeed, 2)) {
|
||||
this.cancel();
|
||||
finish();
|
||||
} else {
|
||||
((BrewingStand) brewingStand).setBrewingTime((int) brewTimer);
|
||||
}
|
||||
}
|
||||
|
||||
private void finish() {
|
||||
McMMOPlayerBrewEvent event = new McMMOPlayerBrewEvent(player, brewingStand);
|
||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (!event.isCancelled()) {
|
||||
AlchemyPotionBrewer.finishBrewing(brewingStand, player, false);
|
||||
}
|
||||
|
||||
Alchemy.brewingStandMap.remove(location);
|
||||
}
|
||||
|
||||
public void finishImmediately() {
|
||||
this.cancel();
|
||||
|
||||
AlchemyPotionBrewer.finishBrewing(brewingStand, player, true);
|
||||
Alchemy.brewingStandMap.remove(location);
|
||||
}
|
||||
|
||||
public void cancelBrew() {
|
||||
this.cancel();
|
||||
|
||||
((BrewingStand) brewingStand).setBrewingTime(-1);
|
||||
Alchemy.brewingStandMap.remove(location);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user