Skip to content

Commit fa5b87f

Browse files
authored
Version 4.5.0 (#145)
* Version 4.4.3 * Fixes #142 when players can die from falling into barrier (#143) * Version 4.5.0 * Convert to Pladdon * Add modrinth publish Action
1 parent 430b979 commit fa5b87f

File tree

9 files changed

+141
-9
lines changed

9 files changed

+141
-9
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Publish
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
jobs:
8+
publish:
9+
name: Publish
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout repository
13+
uses: actions/checkout@v4
14+
15+
- name: Set up JDK 21
16+
uses: actions/setup-java@v4
17+
with:
18+
java-version: 21
19+
distribution: adopt
20+
cache: maven
21+
22+
# This step will take the version tag from the release and replace it in `pom.xml` before building.
23+
#- name: Set version from release tag
24+
# run: mvn -B versions:set -DnewVersion=${{ github.event.release.tag_name }} -DgenerateBackupPoms=false
25+
26+
- name: Build and package with Maven
27+
run: mvn -B clean package -DskipTests -DgenerateBackupPoms=false -Pmaster --file pom.xml
28+
29+
- name: Upload to Modrinth
30+
uses: cloudnode-pro/modrinth-publish@v2
31+
with:
32+
token: ${{ secrets.MODRINTH_TOKEN }}
33+
project: wvEhk1hC
34+
name: ${{ github.event.release.name }}
35+
version: ${{ github.event.release.tag_name }}
36+
changelog: ${{ github.event.release.body }}
37+
loaders: |-
38+
paper
39+
spigot
40+
game-versions: |-
41+
1.21.4
42+
1.21.5
43+
files: /home/runner/work/BentoBox/Border/target/Border-${{ github.event.release.tag_name }}.jar

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<!-- Revision variable removes warning about dynamic version -->
5151
<revision>${build.version}-SNAPSHOT</revision>
5252
<!-- This allows to change between versions and snapshots. -->
53-
<build.version>4.4.2</build.version>
53+
<build.version>4.5.0</build.version>
5454
<build.number>-LOCAL</build.number>
5555
<!-- Sonar Cloud -->
5656
<sonar.projectKey>BentoBoxWorld_Border</sonar.projectKey>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package world.bentobox.border;
2+
3+
4+
import world.bentobox.bentobox.api.addons.Addon;
5+
import world.bentobox.bentobox.api.addons.Pladdon;
6+
7+
8+
public class BorderPladdon extends Pladdon {
9+
10+
private Border addon;
11+
12+
@Override
13+
public Addon getAddon() {
14+
if (addon == null) {
15+
addon = new Border();
16+
}
17+
return addon;
18+
}
19+
20+
}

src/main/java/world/bentobox/border/PerPlayerBorderProxy.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,14 @@ private BorderType getBorderType(User user) {
7474
private BorderType getDefaultBorderType() {
7575
return addon.getSettings().getType();
7676
}
77+
78+
@Override
79+
public void teleportPlayer(Player player) {
80+
if (getBorderType(User.getInstance(player)) == BorderType.BARRIER) {
81+
customBorder.teleportPlayer(player);
82+
} else {
83+
vanillaBorder.teleportPlayer(player);
84+
}
85+
86+
}
7787
}

src/main/java/world/bentobox/border/listeners/BorderShower.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,10 @@ public default void refreshView(User user, Island island){
4343
// Do nothing
4444
}
4545

46+
/**
47+
* Teleports player back within the island space they are in
48+
* @param player player
49+
*/
50+
public void teleportPlayer(Player player);
51+
4652
}

src/main/java/world/bentobox/border/listeners/PlayerListener.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import org.bukkit.event.EventHandler;
1919
import org.bukkit.event.EventPriority;
2020
import org.bukkit.event.Listener;
21+
import org.bukkit.event.entity.EntityDamageEvent;
22+
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
2123
import org.bukkit.event.entity.EntityDismountEvent;
2224
import org.bukkit.event.entity.EntityMountEvent;
2325
import org.bukkit.event.player.PlayerJoinEvent;
@@ -32,12 +34,14 @@
3234
import org.bukkit.util.RayTraceResult;
3335
import org.bukkit.util.Vector;
3436

37+
import world.bentobox.bentobox.BentoBox;
3538
import world.bentobox.bentobox.api.events.island.IslandProtectionRangeChangeEvent;
3639
import world.bentobox.bentobox.api.flags.Flag;
3740
import world.bentobox.bentobox.api.metadata.MetaDataValue;
3841
import world.bentobox.bentobox.api.user.User;
3942
import world.bentobox.bentobox.util.Util;
4043
import world.bentobox.border.Border;
44+
import world.bentobox.border.BorderType;
4145
import world.bentobox.border.PerPlayerBorderProxy;
4246
import world.bentobox.border.commands.IslandBorderCommand;
4347

@@ -98,6 +102,20 @@ protected void processEvent(PlayerJoinEvent e) {
98102
show.showBorder(e.getPlayer(), i)));
99103
}
100104

105+
@EventHandler(priority = EventPriority.NORMAL)
106+
public void onPlayerDamage(EntityDamageEvent e) {
107+
// Only deal with fall damage in the right world if the barrier is on
108+
if (e.getCause() != DamageCause.FALL || addon.getSettings().getType() != BorderType.BARRIER
109+
|| !(e.getEntity() instanceof Player p) || !isOn(p) || !addon.inGameWorld(e.getEntity().getWorld())) {
110+
return;
111+
}
112+
Material type = p.getLocation().getBlock().getRelative(BlockFace.DOWN).getType();
113+
if (type == Material.AIR) {
114+
((BorderShower) show).teleportPlayer(p);
115+
e.setCancelled(true);
116+
}
117+
}
118+
101119
@EventHandler(priority = EventPriority.NORMAL)
102120
public void onPlayerQuit(PlayerQuitEvent e) {
103121
show.clearUser(User.getInstance(e.getPlayer()));
@@ -331,8 +349,6 @@ public void onVehicleMove(VehicleMoveEvent e) {
331349
*/
332350
@EventHandler(priority = EventPriority.NORMAL)
333351
public void onProtectionRangeChange(IslandProtectionRangeChangeEvent e) {
334-
// Get default game mode
335-
GameMode gm = this.addon.getPlugin().getIWM().getDefaultGameMode(e.getIsland().getWorld());
336352
// Hide and show again
337353
e.getIsland().getPlayersOnIsland().forEach(player -> {
338354
if (isOn(player)) {

src/main/java/world/bentobox/border/listeners/ShowBarrier.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.google.common.base.Enums;
2020

21+
import world.bentobox.bentobox.BentoBox;
2122
import world.bentobox.bentobox.api.metadata.MetaDataValue;
2223
import world.bentobox.bentobox.api.user.User;
2324
import world.bentobox.bentobox.database.objects.Island;
@@ -123,13 +124,19 @@ private void showWalls(Player player, Location loc, int xMin, int xMax, int zMin
123124

124125
}
125126

127+
/**
128+
* @param player player
129+
* @param i
130+
* @param j
131+
* @param k
132+
* @param max
133+
*/
126134
private void showPlayer(Player player, int i, int j, int k, boolean max) {
127135
// Get if on or in border
128136
if (addon.getSettings().isUseBarrierBlocks()
129137
&& player.getLocation().getBlockX() == i
130138
&& player.getLocation().getBlockZ() == k) {
131139
teleportPlayer(player);
132-
return;
133140
}
134141

135142
Location l = new Location(player.getWorld(), i, j, k);
@@ -148,13 +155,15 @@ private void showPlayer(Player player, int i, int j, int k, boolean max) {
148155
});
149156
}
150157

151-
private void teleportPlayer(Player p) {
158+
/**
159+
* Teleport player back within the island space they are in
160+
* @param p player
161+
*/
162+
public void teleportPlayer(Player p) {
152163
addon.getIslands().getIslandAt(p.getLocation()).ifPresent(i -> {
153164
Vector unitVector = i.getCenter().toVector().subtract(p.getLocation().toVector()).normalize()
154-
.multiply(new Vector(1,0,1));
155-
p.setVelocity(new Vector (0,0,0));
165+
.multiply(new Vector(1, 0, 1));
156166
// Get distance from border
157-
158167
Location to = p.getLocation().toVector().add(unitVector).toLocation(p.getWorld());
159168
to.setPitch(p.getLocation().getPitch());
160169
to.setYaw(p.getLocation().getYaw());

src/main/java/world/bentobox/border/listeners/ShowVirtualWorldBorder.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@
44

55
import org.bukkit.Bukkit;
66
import org.bukkit.Location;
7-
import org.bukkit.WorldBorder;
87
import org.bukkit.World.Environment;
8+
import org.bukkit.WorldBorder;
99
import org.bukkit.entity.Player;
10+
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
11+
import org.bukkit.util.Vector;
1012

1113
import world.bentobox.bentobox.api.metadata.MetaDataValue;
1214
import world.bentobox.bentobox.api.user.User;
1315
import world.bentobox.bentobox.database.objects.Island;
16+
import world.bentobox.bentobox.util.Util;
1417
import world.bentobox.border.Border;
1518

1619
/**
@@ -49,4 +52,20 @@ public void hideBorder(User user) {
4952
user.getPlayer().setWorldBorder(null);
5053
}
5154

55+
/**
56+
* Teleport player back within the island space they are in
57+
* @param p player
58+
*/
59+
public void teleportPlayer(Player p) {
60+
addon.getIslands().getIslandAt(p.getLocation()).ifPresent(i -> {
61+
Vector unitVector = i.getCenter().toVector().subtract(p.getLocation().toVector()).normalize()
62+
.multiply(new Vector(1, 0, 1));
63+
// Get distance from border
64+
Location to = p.getLocation().toVector().add(unitVector).toLocation(p.getWorld());
65+
to.setPitch(p.getLocation().getPitch());
66+
to.setYaw(p.getLocation().getYaw());
67+
Util.teleportAsync(p, to, TeleportCause.PLUGIN);
68+
});
69+
}
70+
5271
}

src/main/resources/plugin.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
name: BentoBox-Border
2+
main: world.bentobox.border.BorderPladdon
3+
version: ${project.version}${build.number}
4+
api-version: "1.21"
5+
6+
authors: [tastybento]
7+
contributors: ["The BentoBoxWorld Community"]
8+
website: https://bentobox.world
9+
description: ${project.description}

0 commit comments

Comments
 (0)