Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/.idea/
/target/
10 changes: 5 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@

<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
<id>papermc</id>
<url>https://papermc.io/repo/repository/maven-public/</url>
</repository>

<repository>
Expand All @@ -49,16 +49,16 @@

<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<groupId>com.destroystokyo.paper</groupId>
<artifactId>paper-api</artifactId>
<version>LATEST</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-core</artifactId>
<version>7.0.0-SNAPSHOT</version>
<version>LATEST</version>
</dependency>

<dependency>
Expand Down
Binary file added releases/FlyingCarpet-1.4.4.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion src/main/java/me/sothatsit/flyingcarpet/FCConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class FCConfig {
private Set<BlockData> passThrough;
private int descendSpeed;

private Set<String> worldguardRegionBlacklist = new HashSet<>();
private final Set<String> worldguardRegionBlacklist = new HashSet<>();

private static void copySection(ConfigurationSection defaults,
ConfigurationSection config,
Expand Down
86 changes: 44 additions & 42 deletions src/main/java/me/sothatsit/flyingcarpet/FlyingCarpet.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,27 @@

import me.sothatsit.flyingcarpet.model.BlockOffset;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockExplodeEvent;
import org.bukkit.event.block.BlockPistonExtendEvent;
import org.bukkit.event.block.BlockPistonRetractEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.event.hanging.HangingBreakEvent;
import org.bukkit.event.player.*;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable;

public class FlyingCarpet extends JavaPlugin implements Listener {
Expand All @@ -38,7 +39,7 @@ public class FlyingCarpet extends JavaPlugin implements Listener {

private FCConfig mainConfig;
static List<PluginHooks> pluginHooks;
private List<UPlayer> players = new ArrayList<>();
private final List<UPlayer> players = new ArrayList<>();

@Override
public void onEnable() {
Expand All @@ -64,6 +65,7 @@ public void onDisable() {
for (UPlayer up : players) {
up.setEnabled(false);
}
players.clear();
}

public boolean isCarpetAllowed(Location loc) {
Expand Down Expand Up @@ -99,22 +101,13 @@ public UPlayer getUPlayer(Player p) {
return up;
}

public UPlayer getUPlayer(UUID uuid) {
for (UPlayer up : players) {
if (up.getPlayer().getUniqueId().equals(uuid))
return up;
}
return null;
}

public void removeUPlayer(Player p) {
UPlayer up = getUPlayer(p);

if (up == null)
return;

players.remove(up);

up.setEnabled(false);
}

Expand All @@ -130,28 +123,18 @@ public void onPlayerKick(PlayerKickEvent e) {

@EventHandler
public void onBlockBreak(BlockBreakEvent e) {
for (UPlayer up : players) {
Player p = up.getPlayer();

for (final UPlayer up : players) {
if (!up.isCarpetBlock(e.getBlock())) {
if (up.isEnabled()) {
final UUID uuid = p.getUniqueId();
new BukkitRunnable() {
@Override
public void run() {
UPlayer up = getUPlayer(uuid);

if (up == null)
return;

up.createCarpet();
}
}.runTask(this);
}

continue;
}

e.setCancelled(true);
return;
}
Expand Down Expand Up @@ -195,32 +178,46 @@ public void onHangingBreak(HangingBreakEvent e) {
}

@EventHandler
public void onEntityExplode(EntityExplodeEvent e) {
public void onBlockExplode(BlockExplodeEvent e) {
List<Block> remove = new ArrayList<>();

for (Block b : e.blockList()) {
for (UPlayer up : players) {
Player p = up.getPlayer();

for (final UPlayer up : players) {
if (!up.isCarpetBlock(b)) {
if (up.isEnabled()) {
final UUID uuid = p.getUniqueId();
new BukkitRunnable() {
@Override
public void run() {
UPlayer up = getUPlayer(uuid);
up.createCarpet();
}
}.runTask(this);
}
continue;
}
remove.add(b);
}
}

if (up == null)
return;
for (Block block : remove) {
e.blockList().remove(block);
}
}

@EventHandler
public void onEntityExplode(EntityExplodeEvent e) {
List<Block> remove = new ArrayList<>();
for (Block b : e.blockList()) {
for (final UPlayer up : players) {
if (!up.isCarpetBlock(b)) {
if (up.isEnabled()) {
new BukkitRunnable() {
@Override
public void run() {
up.createCarpet();
}
}.runTask(this);
}

continue;
}

remove.add(b);
}
}
Expand Down Expand Up @@ -325,6 +322,19 @@ public void onPlayerToggleSneak(PlayerToggleSneakEvent e) {
up.startDescent();
}

@EventHandler
public void onFallBlockPlace(EntitySpawnEvent e) {
if (e.getEntityType().equals(EntityType.FALLING_BLOCK)) {
for (UPlayer up : players) {
if (!up.isCarpetBlock(e.getLocation()))
continue;

e.getEntity().remove();
return;
}
}
}

public static FlyingCarpet getInstance() {
return instance;
}
Expand All @@ -344,12 +354,4 @@ public static void warning(String warning) {
public static void severe(String severe) {
instance.getLogger().severe(severe);
}

public static void sync(Runnable task) {
Bukkit.getScheduler().runTask(instance, task);
}

public static void async(Runnable task) {
Bukkit.getScheduler().runTaskAsynchronously(instance, task);
}
}
9 changes: 5 additions & 4 deletions src/main/java/me/sothatsit/flyingcarpet/UPlayer.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import me.sothatsit.flyingcarpet.model.Region;
import me.sothatsit.flyingcarpet.util.Checks;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
Expand Down Expand Up @@ -56,6 +55,11 @@ public void setSize(int size) {
}

public void setMaterial(String material) {
if (!enabled || (this.material == null || this.material.equals(material))) {
this.material = material;
return;
}

this.material = material;
createCarpet();
}
Expand All @@ -75,7 +79,6 @@ public void setLocation(Location loc) {
}

this.loc = loc;

createCarpet();
}

Expand Down Expand Up @@ -106,7 +109,6 @@ public void setTools(boolean tools) {
}

this.tools = tools;

this.createCarpet();
}

Expand All @@ -121,7 +123,6 @@ public void setLight(boolean light) {
}

this.light = light;

this.createCarpet();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ public String hookName() {

@Override
public boolean isCarpetAllowed(Location loc) {
Region r = RedProtect.get().rm.getTopRegion(loc);
Region r = RedProtect.get().getAPI().getRegion(loc);
if (r == null) return true;

return r.getFlagBool("allow-magiccarpet");
}

@Override
public boolean canBuild(Player player) {
Region r = RedProtect.get().rm.getTopRegion(player.getLocation());
Region r = RedProtect.get().getAPI().getRegion(player.getLocation());
if (r == null) return true;

return r.canBuild(player);
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
main: me.sothatsit.flyingcarpet.FlyingCarpet
author: sothatsit
name: FlyingCarpet
version: 1.4.3
version: 1.4.4
api-version: 1.13
softdepend: [WorldGuard, WorldEdit, RedProtect]
commands:
Expand Down