mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-19 19:25:48 +00:00
Merge branch 'master' into tags
This commit is contained in:
commit
0e6fc92e28
@ -31,6 +31,7 @@
|
||||
* Added a config option for Grappling Hooks to not be consumed on use
|
||||
* Added Talisman of the Caveman
|
||||
* You can now convert any gold ingot into gold dust with slightly less returns
|
||||
* (API) Added SlimefunGuideOpenEvent
|
||||
* (API) Added custom tags for developers
|
||||
|
||||
#### Changes
|
||||
@ -56,6 +57,8 @@
|
||||
* Fixed #2360
|
||||
* Fixed #2351
|
||||
* Fixed #2357
|
||||
* Fixed Auto Enchanters being unaffected by speed modifications from addons
|
||||
* Fixed Auto Disenchanters being unaffected by speed modifications from addons
|
||||
* Fixed #2238
|
||||
|
||||
## Release Candidate 16 (07 Sep 2020)
|
||||
|
3
pom.xml
3
pom.xml
@ -77,6 +77,7 @@
|
||||
<build>
|
||||
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
|
||||
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
|
||||
<defaultGoal>clean package</defaultGoal>
|
||||
|
||||
<finalName>${project.name} v${project.version}</finalName>
|
||||
|
||||
@ -213,7 +214,7 @@
|
||||
<link>${spigot.javadocs}</link>
|
||||
</links>
|
||||
|
||||
<!-- We can group pakages together in our Javadocs -->
|
||||
<!-- We can group packages together in our Javadocs -->
|
||||
<groups>
|
||||
<group>
|
||||
<title>Slimefun4 - API</title>
|
||||
|
@ -0,0 +1,104 @@
|
||||
package io.github.thebusybiscuit.slimefun4.api.events;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuideLayout;
|
||||
|
||||
/**
|
||||
* This {@link Event} is called whenever a {@link Player} tries to open the Slimefun Guide book.
|
||||
*
|
||||
* @author Linox
|
||||
*
|
||||
* @see SlimefunGuideLayout
|
||||
*/
|
||||
public class SlimefunGuideOpenEvent extends Event implements Cancellable {
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
private final Player player;
|
||||
private final ItemStack guide;
|
||||
private SlimefunGuideLayout layout;
|
||||
private boolean cancelled;
|
||||
|
||||
public SlimefunGuideOpenEvent(@Nonnull Player p, @Nonnull ItemStack guide, @Nonnull SlimefunGuideLayout layout) {
|
||||
Validate.notNull(p, "The Player cannot be null");
|
||||
Validate.notNull(guide, "Guide cannot be null");
|
||||
Validate.notNull(layout, "Layout cannot be null");
|
||||
this.player = p;
|
||||
this.guide = guide;
|
||||
this.layout = layout;
|
||||
}
|
||||
|
||||
/**
|
||||
* This returns the {@link Player} that tries to open
|
||||
* the Slimefun Guide.
|
||||
*
|
||||
* @return The {@link Player}
|
||||
*/
|
||||
@Nonnull
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
}
|
||||
|
||||
/**
|
||||
* This returns the {@link ItemStack} that {@link Player}
|
||||
* tries to open the Slimefun Guide with.
|
||||
*
|
||||
* @return The {@link ItemStack}
|
||||
*/
|
||||
@Nonnull
|
||||
public ItemStack getGuide() {
|
||||
return guide;
|
||||
}
|
||||
|
||||
/**
|
||||
* This returns the {@link SlimefunGuideLayout} of the Slimefun Guide
|
||||
* that {@link Player} tries to open.
|
||||
*
|
||||
* @return The {@link SlimefunGuideLayout}
|
||||
*/
|
||||
@Nonnull
|
||||
public SlimefunGuideLayout getGuideLayout() {
|
||||
return layout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes the {@link SlimefunGuideLayout} that was tried to be opened with.
|
||||
*
|
||||
* @param layout
|
||||
* The new {@link SlimefunGuideLayout}
|
||||
*/
|
||||
public void setGuideLayout(@Nonnull SlimefunGuideLayout layout) {
|
||||
Validate.notNull(layout, "You must specify a layout that is not-null!");
|
||||
this.layout = layout;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
return cancelled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCancelled(boolean cancel) {
|
||||
this.cancelled = cancel;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return getHandlerList();
|
||||
}
|
||||
|
||||
}
|
@ -108,7 +108,7 @@ public class AutoDisenchanter extends AContainer {
|
||||
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(disenchantedItem, ench.getEnchantment(), 0);
|
||||
}
|
||||
|
||||
MachineRecipe recipe = new MachineRecipe(90 * amount, new ItemStack[] { target, item }, new ItemStack[] { disenchantedItem, book });
|
||||
MachineRecipe recipe = new MachineRecipe(90 * amount / this.getSpeed() , new ItemStack[] { target, item }, new ItemStack[] { disenchantedItem, book });
|
||||
|
||||
if (!InvUtils.fitAll(menu.toInventory(), recipe.getOutput(), getOutputSlots())) {
|
||||
return null;
|
||||
|
@ -97,7 +97,7 @@ public class AutoEnchanter extends AContainer {
|
||||
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(enchantedItem, ench.getEnchantment(), ench.getLevel());
|
||||
}
|
||||
|
||||
MachineRecipe recipe = new MachineRecipe(75 * amount, new ItemStack[] { target, item }, new ItemStack[] { enchantedItem, new ItemStack(Material.BOOK) });
|
||||
MachineRecipe recipe = new MachineRecipe(75 * amount / this.getSpeed(), new ItemStack[] { target, item }, new ItemStack[] { enchantedItem, new ItemStack(Material.BOOK) });
|
||||
|
||||
if (!InvUtils.fitAll(menu.toInventory(), recipe.getOutput(), getOutputSlots())) {
|
||||
return null;
|
||||
|
@ -3,6 +3,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event.Result;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -11,6 +12,7 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.api.events.SlimefunGuideOpenEvent;
|
||||
import io.github.thebusybiscuit.slimefun4.api.events.PlayerRightClickEvent;
|
||||
import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuide;
|
||||
import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuideLayout;
|
||||
@ -45,23 +47,23 @@ public class SlimefunGuideListener implements Listener {
|
||||
public void onInteract(PlayerRightClickEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
|
||||
if (openGuide(e, SlimefunGuideLayout.BOOK) == Result.ALLOW) {
|
||||
if (tryOpenGuide(p, e, SlimefunGuideLayout.BOOK) == Result.ALLOW) {
|
||||
if (p.isSneaking()) {
|
||||
SlimefunGuideSettings.openSettings(p, e.getItem());
|
||||
}
|
||||
else {
|
||||
SlimefunGuide.openGuide(p, SlimefunGuideLayout.BOOK);
|
||||
openGuide(p, e, SlimefunGuideLayout.BOOK);
|
||||
}
|
||||
}
|
||||
else if (openGuide(e, SlimefunGuideLayout.CHEST) == Result.ALLOW) {
|
||||
else if (tryOpenGuide(p, e, SlimefunGuideLayout.CHEST) == Result.ALLOW) {
|
||||
if (p.isSneaking()) {
|
||||
SlimefunGuideSettings.openSettings(p, e.getItem());
|
||||
}
|
||||
else {
|
||||
SlimefunGuide.openGuide(p, SlimefunGuideLayout.CHEST);
|
||||
openGuide(p, e, SlimefunGuideLayout.CHEST);
|
||||
}
|
||||
}
|
||||
else if (openGuide(e, SlimefunGuideLayout.CHEAT_SHEET) == Result.ALLOW) {
|
||||
else if (tryOpenGuide(p, e, SlimefunGuideLayout.CHEAT_SHEET) == Result.ALLOW) {
|
||||
if (p.isSneaking()) {
|
||||
SlimefunGuideSettings.openSettings(p, e.getItem());
|
||||
}
|
||||
@ -72,16 +74,24 @@ public class SlimefunGuideListener implements Listener {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
private void openGuide(Player p, PlayerRightClickEvent e, SlimefunGuideLayout layout) {
|
||||
SlimefunGuideOpenEvent event = new SlimefunGuideOpenEvent(p, e.getItem(), layout);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
|
||||
if (!event.isCancelled()) {
|
||||
e.cancel();
|
||||
SlimefunGuide.openGuide(p, event.getGuideLayout());
|
||||
}
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@ParametersAreNonnullByDefault
|
||||
private Result openGuide(PlayerRightClickEvent e, SlimefunGuideLayout layout) {
|
||||
Player p = e.getPlayer();
|
||||
private Result tryOpenGuide(Player p, PlayerRightClickEvent e, SlimefunGuideLayout layout) {
|
||||
ItemStack item = e.getItem();
|
||||
|
||||
if (SlimefunUtils.isItemSimilar(item, SlimefunGuide.getItem(layout), true, false)) {
|
||||
e.cancel();
|
||||
|
||||
|
||||
if (!SlimefunPlugin.getWorldSettingsService().isWorldEnabled(p.getWorld())) {
|
||||
SlimefunPlugin.getLocalization().sendMessage(p, "messages.disabled-item", true);
|
||||
return Result.DENY;
|
||||
|
Loading…
Reference in New Issue
Block a user