Skip to content

Commit e8d14d2

Browse files
Merge pull request #12 from the-codeboy/bound-item
Bound item
2 parents 70e1ee9 + cef63e7 commit e8d14d2

File tree

6 files changed

+85
-3
lines changed

6 files changed

+85
-3
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
<dependency>
100100
<groupId>com.github.the-codeboy</groupId>
101101
<artifactId>BukkitBootstrap</artifactId>
102-
<version>f6879926bc</version>
102+
<version>f821d5e8d4</version>
103103
</dependency>
104104
</dependencies>
105105
</project>

src/main/java/com/github/codeboy/mcide/Mcide.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
package com.github.codeboy.mcide;
22

3+
import com.github.codeboy.mcide.commands.BoundItemCommand;
34
import com.github.codeboy.mcide.commands.CreateProject;
45
import com.github.codeboy.mcide.commands.IdeCommand;
56
import com.github.codeboy.mcide.commands.RunCommand;
67
import com.github.codeboy.mcide.config.Config;
78
import com.github.codeboy.mcide.config.Message;
9+
import com.github.codeboy.mcide.services.CustomItemEventManager;
810
import com.github.codeboy.piston4j.api.ExecutionOutput;
911
import com.github.codeboy.piston4j.api.ExecutionResult;
1012
import com.github.codeboy.piston4j.api.Piston;
1113
import com.google.gson.Gson;
14+
import ml.codeboy.bukkitbootstrap.CustomItem;
1215
import ml.codeboy.bukkitbootstrap.config.ConfigReader;
1316
import org.bukkit.ChatColor;
17+
import org.bukkit.Material;
1418
import org.bukkit.command.Command;
1519
import org.bukkit.command.CommandSender;
1620
import org.bukkit.event.EventHandler;
1721
import org.bukkit.event.Listener;
1822
import org.bukkit.event.player.PlayerJoinEvent;
1923
import org.bukkit.plugin.java.JavaPlugin;
2024

25+
import javax.management.InstanceAlreadyExistsException;
2126
import java.io.File;
2227
import java.util.Arrays;
2328
import java.util.List;
@@ -38,7 +43,6 @@ public static Piston getPiston() {
3843
@Override
3944
public void onEnable() {
4045
// Plugin startup logic
41-
4246
readConfigs();
4347

4448
piston = Piston.getInstance(Config.pistonEndPoint);
@@ -47,13 +51,16 @@ public void onEnable() {
4751
getCommand("run").setExecutor(new RunCommand());
4852
getCommand("ide").setExecutor(new IdeCommand());
4953
getCommand("create-project").setExecutor(new CreateProject());
54+
getCommand("bound-item").setExecutor(new BoundItemCommand());
5055
getServer().getPluginManager().registerEvents(new Listener() {
5156
@EventHandler
5257
public void onPlayerJoin(PlayerJoinEvent event) {
5358
event.getPlayer().setResourcePack("https://github.com/the-codeboy/mcide/releases/download/latest/mcide.zip");
5459
}
5560
}, this);
5661

62+
getServer().getPluginManager().registerEvents(new CustomItemEventManager(), Mcide.getPlugin(Mcide.class));
63+
5764
}
5865

5966
private void readConfigs() {
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.github.codeboy.mcide.commands;
2+
3+
import com.github.codeboy.mcide.config.Message;
4+
import com.github.codeboy.mcide.ide.gui.ProjectSelector;
5+
import com.github.codeboy.mcide.services.CustomItemEventManager;
6+
import ml.codeboy.bukkitbootstrap.CustomItem;
7+
import org.bukkit.Material;
8+
import org.bukkit.command.Command;
9+
import org.bukkit.command.CommandExecutor;
10+
import org.bukkit.command.CommandSender;
11+
import org.bukkit.entity.Player;
12+
import org.bukkit.event.block.Action;
13+
14+
public class BoundItemCommand implements CommandExecutor {
15+
@Override
16+
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
17+
if (!(sender instanceof Player)) {
18+
return false;
19+
}
20+
Player player = (Player) sender;
21+
CustomItem customItem = CustomItem.createItemOrGet(player.getPlayerListName(), Material.GOLD_HOE, (short) 0);
22+
player.getInventory().addItem(customItem.getItem());
23+
24+
CustomItemEventManager.addInteraction(customItem, event -> {
25+
if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
26+
Player p = event.getPlayer();
27+
event.setCancelled(true);
28+
ProjectSelector menu = new ProjectSelector(p);
29+
menu.open(p);
30+
event.setCancelled(true);
31+
}
32+
});
33+
return true;
34+
}
35+
}

src/main/java/com/github/codeboy/mcide/config/Message.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
"It should be self explanatory where they are used",scope = ConfigScope.PUBLIC)
99
public class Message {
1010

11+
// region CUSTOM_ITEM
12+
public static String
13+
ITEM_PROJECT_SELECTOR = "Open Menu";
14+
// endregion
1115
// region GUI
1216
public static String
1317
RUN_OPTION_TITLE = "Run options",
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.github.codeboy.mcide.services;
2+
3+
import ml.codeboy.bukkitbootstrap.CustomItem;
4+
import org.bukkit.entity.Player;
5+
import org.bukkit.event.EventHandler;
6+
import org.bukkit.event.Listener;
7+
import org.bukkit.event.player.PlayerInteractEvent;
8+
import org.bukkit.inventory.ItemStack;
9+
10+
import java.util.HashMap;
11+
import java.util.function.Consumer;
12+
13+
public class CustomItemEventManager implements Listener {
14+
15+
private static final HashMap<CustomItem, Consumer<PlayerInteractEvent>> interactions = new HashMap<>();
16+
17+
@EventHandler
18+
public void onPlayerUse(PlayerInteractEvent event) {
19+
Player player = event.getPlayer();
20+
ItemStack item = player.getItemInHand();
21+
for(CustomItem customItem:interactions.keySet()){
22+
if (customItem.itemIsInstance(item)) {
23+
interactions.get(customItem).accept(event);
24+
}
25+
}
26+
}
27+
28+
public static boolean addInteraction(CustomItem customItem,Consumer<PlayerInteractEvent> interaction){
29+
if(interactions.containsKey(customItem)){
30+
return false;
31+
}
32+
interactions.put(customItem,interaction);
33+
return true;
34+
}
35+
}

src/main/resources/plugin.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ website: https://github.com/the-codeboy
77
commands:
88
run:
99
ide:
10-
create-project:
10+
create-project:
11+
bound-item:

0 commit comments

Comments
 (0)