Skip to content

Commit

Permalink
Added support for Oraxen with generators (#1143)
Browse files Browse the repository at this point in the history
* Added support for Oraxen custom blocks

* Added Oraxen as a soft dependency
  • Loading branch information
OmerBenGera committed May 21, 2022
1 parent 2e354d3 commit b7e2f3d
Show file tree
Hide file tree
Showing 8 changed files with 95 additions and 23 deletions.
19 changes: 19 additions & 0 deletions Hook_Oraxen/build.gradle
@@ -0,0 +1,19 @@
group 'Hook_Oraxen'

java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(16))
}
}

dependencies {
compileOnly 'io.th0rgal:Oraxen:1.133.0'
compileOnly "org.spigotmc:v1_8_R3-Taco:latest"
compileOnly project(":API")
compileOnly parent
}

if (project.hasProperty('hook.compile_oraxen') &&
!Boolean.valueOf(project.findProperty("hook.compile_oraxen").toString())) {
project.tasks.all { task -> task.enabled = false }
}
@@ -0,0 +1,69 @@
package com.bgsoftware.superiorskyblock.hooks.support;

import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin;
import com.bgsoftware.superiorskyblock.api.events.IslandGenerateBlockEvent;
import com.bgsoftware.superiorskyblock.api.objects.Pair;
import com.google.common.collect.ImmutableList;
import io.th0rgal.oraxen.items.OraxenItems;
import io.th0rgal.oraxen.mechanics.MechanicFactory;
import io.th0rgal.oraxen.mechanics.MechanicsManager;
import io.th0rgal.oraxen.mechanics.provided.gameplay.block.BlockMechanicFactory;
import io.th0rgal.oraxen.mechanics.provided.gameplay.noteblock.NoteBlockMechanicFactory;
import io.th0rgal.oraxen.mechanics.provided.gameplay.stringblock.StringBlockMechanicFactory;
import org.bukkit.Bukkit;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;

import java.util.List;
import java.util.Locale;

public final class OraxenHook {

private static final List<Pair<MechanicFactory, SetBlockModelFunction>> AVAILABLE_MECHANICS = ImmutableList.of(
new Pair<>(MechanicsManager.getMechanicFactory("block"), BlockMechanicFactory::setBlockModel),
new Pair<>(MechanicsManager.getMechanicFactory("noteblock"), NoteBlockMechanicFactory::setBlockModel),
new Pair<>(MechanicsManager.getMechanicFactory("stringblock"), StringBlockMechanicFactory::setBlockModel)
);

public static void register(SuperiorSkyblockPlugin plugin) {
Bukkit.getPluginManager().registerEvents(new GeneratorListener(), plugin);
}

private static final class GeneratorListener implements Listener {

@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onIslandGenerateBlock(IslandGenerateBlockEvent event) {
if (!event.getBlock().getGlobalKey().equals("ORAXEN"))
return;

String itemId = event.getBlock().getSubKey().toLowerCase(Locale.ENGLISH);

if (!OraxenItems.exists(itemId)) {
event.setCancelled(true);
return;
}

Pair<MechanicFactory, SetBlockModelFunction> mechanic = AVAILABLE_MECHANICS.stream()
.filter(pair -> pair.getKey() != null && !pair.getKey().isNotImplementedIn(itemId))
.findFirst().orElse(null);

if (mechanic == null) {
event.setCancelled(true);
return;
}

event.setPlaceBlock(false);
mechanic.getValue().setBlockModel(event.getLocation().getBlock(), itemId);
}

}

private interface SetBlockModelFunction {

void setBlockModel(Block block, String itemId);

}

}
1 change: 1 addition & 0 deletions gradle.properties
Expand Up @@ -23,6 +23,7 @@ hook.compile_leaderheads=true
hook.compile_luckperms=true
hook.compile_mergedspawner=true
hook.compile_mvdwplaceholderapi=true
hook.compile_oraxen=true
hook.compile_papermc=true
hook.compile_placeholderapi=true
hook.compile_protocollib=true
Expand Down
1 change: 1 addition & 0 deletions settings.gradle
Expand Up @@ -14,6 +14,7 @@ include 'Hook_LeaderHeads'
include 'Hook_LuckPerms'
include 'Hook_MergedSpawner'
include 'Hook_MVdWPlaceholderAPI'
include 'Hook_Oraxen'
include 'Hook_PaperMC'
include 'Hook_PlaceholderAPI'
include 'Hook_ProtocolLib'
Expand Down
Expand Up @@ -382,6 +382,9 @@ private void registerGeneralHooks() {

if (canRegisterHook("ProtocolLib"))
registerHook("ProtocolLibHook");

if (Bukkit.getPluginManager().isPluginEnabled("Oraxen"))
registerHook("OraxenHook");
}

private void registerSpawnersProvider() {
Expand Down
Expand Up @@ -12,7 +12,6 @@
import com.bgsoftware.superiorskyblock.key.KeyImpl;
import com.bgsoftware.superiorskyblock.lang.Message;
import com.bgsoftware.superiorskyblock.utils.events.EventResult;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -71,16 +70,6 @@ public boolean supportMultipleIslands() {

@Override
public void execute(SuperiorSkyblockPlugin plugin, CommandSender sender, SuperiorPlayer targetPlayer, List<Island> islands, String[] args) {
Material rawMaterial = CommandArguments.getMaterial(sender, args[3]);

if (rawMaterial == null)
return;

if (!rawMaterial.isSolid()) {
Message.MATERIAL_NOT_SOLID.send(sender);
return;
}

Key material = KeyImpl.of(args[3]);
boolean percentage = args[4].endsWith("%");

Expand Down
Expand Up @@ -12,7 +12,6 @@
import com.bgsoftware.superiorskyblock.key.KeyImpl;
import com.bgsoftware.superiorskyblock.lang.Message;
import com.bgsoftware.superiorskyblock.utils.events.EventResult;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -71,16 +70,6 @@ public boolean supportMultipleIslands() {

@Override
public void execute(SuperiorSkyblockPlugin plugin, CommandSender sender, SuperiorPlayer targetPlayer, List<Island> islands, String[] args) {
Material rawMaterial = CommandArguments.getMaterial(sender, args[3]);

if (rawMaterial == null)
return;

if (!rawMaterial.isSolid()) {
Message.MATERIAL_NOT_SOLID.send(sender);
return;
}

Key material = KeyImpl.of(args[3]);
boolean percentage = args[4].endsWith("%");

Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/plugin.yml
Expand Up @@ -18,8 +18,9 @@ softdepend:
- JetsMinions
- LeaderHeads
- LuckPerms
- MVdWPlaceholderAPI
- MergedSpawner
- MVdWPlaceholderAPI
- Oraxen
- PlaceholderAPI
- ProtocolLib
- PvpingSpawners
Expand Down

0 comments on commit b7e2f3d

Please sign in to comment.