Skip to content

Commit

Permalink
changed geyser module type
Browse files Browse the repository at this point in the history
Changed Geyser style.

- Now it's not opens GUI for Geyser.
- Added sell&sell all command for selling items.
  • Loading branch information
poyrazinan committed Aug 20, 2024
1 parent 75d87dc commit 3e56c80
Show file tree
Hide file tree
Showing 9 changed files with 190 additions and 67 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package xyz.geik.farmer.api.handlers;

import lombok.Getter;
import lombok.Setter;
import org.bukkit.OfflinePlayer;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
Expand Down Expand Up @@ -34,6 +35,14 @@ public class FarmerItemSellEvent extends Event {
*/
private final OfflinePlayer offlinePlayer;

/**
* Is sell type is geyser
* @see xyz.geik.farmer.modules.geyser.Geyser
*/
@Getter
@Setter
private boolean isGeyser = false;

/**
* FarmerItemSellEvent constructor with Farmer, FarmerItem and OfflinePlayer
*
Expand Down

This file was deleted.

3 changes: 3 additions & 0 deletions src/main/java/xyz/geik/farmer/configuration/ModulesFile.java
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,9 @@ public static class Geyser extends OkaeriConfig {
@Comment({"if you want to use geyser module",
"set feature to true."})
private boolean status = false;

@Comment({"Sell-all Args"})
private List<String> sellAllCommands = Arrays.asList("all", "whole", "hepsi");
}

@Comment("Spawner Killer Module")
Expand Down
7 changes: 0 additions & 7 deletions src/main/java/xyz/geik/farmer/guis/MainGui.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,13 +93,6 @@ public static void showGui(Player player, Farmer farmer) {
assert cursorItem != null;
XMaterial material = XMaterial.matchXMaterial(cursorItem);
FarmerItem slotItem = farmer.getInv().getStockedItem(material);
// If player is bedrock player go to geyser gui
if (ModuleManager.getModule("Geyser").isEnabled()) {
if (player.getUniqueId().toString().startsWith("00000000-")) {
GeyserGui.showGui(player, cursorItem, material, farmer, slotItem);
return false;
}
}
// Sells all stock of an item
if (click.getType().equals(ClickType.SHIFT_RIGHT)) {
if (slotItem.getPrice() < 0)
Expand Down
5 changes: 1 addition & 4 deletions src/main/java/xyz/geik/farmer/helpers/CacheLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import org.bukkit.Bukkit;
import xyz.geik.farmer.Main;
import xyz.geik.farmer.api.handlers.FarmerPreLoadItemEvent;
import xyz.geik.farmer.model.FarmerLevel;
import xyz.geik.farmer.model.inventory.FarmerInv;
import xyz.geik.farmer.model.inventory.FarmerItem;
Expand Down Expand Up @@ -33,9 +32,7 @@ public static void loadAllItems() {
}
double price = config.contains("Items." + key + ".price") ? config.getDouble("Items." + key + ".price") : -1.0;
FarmerItem defaultItem = new FarmerItem(key, price, 0);
FarmerPreLoadItemEvent loadingEvent = new FarmerPreLoadItemEvent(defaultItem);
Bukkit.getPluginManager().callEvent(loadingEvent);
FarmerInv.defaultItems.add(loadingEvent.getFarmerItem());
FarmerInv.defaultItems.add(defaultItem);
});
}

Expand Down
22 changes: 22 additions & 0 deletions src/main/java/xyz/geik/farmer/modules/geyser/Geyser.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,13 @@
import lombok.Getter;
import xyz.geik.farmer.Main;
import xyz.geik.farmer.modules.FarmerModule;
import xyz.geik.farmer.modules.geyser.commands.GeyserCommand;
import xyz.geik.farmer.shades.storage.Config;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
* Geyser module main class
*/
Expand All @@ -21,13 +26,30 @@ public Geyser() {}

private Config langFile;

@Getter
private static final HashMap<String,String> nameReplacer = new HashMap<>();
@Getter
private static List<String> sellAllCommands = new ArrayList<>();

/**
* onEnable method of module
*/
public void onEnable() {
instance = this;
if (!Main.getModulesFile().getGeyser().isStatus())
this.setEnabled(false);
this.setLang(Main.getConfigFile().getSettings().getLang(), Main.getInstance());
Main.getCommandManager().registerCommand(new GeyserCommand());
// Adds all the replaces to the replacer
if (!Main.getModulesFile().getGeyser().getSellAllCommands().isEmpty())
sellAllCommands.addAll(Main.getModulesFile().getGeyser().getSellAllCommands());
try {
Geyser.getInstance().getLang().getTextList("sellReplace").forEach(element -> {
String[] parts = element.split(":");
nameReplacer.put(parts[0], parts[1]);
});
}
catch (Exception ignored) {}
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
package xyz.geik.farmer.modules.geyser.commands;

import lombok.RequiredArgsConstructor;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import xyz.geik.farmer.Main;
import xyz.geik.farmer.api.handlers.FarmerItemSellEvent;
import xyz.geik.farmer.api.managers.FarmerManager;
import xyz.geik.farmer.model.Farmer;
import xyz.geik.farmer.model.inventory.FarmerInv;
import xyz.geik.farmer.model.inventory.FarmerItem;
import xyz.geik.farmer.model.user.FarmerPerm;
import xyz.geik.farmer.modules.geyser.Geyser;
import xyz.geik.glib.chat.ChatUtils;
import xyz.geik.glib.module.ModuleManager;
import xyz.geik.glib.shades.triumphteam.cmd.core.BaseCommand;
import xyz.geik.glib.shades.triumphteam.cmd.core.annotation.Command;
import xyz.geik.glib.shades.triumphteam.cmd.core.annotation.Default;
import xyz.geik.glib.shades.triumphteam.cmd.core.annotation.SubCommand;
import xyz.geik.glib.shades.xseries.XMaterial;

import java.util.Arrays;
import java.util.Locale;

/**
* Geyser Commands
*
* @author geyik
*/
@RequiredArgsConstructor
@Command(value = "farmer", alias = {"farm", "çiftçi", "fm", "ciftci"})
public class GeyserCommand extends BaseCommand {

/**
* Base command
* @param sender executor
*/
@Default
public void defaultCommand(CommandSender sender) {
ChatUtils.sendMessage(sender, Main.getLangFile().getMessages().getUnknownCommand());
}

/**
* Sell Basic Command
* @param sender command sender
* @param item item
*/
@SubCommand(value = "sell", alias = {"sat"})
public void sellCommand(CommandSender sender, String item) {
if (!ModuleManager.getModule("Geyser").isEnabled()) {
sender.sendMessage(Geyser.getInstance().getLang().getText("geyserDisabled"));
return;
}
// Checks if sender instanceof player
if (sender instanceof ConsoleCommandSender)
return;
Player player = (Player) sender;
// Checks item dropped in region of a player
// And checks region owner has a farmer
final String regionID;
try {
regionID = Main.getIntegration().getRegionID(((Player) sender).getLocation());
if (regionID == null || !FarmerManager.getFarmers().containsKey(regionID))
return;
Farmer farmer = FarmerManager.getFarmers().get(regionID);
// Sell All command
if (Geyser.getSellAllCommands().stream().anyMatch(cmd -> cmd.equalsIgnoreCase(item)))
executeSellEvent(farmer, player, null);
// Sell only one item command
else
executeSellEvent(farmer, player, item);
}
catch (NullPointerException ignored) {
}
}

/**
* Executes sell event for desired command
* @param farmer region farmer
* @param player target player
* @param item to sell item @nullable
*/
private static void executeSellEvent(Farmer farmer, @NotNull Player player, @Nullable String item) {
// Checks farmer in collection state
if (player.hasPermission("farmer.admin") ||
farmer.getUsers().stream().anyMatch(user -> (
!user.getPerm().equals(FarmerPerm.COOP)
&& user.getName().equalsIgnoreCase(player.getName())))) {
// If replacer matches then replace the item
// Sells only one item
if (item != null) {
if (Geyser.getNameReplacer().containsKey(item))
item = Geyser.getNameReplacer().get(item);
String checkMaterial = item;
// If default items does not contain the material
if (FarmerInv.defaultItems.stream()
.noneMatch(defaultItem -> defaultItem.getMaterial().toString().equalsIgnoreCase(checkMaterial))) {
player.sendMessage(Geyser.getInstance().getLang().getText("cantFindTheItem"));
return;
}
FarmerItem toSell = farmer.getInv().getStockedItem(XMaterial.valueOf(item.toUpperCase(Locale.ENGLISH)));
sellItem(farmer, player, toSell);
}
else {
// Loops all the items
farmer.getInv().getItems().forEach(farmerItem -> sellItem(farmer, player, farmerItem));
}
}
else
player.sendMessage(Geyser.getInstance().getLangFile().getText("noPerm"));
}

/**
* Triggers the sell event
* @param farmer Farmer of region
* @param player executor
* @param item to sell item
*/
private static void sellItem(Farmer farmer, Player player, FarmerItem item) {
// Sell event execution
FarmerItemSellEvent itemSellEvent = new FarmerItemSellEvent(farmer, item, player);
itemSellEvent.setGeyser(true);
Bukkit.getPluginManager().callEvent(itemSellEvent);
}
}
13 changes: 13 additions & 0 deletions src/main/resources/modules/geyser/lang/en.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
geyserDisabled: "&6Farmer &8▸ &cSell command is disabled."
cantFindTheItem: "&6Farmer &8▸ &cItem could not be found."
noPerm: "&6Farmer &8▸ &cYou don't have permission for execute this command."

sellAllCommands:
- "all"
- "whole"
- "entire"

sellReplace:
- "cac:cactus"
- "pota:potato"
- "car:carrot"
13 changes: 13 additions & 0 deletions src/main/resources/modules/geyser/lang/tr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
geyserDisabled: "&6Çiftçi &8▸ &cSat komutu devre dışı."
cantFindTheItem: "&6Çiftçi &8▸ &cEşya bulunamadı!"
noPerm: "&6Çiftçi &8▸ &cBunu yapmak için yetkin yok!"

sellAllCommands:
- "hepsi"
- "tüm"
- "all"

sellReplace:
- "kaktüs:cactus"
- "patates:potato"
- "havuç:carrot"

1 comment on commit 3e56c80

@poyrazinan
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#58

This issue related to this commit

Please sign in to comment.