generated from devcordde/PluginJamGradle
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
75e841e
commit 3757d83
Showing
15 changed files
with
542 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package club.devcord.gamejam; | ||
|
||
import org.bukkit.Material; | ||
import org.bukkit.entity.Player; | ||
import org.bukkit.event.EventHandler; | ||
import org.bukkit.event.Listener; | ||
import org.bukkit.event.entity.EntityDamageEvent; | ||
import org.bukkit.event.entity.FoodLevelChangeEvent; | ||
import org.bukkit.event.entity.ProjectileLaunchEvent; | ||
import org.bukkit.event.player.PlayerInteractEvent; | ||
import org.bukkit.potion.PotionEffect; | ||
import org.bukkit.potion.PotionEffectType; | ||
|
||
public class EventCancelers implements Listener { | ||
@EventHandler | ||
public void onFoodChange(FoodLevelChangeEvent event) { | ||
event.setCancelled(true); | ||
} | ||
|
||
@EventHandler | ||
public void onDamage(EntityDamageEvent event) { | ||
event.setCancelled(true); | ||
event.getEntity().setFireTicks(0); | ||
} | ||
|
||
@EventHandler | ||
public void onEndereye(PlayerInteractEvent event) { | ||
if (event.getMaterial().equals(Material.ENDER_EYE)) { | ||
event.setCancelled(true); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
114 changes: 114 additions & 0 deletions
114
src/main/java/club/devcord/gamejam/level/eyes/BlockShower.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
package club.devcord.gamejam.level.eyes; | ||
|
||
import club.devcord.gamejam.Nigulpyggub; | ||
import club.devcord.gamejam.Team; | ||
import club.devcord.gamejam.level.thejump.TheJumpLevel; | ||
import org.bukkit.Location; | ||
import org.bukkit.Material; | ||
import org.bukkit.block.data.BlockData; | ||
import org.bukkit.entity.Player; | ||
import org.bukkit.event.EventHandler; | ||
import org.bukkit.event.Listener; | ||
import org.bukkit.event.player.PlayerItemHeldEvent; | ||
import org.bukkit.event.player.PlayerMoveEvent; | ||
import org.bukkit.scheduler.BukkitTask; | ||
|
||
import java.util.Random; | ||
|
||
public class BlockShower implements Listener { | ||
|
||
private final Random random = new Random(); | ||
|
||
private final Team team; | ||
private final Nigulpyggub plugin; | ||
|
||
private BukkitTask itemSwitchTask; | ||
|
||
public BlockShower(Team team, Nigulpyggub plugin) { | ||
this.team = team; | ||
this.plugin = plugin; | ||
} | ||
|
||
public void startItemSwitching() { | ||
itemSwitchTask = plugin.getServer().getScheduler().runTaskTimer(plugin, this::switchItems, 20, 20); | ||
} | ||
|
||
public void stopItemSwitching() { | ||
itemSwitchTask.cancel(); | ||
} | ||
|
||
private void switchItems() { | ||
team.players().forEach(player -> { | ||
if(player.getInventory().getItemInMainHand().isSimilar(TheJumpLevel.THE_EYE) && random.nextInt(0, 100) < 40) { | ||
var newSlot = random.nextInt(0, 8); | ||
while(newSlot == player.getInventory().getHeldItemSlot()) { | ||
newSlot = random.nextInt(0, 8); | ||
} | ||
|
||
player.getInventory().setItem(player.getInventory().getHeldItemSlot(), ); | ||
} | ||
}); | ||
} | ||
|
||
@EventHandler | ||
public void onFall(PlayerMoveEvent event) { | ||
if(!team.players().contains(event.getPlayer())) return; | ||
|
||
var player = event.getPlayer(); | ||
var loc = player.getLocation(); | ||
|
||
if(loc.getBlockX() >= 361 && loc.getBlockX() <= 377) { | ||
if(loc.getBlockZ() >= -492 && loc.getBlockZ() <= -482) { | ||
if(loc.getBlockY() < 27) { | ||
player.teleport(new Location(player.getWorld(), 359, 29, -487, -90, 0)); | ||
} | ||
} | ||
} | ||
|
||
if(loc.getBlockX() >= 369 && loc.getBlockX() <= 396) { | ||
if(loc.getBlockZ() >= -474 && loc.getBlockZ() <= -442) { | ||
if(loc.getBlockY() < 26) { | ||
player.teleport(new Location(player.getWorld(), 382, 28, -475, 0, 0)); | ||
} | ||
} | ||
} | ||
} | ||
|
||
@EventHandler | ||
public void onItemSwitch(PlayerItemHeldEvent event) { | ||
if(!team.players().contains(event.getPlayer())) return; | ||
|
||
var player = event.getPlayer(); | ||
|
||
plugin.getServer().getScheduler().runTaskLater(plugin, () -> setVisibility(player), 2); | ||
} | ||
|
||
public void setVisibility(Player player) { | ||
var itemInHand = player.getInventory().getItemInMainHand(); | ||
if(itemInHand.isSimilar(TheJumpLevel.THE_EYE)) { | ||
showBlocks(player, Material.BONE_BLOCK.createBlockData()); | ||
} else { | ||
showBlocks(player, Material.AIR.createBlockData()); | ||
} | ||
} | ||
|
||
private void showBlocks(Player player, BlockData blockData) { | ||
for (int x = 361; x < 377; x++) { | ||
for (int z = -492; z < -482; z++) { | ||
var location = new Location(player.getWorld(), x, 28, z); | ||
if(location.getBlock().getType() == Material.BARRIER) { | ||
player.sendBlockChange(location, blockData); | ||
} | ||
} | ||
} | ||
|
||
for (int x = 369; x < 396; x++) { | ||
for (int z = -474; z < -442; z++) { | ||
var location = new Location(player.getWorld(), x, 27, z); | ||
if(location.getBlock().getType() == Material.BARRIER) { | ||
player.sendBlockChange(location, blockData); | ||
} | ||
} | ||
} | ||
} | ||
} |
43 changes: 43 additions & 0 deletions
43
src/main/java/club/devcord/gamejam/level/eyes/EyesLevel.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package club.devcord.gamejam.level.eyes; | ||
|
||
import club.devcord.gamejam.Nigulpyggub; | ||
import club.devcord.gamejam.Team; | ||
import club.devcord.gamejam.level.Level; | ||
import club.devcord.gamejam.level.LevelPipeline; | ||
import org.bukkit.Location; | ||
import org.bukkit.event.player.PlayerInteractEvent; | ||
import org.bukkit.event.player.PlayerItemHeldEvent; | ||
import org.bukkit.plugin.PluginManager; | ||
|
||
public class EyesLevel extends Level { | ||
|
||
private final BlockShower blockShower; | ||
private final GateOpener opener; | ||
|
||
public EyesLevel(Team team, Nigulpyggub plugin, LevelPipeline pipeline) { | ||
super(team, plugin, pipeline); | ||
this.opener = new GateOpener(team); | ||
this.blockShower = new BlockShower(team, plugin); | ||
} | ||
|
||
@Override | ||
public void start() { | ||
team().players().forEach(player -> player.teleport(new Location(player.getWorld(), 344, 48, -460, 126, 0))); | ||
|
||
|
||
PluginManager pluginManager = plugin().getServer().getPluginManager(); | ||
pluginManager.registerEvents(blockShower, plugin()); | ||
pluginManager.registerEvents(opener, plugin()); | ||
team().players().forEach(blockShower::setVisibility); | ||
|
||
blockShower.startItemSwitching(); | ||
} | ||
|
||
@Override | ||
public void stop() { | ||
PlayerItemHeldEvent.getHandlerList().unregister(blockShower); | ||
PlayerInteractEvent.getHandlerList().unregister(opener); | ||
|
||
blockShower.stopItemSwitching(); | ||
} | ||
} |
Oops, something went wrong.