Skip to content

Commit 46ddbca

Browse files
committed
updates
1 parent dce68de commit 46ddbca

File tree

11 files changed

+167
-27
lines changed

11 files changed

+167
-27
lines changed

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
plugins {
22
id("io.papermc.paperweight.userdev") version "2.0.0-beta.19"
33
java
4-
id("com.gradleup.shadow") version "8.3.3"
4+
id("com.gradleup.shadow") version "9.3.0"
55
}
66

77
group = "net.azisaba.afnw"
8-
version = "2.0.0-SNAPSHOT"
8+
version = "2.1.0-SNAPSHOT"
99

1010
repositories {
1111
mavenCentral()

src/main/java/net/azisaba/afnw/afnwcore2/AfnwCore2.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,16 @@
1515
import net.azisaba.afnw.afnwcore2.util.TheTAB;
1616
import net.azisaba.afnw.afnwcore2.util.data.PlayerData;
1717
import net.azisaba.afnw.afnwcore2.util.data.PlayerDataSave;
18+
import net.kyori.adventure.text.Component;
19+
import net.kyori.adventure.text.format.NamedTextColor;
1820
import net.minecraft.core.registries.BuiltInRegistries;
1921
import net.minecraft.world.entity.ai.attributes.Attributes;
2022
import net.minecraft.world.entity.ai.attributes.RangedAttribute;
2123
import org.bukkit.Bukkit;
2224
import org.bukkit.World;
2325
import org.bukkit.craftbukkit.entity.CraftDolphin;
2426
import org.bukkit.entity.Dolphin;
27+
import org.bukkit.entity.Player;
2528
import org.bukkit.plugin.PluginManager;
2629
import org.bukkit.plugin.java.JavaPlugin;
2730
import org.jetbrains.annotations.NotNull;
@@ -75,6 +78,7 @@ public void onEnable() {
7578
pluginEvent.registerEvents(new PvPListener(this), this);
7679
pluginEvent.registerEvents(new BlessedRandomTeleporterListener(), this);
7780
pluginEvent.registerEvents(new FishingListener(), this);
81+
pluginEvent.registerEvents(new TrashListener(this), this);
7882
/* エンティティリスナー */
7983
pluginEvent.registerEvents(new WitherSpawn(this), this);
8084
pluginEvent.registerEvents(new DropShardListener(), this);
@@ -125,10 +129,18 @@ public void onEnable() {
125129
for (World world : Bukkit.getWorlds()) {
126130
for (Dolphin entity : world.getEntitiesByClass(Dolphin.class)) {
127131
// Prevent DolphinSwimToTreasureGoal from being triggered
128-
((CraftDolphin) entity).getHandle().goalSelector.removeAllGoals(goal -> goal.getClass().getTypeName().equals("net.minecraft.world.entity.animal.EntityDolphin$a"));
132+
((CraftDolphin) entity).getHandle().goalSelector.removeAllGoals(goal -> goal.getClass().getTypeName().equals("net.minecraft.world.entity.animal.EntityDolphin$a") ||
133+
goal.getClass().getTypeName().equals("net.minecraft.world.entity.animal.dolphin.Dolphin$DolphinSwimToTreasureGoal"));
129134
}
130135
}
131-
}, 5, 5);
136+
for (Player player : Bukkit.getOnlinePlayers()) {
137+
boolean pvp = pvpEnabled.contains(player.getUniqueId());
138+
player.sendActionBar(
139+
Component.text("⚔ PvP: ")
140+
.append(Component.text(pvp ? "有効" : "無効", pvp ? NamedTextColor.RED : NamedTextColor.GREEN))
141+
);
142+
}
143+
}, 10, 10);
132144

133145
var optionalAttributeReference = Objects.requireNonNull(BuiltInRegistries.ATTRIBUTE.get(Attributes.LUCK.unwrap().left().orElseThrow()));
134146
optionalAttributeReference.ifPresent(attributeReference -> {

src/main/java/net/azisaba/afnw/afnwcore2/commands/AfnwCommand.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import net.azisaba.afnw.afnwcore2.util.data.PlayerData;
1111
import net.azisaba.afnw.afnwcore2.util.item.AfnwScaffold;
1212
import net.azisaba.afnw.afnwcore2.util.item.AfnwTicket;
13+
import net.azisaba.afnw.afnwcore2.util.item.ItemUtil;
1314
import net.kyori.adventure.text.Component;
1415
import net.kyori.adventure.text.format.NamedTextColor;
1516
import org.bukkit.Material;
@@ -41,7 +42,8 @@ private static boolean isAllowed(Material type) {
4142
return switch (type) {
4243
case BEDROCK, STRUCTURE_BLOCK, STRUCTURE_VOID, COMMAND_BLOCK, CHAIN_COMMAND_BLOCK, COMMAND_BLOCK_MINECART,
4344
REPEATING_COMMAND_BLOCK, BARRIER, LIGHT, JIGSAW, END_PORTAL, KNOWLEDGE_BOOK, DEBUG_STICK,
44-
AIR, VOID_AIR, CAVE_AIR, BUNDLE -> false;
45+
TEST_INSTANCE_BLOCK, TEST_BLOCK,
46+
AIR, VOID_AIR, CAVE_AIR -> false;
4547
default -> true;
4648
};
4749
}
@@ -135,14 +137,16 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
135137
ItemStack afnwItem = getRandomItem(luck, itemSize);
136138

137139
inv.removeItem(AfnwTicket.afnwTicket);
138-
inv.addItem(afnwItem);
140+
for (ItemStack value : inv.addItem(afnwItem).values()) {
141+
ItemUtil.addToStashIfEnabledAsync(plugin, ((Player) sender).getUniqueId(), value);
142+
}
139143
for (int i = 0; i < scaffoldSize; i++) {
140144
inv.addItem(AfnwScaffold.afnwScaffold);
141145
}
142146

143147
sender.sendMessage(Component.text("アイテムと交換しました。").color(NamedTextColor.GOLD));
144148
sender.sendMessage(Component.text(
145-
"交換内容: " + afnwItem.getType() + " ×" + afnwItem.getAmount() + ", 足場ブロック ×" + scaffoldSize)
149+
"交換内容: " + afnwItem.getType() + " ×" + itemSize + "足場ブロック ×" + scaffoldSize)
146150
.color(NamedTextColor.GOLD));
147151
return true;
148152
}
Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package net.azisaba.afnw.afnwcore2.commands;
22

3+
import net.azisaba.afnw.afnwcore2.gui.TrashInventory;
34
import net.kyori.adventure.text.Component;
45
import net.kyori.adventure.text.format.NamedTextColor;
5-
import org.bukkit.Bukkit;
66
import org.bukkit.command.Command;
77
import org.bukkit.command.CommandExecutor;
88
import org.bukkit.command.CommandSender;
9-
import org.bukkit.configuration.file.FileConfiguration;
109
import org.bukkit.entity.Player;
1110
import org.bukkit.plugin.java.JavaPlugin;
1211
import org.jetbrains.annotations.NotNull;
@@ -29,19 +28,7 @@ public boolean onCommand(@NotNull CommandSender sender, Command command, @NotNul
2928
return false;
3029
}
3130

32-
FileConfiguration config = plugin.getConfig();
33-
String trashName = config.getString("trash.name", "ゴミ箱");
34-
int trashSize = config.getInt("trash.size", 54);
35-
if (trashSize % 9 == 0) {
36-
config.set("trash.size", 54);
37-
}
38-
39-
trashGUI(p, trashSize, trashName);
31+
p.openInventory(new TrashInventory().getInventory());
4032
return true;
4133
}
42-
43-
public void trashGUI(Player p, int size, String name) {
44-
p.openInventory(
45-
Bukkit.createInventory(null, size, Component.text(name, NamedTextColor.DARK_PURPLE)));
46-
}
4734
}

src/main/java/net/azisaba/afnw/afnwcore2/commands/VoteCommand.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
3737
ChatColor.GOLD +
3838
"""
3939
投票よろしくお願いします!
40-
・monocraft
41-
https://monocraft.net/servers/xWBVrf1nqB2P0LxlMm2v
4240
・JMS
4341
https://minecraft.jp/servers/azisaba.net
4442
"""
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package net.azisaba.afnw.afnwcore2.gui;
2+
3+
import net.kyori.adventure.text.Component;
4+
import net.kyori.adventure.text.format.NamedTextColor;
5+
import org.bukkit.Bukkit;
6+
import org.bukkit.Material;
7+
import org.bukkit.inventory.Inventory;
8+
import org.bukkit.inventory.InventoryHolder;
9+
import org.bukkit.inventory.ItemStack;
10+
import org.bukkit.inventory.meta.ItemMeta;
11+
import org.jetbrains.annotations.NotNull;
12+
13+
public class TrashInventory implements InventoryHolder {
14+
public static final ItemStack trashItem = new ItemStack(Material.BARRIER);
15+
private final Inventory inventory = Bukkit.createInventory(this, 54, Component.text("ゴミ箱", NamedTextColor.RED));
16+
17+
static {
18+
ItemMeta meta = trashItem.getItemMeta();
19+
meta.displayName(Component.text("ゴミを捨てる", NamedTextColor.RED));
20+
trashItem.setItemMeta(meta);
21+
}
22+
23+
public TrashInventory() {
24+
inventory.setItem(53, trashItem);
25+
}
26+
27+
@NotNull
28+
@Override
29+
public Inventory getInventory() {
30+
return inventory;
31+
}
32+
}

src/main/java/net/azisaba/afnw/afnwcore2/listeners/other/VoteListener.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,16 @@
1616
import org.bukkit.event.Listener;
1717
import org.bukkit.inventory.Inventory;
1818
import org.bukkit.inventory.ItemStack;
19+
import org.bukkit.inventory.meta.ItemMeta;
1920

2021
public record VoteListener(AfnwCore2 plugin, PlayerData playerData) implements Listener {
2122
@EventHandler
2223
public void onVote(VotifierEvent e) {
24+
handleVote(e);
25+
handleVote(e);
26+
}
27+
28+
public void handleVote(VotifierEvent e) {
2329
FileConfiguration config = plugin.getConfig();
2430
int ticketSize = config.getInt("vote.send-ticket-size", 1);
2531
int bonusLine = config.getInt("vote.bonus-line", 9);
@@ -50,7 +56,11 @@ public void onVote(VotifierEvent e) {
5056
ItemUtil.addToStashIfEnabledAsync(plugin, sendTarget.getUniqueId(), value);
5157
}
5258
}
53-
for (ItemStack value : inv.addItem(new ItemStack(Material.NETHER_STAR)).values()) {
59+
ItemStack netherStar = new ItemStack(Material.NETHER_STAR);
60+
ItemMeta meta = netherStar.getItemMeta();
61+
meta.displayName(Component.text("投票ボーナス", NamedTextColor.YELLOW));
62+
netherStar.setItemMeta(meta);
63+
for (ItemStack value : inv.addItem(netherStar).values()) {
5464
ItemUtil.addToStashIfEnabledAsync(plugin, sendTarget.getUniqueId(), value);
5565
}
5666
sendTarget.sendMessage(Component.text("* 投票ボーナスとしてチケット10枚とネザースターを獲得しました。")

src/main/java/net/azisaba/afnw/afnwcore2/listeners/player/EnderDragonDisableListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class EnderDragonDisableListener implements Listener {
1212
public void onPlayerInteract(PlayerInteractEvent e) {
1313
if (e.getItem() == null) return;
1414
Material inHand = e.getItem().getType();
15-
if ((inHand == Material.ENDER_DRAGON_SPAWN_EGG/* || inHand == Material.WITHER_SPAWN_EGG*/)
15+
if ((inHand == Material.ENDER_DRAGON_SPAWN_EGG || inHand == Material.WITHER_SPAWN_EGG)
1616
&& !e.getPlayer().getWorld().getName().equals("afnw_the_end")) {
1717
e.setCancelled(true);
1818
}

src/main/java/net/azisaba/afnw/afnwcore2/listeners/player/JoinListener.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.Arrays;
55
import net.azisaba.afnw.afnwcore2.AfnwCore2;
66
import net.azisaba.afnw.afnwcore2.util.data.PlayerData;
7+
import net.azisaba.afnw.afnwcore2.util.item.AfnwTicket;
78
import net.kyori.adventure.text.Component;
89
import net.kyori.adventure.text.format.NamedTextColor;
910
import net.kyori.adventure.title.Title;
@@ -36,9 +37,13 @@ public record JoinListener(JavaPlugin plugin, PlayerData playerData) implements
3637
public void onJoin(PlayerJoinEvent e) {
3738
Player p = e.getPlayer();
3839

39-
// 初参加の場合はSuper Afnw Ticketを渡す
40+
// 初参加の場合
4041
if (!playerData.getPlayerData().getBoolean("players." + p.getUniqueId() + ".first-join", false)) {
4142
playerData.getPlayerData().set("players." + p.getUniqueId() + ".first-join", true);
43+
e.getPlayer().getInventory().addItem(AfnwTicket.afnwTicket);
44+
e.getPlayer().getInventory().addItem(AfnwTicket.afnwTicket);
45+
e.getPlayer().getInventory().addItem(AfnwTicket.afnwTicket);
46+
e.getPlayer().getInventory().addItem(AfnwTicket.afnwTicket);
4247
Bukkit.getScheduler().runTaskAsynchronously(plugin, playerData::savePlayerData);
4348
}
4449

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package net.azisaba.afnw.afnwcore2.listeners.player;
2+
3+
import net.azisaba.afnw.afnwcore2.AfnwCore2;
4+
import net.azisaba.afnw.afnwcore2.gui.TrashInventory;
5+
import net.azisaba.afnw.afnwcore2.util.item.ItemUtil;
6+
import net.kyori.adventure.text.Component;
7+
import net.kyori.adventure.text.format.NamedTextColor;
8+
import org.bukkit.event.EventHandler;
9+
import org.bukkit.event.Listener;
10+
import org.bukkit.event.inventory.InventoryClickEvent;
11+
import org.bukkit.event.inventory.InventoryCloseEvent;
12+
import org.bukkit.event.inventory.InventoryDragEvent;
13+
import org.bukkit.inventory.ItemStack;
14+
import org.jetbrains.annotations.NotNull;
15+
16+
import java.util.ArrayList;
17+
import java.util.List;
18+
19+
public record TrashListener(@NotNull AfnwCore2 plugin) implements Listener {
20+
@EventHandler
21+
public void onInventoryClick(InventoryClickEvent e) {
22+
if (e.getClickedInventory() == null || !(e.getClickedInventory().getHolder() instanceof TrashInventory)) {
23+
return;
24+
}
25+
if (e.getSlot() != 53) {
26+
return;
27+
}
28+
e.getInventory().setItem(53, null);
29+
int count = 0;
30+
List<ItemStack> items = new ArrayList<>();
31+
for (ItemStack item : e.getInventory().getContents()) {
32+
if (item == null || item.getAmount() <= 0) continue;
33+
count += item.getAmount();
34+
items.add(item.clone());
35+
item.setAmount(0);
36+
}
37+
e.getWhoClicked().sendMessage(Component.text("ゴミ箱に" + count + "個のアイテムを捨てました。", NamedTextColor.YELLOW));
38+
plugin.getSLF4JLogger().info("Player {} has trashed {} items:", e.getWhoClicked().getName(), count);
39+
for (ItemStack item : items) {
40+
plugin.getSLF4JLogger().info(" {}", ItemUtil.toString(item));
41+
e.getWhoClicked().sendMessage(Component.text(" " + ItemUtil.toString(item), NamedTextColor.GRAY));
42+
}
43+
e.getClickedInventory().clear();
44+
e.getWhoClicked().closeInventory();
45+
}
46+
47+
@EventHandler
48+
public void onInventoryDrag(InventoryDragEvent e) {
49+
if (e.getInventory().getHolder() instanceof TrashInventory) {
50+
e.setCancelled(true);
51+
}
52+
}
53+
54+
@EventHandler
55+
public void onInventoryClose(InventoryCloseEvent e) {
56+
if (!(e.getInventory().getHolder() instanceof TrashInventory)) {
57+
return;
58+
}
59+
e.getInventory().setItem(53, null);
60+
boolean stash = false;
61+
for (ItemStack item : e.getInventory().getContents()) {
62+
if (item == null || item.getAmount() <= 0) continue;
63+
for (ItemStack value : e.getPlayer().getInventory().addItem(item).values()) {
64+
ItemUtil.addToStashIfEnabledAsync(plugin, e.getPlayer().getUniqueId(), value);
65+
stash = true;
66+
}
67+
}
68+
if (stash) {
69+
e.getPlayer().sendMessage(Component.text("インベントリがいっぱいのため、Stashに保管されました。", NamedTextColor.RED));
70+
e.getPlayer().sendMessage(Component.text("/pickupstash", NamedTextColor.AQUA).append(Component.text("で回収できます。", NamedTextColor.RED)));
71+
}
72+
}
73+
}

0 commit comments

Comments
 (0)