Skip to content

Commit 01a6018

Browse files
committed
途中経過
1 parent e14430d commit 01a6018

File tree

12 files changed

+402
-61
lines changed

12 files changed

+402
-61
lines changed

pom.xml

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
<artifactId>maven-compiler-plugin</artifactId>
2525
<version>3.8.1</version>
2626
<configuration>
27-
<source>${java.version}</source>
28-
<target>${java.version}</target>
27+
<source>16</source>
28+
<target>16</target>
2929
</configuration>
3030
</plugin>
3131
<plugin>
@@ -74,6 +74,14 @@
7474
<id>jitpack.io</id>
7575
<url>https://jitpack.io</url>
7676
</repository>
77+
<repository>
78+
<id>everything</id>
79+
<url>https://repo.citizensnpcs.co/</url>
80+
</repository>
81+
<repository>
82+
<id>aikar</id>
83+
<url>https://repo.aikar.co/content/groups/aikar/</url>
84+
</repository>
7785
</repositories>
7886

7987
<dependencies>
@@ -89,5 +97,17 @@
8997
<version>d3c6df5da9</version>
9098
<scope>compile</scope>
9199
</dependency>
100+
<dependency>
101+
<groupId>net.citizensnpcs</groupId>
102+
<artifactId>citizens-main</artifactId>
103+
<version>2.0.29-SNAPSHOT</version>
104+
<type>jar</type>
105+
<scope>provided</scope>
106+
</dependency>
107+
<dependency>
108+
<groupId>co.aikar</groupId>
109+
<artifactId>acf-paper</artifactId>
110+
<version>0.5.1-SNAPSHOT</version>
111+
</dependency>
92112
</dependencies>
93113
</project>

src/main/java/com/github/elic0de/hungergames/HungerGames.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package com.github.elic0de.hungergames;
22

3+
import co.aikar.commands.PaperCommandManager;
34
import com.github.elic0de.eliccommon.plugin.AbstractPlugin;
5+
import com.github.elic0de.hungergames.command.HungerCommand;
46
import com.github.elic0de.hungergames.game.HungerGame;
7+
import com.github.elic0de.hungergames.listener.EventListener;
8+
import com.github.elic0de.hungergames.user.GameUserManager;
9+
import org.bukkit.Bukkit;
510

611
public final class HungerGames extends AbstractPlugin {
712

@@ -19,11 +24,25 @@ public void onLoad() {
1924
public void onEnable() {
2025
// Plugin startup logic
2126
game = new HungerGame();
27+
28+
registerCommands();
29+
30+
Bukkit.getPluginManager().registerEvents(new EventListener(), this);
31+
GameUserManager.getOnlineUsers().forEach(player -> game.join(player));
2232
}
2333

2434
@Override
2535
public void onDisable() {
2636
// Plugin shutdown logic
37+
GameUserManager.getOnlineUsers().forEach(player -> game.leave(player));
38+
Bukkit.getScheduler().cancelTasks(this);
39+
}
40+
41+
private void registerCommands() {
42+
PaperCommandManager commandManager = new PaperCommandManager(this);
43+
44+
commandManager.enableUnstableAPI("brigadier");
45+
commandManager.registerCommand(new HungerCommand());
2746
}
2847

2948
public HungerGame getGame() {

src/main/java/com/github/elic0de/hungergames/border/GameBorder.java

Lines changed: 0 additions & 30 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.github.elic0de.hungergames.command;
2+
3+
import co.aikar.commands.BaseCommand;
4+
import co.aikar.commands.annotation.CommandAlias;
5+
import co.aikar.commands.annotation.Subcommand;
6+
import com.github.elic0de.hungergames.HungerGames;
7+
import com.github.elic0de.hungergames.game.HungerGame;
8+
import com.github.elic0de.hungergames.game.phase.WaitingPhase;
9+
import org.bukkit.entity.Player;
10+
11+
@CommandAlias("hungergames|hg")
12+
public class HungerCommand extends BaseCommand {
13+
14+
private final HungerGame game = HungerGames.getInstance().getGame();
15+
16+
@Subcommand("start")
17+
private void start(Player player) {
18+
game.startGame(player);
19+
}
20+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.github.elic0de.hungergames.dragon;
2+
3+
import com.github.elic0de.hungergames.HungerGames;
4+
import net.citizensnpcs.api.trait.Trait;
5+
import net.citizensnpcs.npc.CitizensNPC;
6+
import org.bukkit.Location;
7+
import org.bukkit.WorldBorder;
8+
import org.bukkit.scheduler.BukkitRunnable;
9+
10+
import java.util.*;
11+
import java.util.concurrent.atomic.AtomicInteger;
12+
13+
public class DragonTrait extends Trait {
14+
15+
private final Map<Integer, Location> locations = new HashMap<>();
16+
private final AtomicInteger index = new AtomicInteger();
17+
18+
public DragonTrait(WorldBorder worldBorder) {
19+
super("dragonTrait");
20+
final Location origin = worldBorder.getCenter();
21+
final double gap = worldBorder.getSize()/2;
22+
final Location start = new Location(origin.getWorld(), origin.getX() + gap, 130, origin.getZ() + gap);
23+
for(int i = 0; i <= worldBorder.getSize(); i+=50){
24+
locations.put(index.incrementAndGet(), start.clone().subtract(i, 0, i));
25+
}
26+
index.set(1);
27+
}
28+
29+
@Override
30+
public void run() {
31+
new BukkitRunnable() {
32+
@Override
33+
public void run() {
34+
if (locations.get(index.get()) == null) {
35+
HungerGames.getInstance().getGame().startBorder();
36+
npc.destroy();
37+
cancel();
38+
return;
39+
}
40+
if (npc.getNavigator().isNavigating()) return;
41+
if (npc.isSpawned()) npc.getNavigator().setTarget(locations.get(index.incrementAndGet()));
42+
}
43+
}.runTaskTimer(HungerGames.getInstance(), 0, 20);
44+
}
45+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.github.elic0de.hungergames.game;
2+
3+
import com.github.elic0de.hungergames.HungerGames;
4+
import org.bukkit.Bukkit;
5+
import org.bukkit.WorldBorder;
6+
import org.bukkit.scheduler.BukkitRunnable;
7+
import org.bukkit.scheduler.BukkitTask;
8+
9+
import java.util.concurrent.atomic.AtomicLong;
10+
11+
public class GameBorder {
12+
13+
private final HungerGame game;
14+
15+
private final GameBossBar bossBar;
16+
private final WorldBorder border = Bukkit.getWorlds().get(0).getWorldBorder();
17+
private final double MAX_BORDER_SIZE = 500;
18+
19+
private BukkitTask borderTask;
20+
21+
private final AtomicLong borderTicks = new AtomicLong();
22+
23+
public GameBorder(HungerGame game) {
24+
this.game = game;
25+
this.bossBar = game.getBossBar();
26+
border.setDamageBuffer(1);
27+
border.setSize(MAX_BORDER_SIZE);
28+
}
29+
30+
public void start() {
31+
reset();
32+
double MIN_BORDER_SIZE = 16;
33+
border.setSize(MIN_BORDER_SIZE, 900);
34+
35+
final long PERIOD = 20;
36+
final long timeInSeconds = 900;
37+
borderTicks.set(0);
38+
if (borderTask != null) borderTask.cancel();
39+
borderTask = new BukkitRunnable() {
40+
@Override
41+
public void run() {
42+
if (borderTicks.incrementAndGet() >= timeInSeconds) {
43+
bossBar.hide();
44+
cancel();
45+
return;
46+
}
47+
bossBar.setBossBar("残りのプレイヤー数表示 &6" + (game.getPlayers().size() - game.getDeadPlayers().size()));
48+
bossBar.setProgress((double) Math.max(timeInSeconds - borderTicks.get(), 0)/timeInSeconds);
49+
}
50+
}.runTaskTimer(HungerGames.getInstance(), 0, PERIOD);
51+
}
52+
53+
public void stop() {
54+
border.setSize(border.getSize());
55+
}
56+
57+
public void reset() {
58+
border.setSize(MAX_BORDER_SIZE);
59+
if (borderTask != null) borderTask.cancel();
60+
borderTicks.set(0);
61+
bossBar.hide();
62+
}
63+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.github.elic0de.hungergames.game;
2+
3+
import com.github.elic0de.hungergames.user.GameUser;
4+
import org.bukkit.Bukkit;
5+
import org.bukkit.ChatColor;
6+
import org.bukkit.boss.BarColor;
7+
import org.bukkit.boss.BarStyle;
8+
import org.bukkit.boss.BossBar;
9+
import org.jetbrains.annotations.NotNull;
10+
11+
public final class GameBossBar {
12+
13+
private final @NotNull BossBar bossBar;
14+
15+
public GameBossBar() {
16+
this.bossBar = Bukkit.createBossBar("", BarColor.GREEN, BarStyle.SOLID);
17+
this.bossBar.setVisible(false);
18+
this.bossBar.setProgress(1);
19+
this.bossBar.setStyle(BarStyle.SEGMENTED_20);
20+
this.bossBar.setColor(BarColor.YELLOW);
21+
}
22+
23+
public void addPlayer(@NotNull GameUser user) {
24+
bossBar.addPlayer(user.getPlayer());
25+
}
26+
27+
public void removePlayer(@NotNull GameUser user) {
28+
bossBar.removePlayer(user.getPlayer());
29+
}
30+
31+
public void reset() {
32+
bossBar.removeAll();
33+
}
34+
35+
public void setBossBar(@NotNull String title) {
36+
final String coloredTitle = ChatColor.translateAlternateColorCodes('&', title);
37+
bossBar.setTitle(coloredTitle);
38+
this.bossBar.setVisible(true);
39+
}
40+
41+
public void setProgress(double progress) {
42+
bossBar.setProgress(progress);
43+
}
44+
45+
public void hide() {
46+
bossBar.setVisible(false);
47+
}
48+
}

0 commit comments

Comments
 (0)