Skip to content

Commit

Permalink
Merge pull request #34 from r3back/develop
Browse files Browse the repository at this point in the history
Fixed Anvil bug inside player's inventory
  • Loading branch information
r3back committed Oct 17, 2023
2 parents 49c10d9 + b4583a2 commit 255a43d
Show file tree
Hide file tree
Showing 26 changed files with 625 additions and 312 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,6 @@
/test-suite/mc-config/*
!/test-suite/mc-config/plugins
/test-suite/mc-config/plugins/*
!/test-suite/mc-config/plugins/TheAssistant.jar
!/test-suite/mc-config/plugins/TheAssistant.jar
/*/*/*.iml
*/*/*/*.iml
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,13 @@ public final class Inventories extends OkaeriConfig implements DefaultBackground

.readyToCombineSlots(Arrays.asList(45,46,47,48,50,51,52,53))
.readyToCombineItem(ItemBuilder.of(XMaterial.LIME_STAINED_GLASS_PANE, 1, " ", Collections.emptyList()).build())

//Info
.combineFilledItem(ItemBuilder.of(XMaterial.ANVIL, 22, 1, "&aCombine Items", Arrays.asList("&7Combine the items in the slots", "&7to the left and right below.", "",
"&7Cost: %anvil_enchant_exp_cost%", "&7Cost: %anvil_enchant_money_cost%", "", "&eClick to combine!"))
.enchanted(true).build())

.combinedErrorItem(ItemBuilder.of(XMaterial.BARRIER, 13, 1, "&cError", Collections.singletonList("%anvil_error%")).build())
//Result
.combinedItemFilled(ItemBuilder.of(XMaterial.STONE, 13, 1, "&f%anvil_result_item_displayname%", Arrays.asList("%anvil_result_item_lore%", "&8————————————————————", "&aThis is the item you will get.", "&aClick the &cANVIL BELOW &ato", "&acombine."))
.build())
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@
import com.qualityplus.anvil.api.session.AnvilSession;
import com.qualityplus.anvil.api.session.AnvilSession.SessionResult;
import com.qualityplus.anvil.base.gui.AnvilGUI;
import com.qualityplus.anvil.base.gui.anvilmain.handler.ClickHandler;
import com.qualityplus.anvil.base.gui.anvilmain.handler.MainClickHandler;
import com.qualityplus.anvil.base.gui.anvilmain.handler.NormalClickHandler;
import com.qualityplus.anvil.base.gui.anvilmain.handler.ShiftClickHandler;
import com.qualityplus.anvil.base.gui.anvilmain.factory.ClickRequestStrategyFactoryImpl;
import com.qualityplus.anvil.base.gui.anvilmain.factory.ClickRequestStrategyFactory;
import com.qualityplus.anvil.base.gui.anvilmain.request.ClickRequest;
import com.qualityplus.anvil.util.AnvilFinderUtil;
import com.qualityplus.assistant.api.util.BukkitItemUtil;
import com.qualityplus.assistant.api.util.IPlaceholder;
Expand All @@ -19,7 +18,6 @@
import com.qualityplus.assistant.util.placeholder.PlaceholderBuilder;
import lombok.Getter;
import lombok.Setter;
import org.bukkit.Bukkit;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
Expand All @@ -33,41 +31,30 @@
import java.util.*;

public final class AnvilMainGUI extends AnvilGUI {
private final ClickRequestStrategyFactory strategyFactory;
private @Getter final AnvilMainGUIConfig config;
private @Setter boolean giveItem = true;
private final ClickHandler handler;
private final AnvilSession session;

public AnvilMainGUI(Box box, AnvilSession session) {
public AnvilMainGUI(final Box box, final AnvilSession session) {
super(box.files().inventories().enchantMainGUI, box);

this.handler = new MainClickHandler(new NormalClickHandler(box, this, session), new ShiftClickHandler(box, this, session));
this.strategyFactory = new ClickRequestStrategyFactoryImpl();
this.config = box.files().inventories().enchantMainGUI;
this.session = session;
}

@Override
public void onInventoryClick(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();

if(getTarget(event).equals(ClickTarget.INSIDE)){
int slot = event.getSlot();


if(isItem(slot, config.getCloseGUI())) {
event.setCancelled(true);
player.closeInventory();
}else if(slot == config.getToUpgradeSlot() || slot == config.getToSacrificeSlot() || slot == config.getCombineFilledItem().slot || slot == config.getCombinedFilledItem().slot) {
handler.handle(event);
}else {
event.setCancelled(true);

}
}else{

handler.handleOutSide(event);

}
public void onInventoryClick(final InventoryClickEvent event) {
final ClickRequest request = ClickRequest.builder()
.box(this.box)
.config(this.config)
.event(event)
.gui(this)
.session(this.session)
.build();

this.strategyFactory.getStrategy(request).ifPresent(clickRequestStrategy -> clickRequestStrategy.execute(request));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.qualityplus.anvil.base.gui.anvilmain.factory;

import com.qualityplus.anvil.base.gui.anvilmain.request.ClickRequest;
import com.qualityplus.anvil.base.gui.anvilmain.strategy.ClickRequestStrategy;

import java.util.Optional;

public interface ClickRequestStrategyFactory {
public Optional<ClickRequestStrategy> getStrategy(final ClickRequest request);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.qualityplus.anvil.base.gui.anvilmain.factory;

import com.google.common.collect.ImmutableSet;
import com.qualityplus.anvil.base.gui.anvilmain.request.ClickRequest;
import com.qualityplus.anvil.base.gui.anvilmain.strategy.ClickRequestStrategy;
import com.qualityplus.anvil.base.gui.anvilmain.strategy.gui.normal.NormalClickToCombineRequestStrategy;
import com.qualityplus.anvil.base.gui.anvilmain.strategy.gui.normal.NormalPickUpRequestStrategy;
import com.qualityplus.anvil.base.gui.anvilmain.strategy.gui.normal.NormalUpgradeAndSacrificeRequestStrategy;
import com.qualityplus.anvil.base.gui.anvilmain.strategy.gui.shift.ShiftClickToCombineRequestStrategy;
import com.qualityplus.anvil.base.gui.anvilmain.strategy.gui.shift.ShiftPickUpRequestStrategy;
import com.qualityplus.anvil.base.gui.anvilmain.strategy.gui.shift.ShiftUpgradeAndSacrificeRequestStrategy;
import com.qualityplus.anvil.base.gui.anvilmain.strategy.player.normal.NormalPlayerClickRequestStrategy;
import com.qualityplus.anvil.base.gui.anvilmain.strategy.player.shift.ShiftPlayerClickRequestStrategy;

import java.util.Optional;
import java.util.Set;

public class ClickRequestStrategyFactoryImpl implements ClickRequestStrategyFactory {
private static final ClickRequestStrategy NORMAL_UPGRADE_AND_SACRIFICE = new NormalUpgradeAndSacrificeRequestStrategy();
private static final ClickRequestStrategy SHIFT_UPGRADE_AND_SACRIFICE = new ShiftUpgradeAndSacrificeRequestStrategy();
private static final ClickRequestStrategy NORMAL_CLICK_TO_COMBINE = new NormalClickToCombineRequestStrategy();
private static final ClickRequestStrategy SHIFT_CLICK_TO_COMBINE = new ShiftClickToCombineRequestStrategy();
private static final ClickRequestStrategy PLAYER_NORMAL_CLICK = new NormalPlayerClickRequestStrategy();
private static final ClickRequestStrategy PLAYER_SHIFT_CLICK = new ShiftPlayerClickRequestStrategy();
private static final ClickRequestStrategy NORMAL_PICK_UP = new NormalPickUpRequestStrategy();
private static final ClickRequestStrategy SHIFT_PICK_UP = new ShiftPickUpRequestStrategy();

public static final Set<ClickRequestStrategy> STRATEGIES_LIST = ImmutableSet.of(
NORMAL_UPGRADE_AND_SACRIFICE,
SHIFT_UPGRADE_AND_SACRIFICE,
NORMAL_CLICK_TO_COMBINE,
SHIFT_CLICK_TO_COMBINE,
PLAYER_NORMAL_CLICK,
PLAYER_SHIFT_CLICK,
NORMAL_PICK_UP,
SHIFT_PICK_UP
);

@Override
public Optional<ClickRequestStrategy> getStrategy(final ClickRequest request) {
return STRATEGIES_LIST.stream()
.filter(strategy -> strategy.applies(request))
.findFirst();
}
}

This file was deleted.

This file was deleted.

This file was deleted.

0 comments on commit 255a43d

Please sign in to comment.