Skip to content

Commit

Permalink
Fix some Farming Oversights
Browse files Browse the repository at this point in the history
  • Loading branch information
Flo56958 committed Mar 1, 2024
1 parent e28a80a commit e497d76
Show file tree
Hide file tree
Showing 15 changed files with 38 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ public void run(@NotNull final Player player) {
}

private void afterRun(@NotNull final Player player) {
Bukkit.getScheduler().runTaskLater(MineTinker.getPlugin(),
Bukkit.getScheduler().runTaskLater(this.button.getWindow().getGUI().getPlugin(),
() -> button.getWindow().getGUI().show(player, button.getWindow()), 10);
}
}
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/de/flo56958/minetinker/api/gui/GUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,13 @@
public class GUI implements Listener {

private final List<Window> windows = Collections.synchronizedList(new ArrayList<>());

private final JavaPlugin plugin;

public JavaPlugin getPlugin() {
return plugin;
}

private volatile boolean isClosed = true;

public GUI(@NotNull final JavaPlugin plugin) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ public void effect(MTBlockBreakEvent event) {
final float hardness = block.getType().getHardness();

final BlockFace finalFace = face.getOppositeFace();
Bukkit.getScheduler().runTask(MineTinker.getPlugin(), () -> {
Bukkit.getScheduler().runTask(this.getSource(), () -> {
for (int i = 1; i <= level; i++) {
if (!drillingBlockBreak(block.getRelative(finalFace, i),
hardness, player, tool)) break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ public void reload() {
this.radiusPerLevel = config.getInt("RadiusPerLevel", 10);

if (isAllowed())
this.taskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(MineTinker.getPlugin(),
this.taskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(this.getSource(),
this.runnable, 5 * 20L, tickTime);
else
this.taskID = -1;
Expand Down
25 changes: 12 additions & 13 deletions src/main/java/de/flo56958/minetinker/modifiers/types/Farming.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ public class Farming extends Modifier implements Listener {
Material.CARROTS, Material.CARROT,
Material.POTATOES, Material.POTATO,
Material.BEETROOTS, Material.BEETROOT_SEEDS,
Material.NETHER_WART, Material.NETHER_WART
Material.NETHER_WART, Material.NETHER_WART,
Material.COCOA, Material.COCOA_BEANS
);

private int boneMealDurabilityCost;
Expand Down Expand Up @@ -122,11 +123,10 @@ public void onBoneMealTry(@NotNull final MTPlayerInteractEvent event) {
if (block.getBlockData() instanceof Ageable ageable && ageable.getAge() == ageable.getMaximumAge()) return;

// check if block is bone meal-able
block.applyBoneMeal(event.getEvent().getBlockFace());
if (!block.applyBoneMeal(event.getEvent().getBlockFace())) return;

final int damage = boneMealDurabilityCost - (boneMealDurabilityCostReductionPerLevel * (modManager.getModLevel(tool, this) - 1));
DataHandler.triggerItemDamage(player, tool, damage);

}

@EventHandler(ignoreCancelled = true)
Expand All @@ -141,24 +141,23 @@ private void onBlockBreak(@NotNull final MTBlockBreakEvent event) {
final ItemStack tool = event.getTool();
if (!modManager.hasMod(tool, this)) return;

final Material material = block.getType();
final Material required = materialMap.get(material);
final Material blockType = block.getType();
final Material requiredItem = materialMap.get(blockType);

if (required == null) return;
if (requiredItem == null) return;

Bukkit.getScheduler().runTaskLater(getSource(), () -> {
Bukkit.getScheduler().runTaskLater(this.getSource(), () -> {
if (player.getGameMode() == GameMode.CREATIVE || !requireSeeds) {
block.setType(material);
block.setType(blockType);
return;
}

for (ItemStack itemStack : player.getInventory().getContents()) {
if (itemStack == null || itemStack.getType() != required)
// This is necessary as even though this is annotated @NotNull, it's still null sometimes
continue;
for (final ItemStack itemStack : player.getInventory().getContents()) {
if (itemStack == null || itemStack.getType() != requiredItem) continue;

itemStack.setAmount(itemStack.getAmount() - 1);
block.setType(material);
block.setType(blockType);
break;
}
}, 1L);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,6 @@ public void run() {
}
};

Bukkit.getServer().getScheduler().runTaskLater(getSource(), runnable, 3);
Bukkit.getServer().getScheduler().runTaskLater(this.getSource(), runnable, 3);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -142,10 +142,10 @@ public void onShoot(final MTProjectileLaunchEvent event) {
ChatWriter.logModifier(player, event, this, tool, "Cost(" + this.experienceCost + ")");

for (int i = 1; i < 30; i++) {
Bukkit.getScheduler().runTaskLater(MineTinker.getPlugin(), () -> arrow.setVelocity(velocity.clone()), i * 20L);
Bukkit.getScheduler().runTaskLater(this.getSource(), () -> arrow.setVelocity(velocity.clone()), i * 20L);
}

Bukkit.getScheduler().runTaskLater(MineTinker.getPlugin(), () -> arrow.setGravity(true), 30 * 20L);
Bukkit.getScheduler().runTaskLater(this.getSource(), () -> arrow.setGravity(true), 30 * 20L);
}

@EventHandler(priority = EventPriority.LOWEST)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ public void onHit(final EntityDamageByEntityEvent event) {
entity.setMaximumNoDamageTicks(0);
event.setCancelled(false);

Bukkit.getScheduler().runTaskLater(MineTinker.getPlugin(), () -> entity.setMaximumNoDamageTicks(20), 20);
Bukkit.getScheduler().runTaskLater(this.getSource(), () -> entity.setMaximumNoDamageTicks(20), 20);
}

@EventHandler(ignoreCancelled = true)
Expand Down Expand Up @@ -193,7 +193,7 @@ public void onShoot(final MTProjectileLaunchEvent event) {
if (!hasArrow) break;
}

Bukkit.getScheduler().runTaskLater(MineTinker.getPlugin(), () -> {
Bukkit.getScheduler().runTaskLater(this.getSource(), () -> {
final Arrow arr = loc.getWorld().spawnArrow(loc, vel, (float) vel.length(), (float) spread);
arr.setShooter(player);
arr.setShotFromCrossbow(arrow.isShotFromCrossbow());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ public void reload() {

for (final Player player : Bukkit.getOnlinePlayers())
data.putIfAbsent(player.getUniqueId(), new Tupel(player.getLocation(), System.currentTimeMillis(), false));
this.taskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(MineTinker.getPlugin(), this.runnable, 5 * 20L, this.tickTime);
this.taskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(this.getSource(), this.runnable, 5 * 20L, this.tickTime);
} else
this.taskID = -1;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ public void onInteract(@NotNull MTPlayerInteractEvent event) {
if (b.getType().isAir()) continue;
if (events.putIfAbsent(b.getLocation(), 0) != null) continue;

Bukkit.getScheduler().runTaskLater(getSource(),
Bukkit.getScheduler().runTaskLater(this.getSource(),
() -> Bukkit.getPluginManager().callEvent(
new PlayerInteractEvent(player, event.getEvent().getAction(), tool, b, event.getEvent().getBlockFace())),
1);
Expand Down Expand Up @@ -351,7 +351,7 @@ public void createStrippedLogs(@NotNull final MTPlayerInteractEvent event) {
private void powerBlockBreak(@Nullable final Block block, final float centralBlockHardness, final Player player, final ItemStack tool, final BlockFace face) {
if (block == null) return;

Bukkit.getScheduler().runTask(MineTinker.getPlugin(), () -> {
Bukkit.getScheduler().runTask(this.getSource(), () -> {
if (treatAsWhitelist ^ blacklist.contains(block.getType())) return;
if (block.getDrops(tool).isEmpty()) return;
if (block.getType().getHardness() > centralBlockHardness + 2) // + 2 so you can mine ore as well
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ public void reload() {

this.description = this.description.replaceAll("%level", String.valueOf(this.requiredLightLevel));

if (this.isAllowed()) task = Bukkit.getScheduler().runTaskTimer(MineTinker.getPlugin(), runnable, 0,5);
if (this.isAllowed()) task = Bukkit.getScheduler().runTaskTimer(this.getSource(), runnable, 0,5);
}

private void hidePlayer(Player p, int level) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ public void onJoin(PlayerJoinEvent event) {
if (modManager.isArmorViable(chest) && modManager.hasMod(chest, this)) {
health = DataHandler.getTag(chest, "modifier_tanky_health_save", PersistentDataType.DOUBLE);
if (health != null && health > 0) {
Bukkit.getScheduler().runTaskLater(MineTinker.getPlugin(), () -> {
Bukkit.getScheduler().runTaskLater(this.getSource(), () -> {
try {
event.getPlayer().setHealth(health);
} catch(IllegalArgumentException ignored) {}
Expand All @@ -160,7 +160,7 @@ public void onJoin(PlayerJoinEvent event) {
if (modManager.isArmorViable(chest) && modManager.hasMod(chest, this)) {
health = DataHandler.getTag(chest, "modifier_tanky_health_save", PersistentDataType.DOUBLE);
if (health != null) {
Bukkit.getScheduler().runTaskLater(MineTinker.getPlugin(), () -> event.getPlayer().setHealth(health), 10L);
Bukkit.getScheduler().runTaskLater(this.getSource(), () -> event.getPlayer().setHealth(health), 10L);
DataHandler.removeTag(chest, "modifier_tanky_health_save");
} else return;
} else return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,15 +135,15 @@ public void effect(@NotNull MTBlockBreakEvent event) {
final int sap_idx = block.getType().toString().lastIndexOf('_');
final Material saplingType = Material.getMaterial(block.getType().toString().substring(0, sap_idx) + "_SAPLING");

Bukkit.getScheduler().runTaskAsynchronously(MineTinker.getPlugin(), () -> {
Bukkit.getScheduler().runTaskAsynchronously(this.getSource(), () -> {
final HashSet<Block> trunkBlocks = new HashSet<>();
final ArrayList<Block> groundBlocks = new ArrayList<>();
if (!parseTree(block, trunkBlocks, groundBlocks, allowed) && !ToolType.SHEARS.contains(tool.getType())) return;
final List<Block> trunkBlocksList = new ArrayList<>(trunkBlocks);
// Sort blocks by distance to the original block (closest first) and break them in that order
trunkBlocksList.sort(Comparator.comparingDouble(o -> (o.getLocation().distance(block.getLocation()))));
for (final Block trunkBlock : trunkBlocksList) {
Bukkit.getScheduler().runTask(MineTinker.getPlugin(), () -> {
Bukkit.getScheduler().runTask(this.getSource(), () -> {
events.put(trunkBlock.getLocation(), 0);
try {
DataHandler.playerBreakBlock(player, trunkBlock, tool);
Expand All @@ -153,7 +153,7 @@ public void effect(@NotNull MTBlockBreakEvent event) {
});
}

Bukkit.getScheduler().runTask(MineTinker.getPlugin(), () -> {
Bukkit.getScheduler().runTask(this.getSource(), () -> {
//Track stats
final int stat = DataHandler.getTagOrDefault(tool, getKey() + "_stat_used", PersistentDataType.INTEGER, 0);
DataHandler.setTag(tool, getKey() + "_stat_used", stat + 1, PersistentDataType.INTEGER);
Expand All @@ -169,7 +169,7 @@ public void effect(@NotNull MTBlockBreakEvent event) {
}));

// try to place saplings on all ground blocks
Bukkit.getScheduler().runTask(MineTinker.getPlugin(), () -> {
Bukkit.getScheduler().runTask(this.getSource(), () -> {
for (final Block groundBlock : groundBlocks) {
for (final ItemStack stack : player.getInventory().getContents()) {
if (stack == null) continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ public void onDamage(EntityDamageEvent event) {
// Add small cooldown to improve server performance
setCooldown(armor, 500 /* ms */);

Bukkit.getScheduler().runTaskAsynchronously(MineTinker.getPlugin(), () -> {
Bukkit.getScheduler().runTaskAsynchronously(this.getSource(), () -> {
// run effect async as it does not need to stop all action on server if search takes to long
final World world = player.getWorld();
Location loc = player.getLocation();
Expand Down Expand Up @@ -156,7 +156,7 @@ public void onDamage(EntityDamageEvent event) {
this.getCooldown(level) / 1000));

final Location finalLoc = loc;
Bukkit.getScheduler().runTask(MineTinker.getPlugin(), () -> { //Teleport needs to be in sync
Bukkit.getScheduler().runTask(this.getSource(), () -> { //Teleport needs to be in sync
// Slow the fall
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_FALLING, 20, 0, false));
player.teleport(finalLoc);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class ItemStatisticsHandler implements Listener {
@NotNull
public static GUI getGUI(final ItemStack item) {
GUI gui = new GUI(MineTinker.getPlugin());
Bukkit.getScheduler().runTaskLater(MineTinker.getPlugin(), gui::close, 5 * 60 * 20);
Bukkit.getScheduler().runTaskLater(gui.getPlugin(), gui::close, 5 * 60 * 20);
List<Modifier> mods = ModManager.instance().getAllowedMods();
mods.sort(Comparator.comparing(Modifier::getName));

Expand Down

0 comments on commit e497d76

Please sign in to comment.