Skip to content

Commit

Permalink
proeg
Browse files Browse the repository at this point in the history
  • Loading branch information
Goldmensch committed Sep 14, 2024
1 parent 75e841e commit 3757d83
Show file tree
Hide file tree
Showing 15 changed files with 542 additions and 34 deletions.
32 changes: 32 additions & 0 deletions src/main/java/club/devcord/gamejam/EventCancelers.java
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);
}
}
}
12 changes: 2 additions & 10 deletions src/main/java/club/devcord/gamejam/Nigulpyggub.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,16 @@
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

public class Nigulpyggub extends JavaPlugin {

private final Map<Team, LevelPipeline> teamPipelines = new HashMap<>();
private final Lagger lagger = new Lagger(this);

@Override
public void onDisable() {
lagger.stop();
}

@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(new PlayerJoinListener(), this);
getServer().getPluginManager().registerEvents(new EventCancelers(), this);
getServer().getPluginCommand("team").setExecutor(new TeamCommand(this));
getServer().getPluginCommand("game").setExecutor(new GameCommand(this));
// lagger.start();
Expand Down Expand Up @@ -53,10 +49,6 @@ public Map<Team, LevelPipeline> teamPipelines() {
return teamPipelines;
}

public Lagger lagger() {
return lagger;
}

public Component exceptionToComponent(Throwable throwable) {
var writer = new StringWriter();
var output = new PrintWriter(writer);
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/club/devcord/gamejam/PlayerJoinListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

public class PlayerJoinListener implements Listener {

Expand All @@ -17,5 +19,6 @@ public void onPlayerJoin(PlayerJoinEvent event) {
}

event.getPlayer().setResourcePack("https://panel.traidio.net/resourcepack.zip");
event.getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.SATURATION, 2, 100, false, false));
}
}
15 changes: 14 additions & 1 deletion src/main/java/club/devcord/gamejam/commands/GameCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import club.devcord.gamejam.world.WorldDuplicator;
import io.papermc.paper.configuration.type.fallback.FallbackValue;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.World;
Expand All @@ -19,6 +20,7 @@

import java.util.List;
import java.util.Map;
import java.util.Optional;

public class GameCommand implements CommandExecutor {

Expand All @@ -36,7 +38,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
return false;
}

if (args.length != 1) {
if (args.length < 1) {
player.sendMessage(MiniMessage.miniMessage().deserialize("<red>You have to use: /game start"));
return false;
}
Expand Down Expand Up @@ -68,6 +70,17 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
playerLocation.setWorld(world);
p.teleport(playerLocation);
});
// plugin.teams().stream().map(Team::world).forEach(w -> plugin.getServer().unloadWorld(w, false));
plugin.teamPipelines().clear();
}
case "level" -> {
Optional<Team> team = plugin.teamForPlayer(player);
LevelPipeline pipeline = plugin.teamPipelines().get(team.orElseThrow());

int level = Integer.parseInt(args[1]);
for (int i = 0; i < level; i++) {
pipeline.next();
}
}
default -> player.sendMessage(MiniMessage.miniMessage().deserialize("<red> Unknown command."));
}
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/club/devcord/gamejam/level/LevelPipeline.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import club.devcord.gamejam.Nigulpyggub;
import club.devcord.gamejam.Team;
import club.devcord.gamejam.level.eyes.EyesLevel;
import club.devcord.gamejam.level.poempel.PoempelLevel;
import club.devcord.gamejam.level.thejump.TheJumpLevel;
import net.kyori.adventure.key.Key;
Expand All @@ -19,7 +20,8 @@ public LevelPipeline(Team team, Nigulpyggub plugin) {
this.team = team;
var levels = List.of(
new PoempelLevel(team, plugin, this),
new TheJumpLevel(team, plugin, this)
new TheJumpLevel(team, plugin, this),
new EyesLevel(team, plugin, this)
);
this.levels = new ArrayDeque<>(levels);
}
Expand All @@ -41,6 +43,7 @@ public void start() {
}

public void stop() {
if (levels.peek() == null) return;
levels.peek().stop();
}
}
114 changes: 114 additions & 0 deletions src/main/java/club/devcord/gamejam/level/eyes/BlockShower.java
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 src/main/java/club/devcord/gamejam/level/eyes/EyesLevel.java
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();
}
}
Loading

0 comments on commit 3757d83

Please sign in to comment.