Skip to content

Commit

Permalink
add methods to convert XMaterial to BlockData
Browse files Browse the repository at this point in the history
  • Loading branch information
HSGamer committed Sep 17, 2024
1 parent 9725567 commit 33033ed
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,20 @@

import com.cryptomorin.xseries.XMaterial;
import com.lewdev.probabilitylib.ProbabilityCollection;
import io.github.projectunified.blockutil.api.BlockData;
import me.hsgamer.gamesinthebox.util.BlockHandlerUtil;
import me.hsgamer.minigamecore.base.Feature;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Iterator;

/**
* The {@link Feature} that contains {@link ProbabilityCollection} of {@link XMaterial}
*/
public abstract class MaterialProbabilityFeature implements Feature {
private ProbabilityCollection<XMaterial> materialCollection;
private ProbabilityCollection<BlockData> blockDataCollection;
private boolean isInitialEmpty = false;

/**
Expand Down Expand Up @@ -78,4 +83,24 @@ public boolean isInitialEmpty() {
public ProbabilityCollection<XMaterial> getMaterialCollection() {
return materialCollection;
}

/**
* Get the {@link ProbabilityCollection} of {@link BlockData}
*
* @return the collection
*/
public ProbabilityCollection<BlockData> getBlockDataCollection() {
if (blockDataCollection == null) {
blockDataCollection = new ProbabilityCollection<>();
Iterator<ProbabilityCollection.ProbabilitySetElement<XMaterial>> iterator = materialCollection.iterator();
while (iterator.hasNext()) {
ProbabilityCollection.ProbabilitySetElement<XMaterial> element = iterator.next();
BlockData blockData = BlockHandlerUtil.getBlockData(element.getObject());
if (blockData != null) {
blockDataCollection.add(blockData, element.getProbability());
}
}
}
return blockDataCollection;
}
}
17 changes: 17 additions & 0 deletions src/main/java/me/hsgamer/gamesinthebox/util/BlockHandlerUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,17 @@
*/
package me.hsgamer.gamesinthebox.util;

import com.cryptomorin.xseries.XMaterial;
import io.github.projectunified.blockutil.api.BlockData;
import io.github.projectunified.blockutil.api.BlockHandler;
import io.github.projectunified.blockutil.fawe.FaweBlockHandler;
import io.github.projectunified.blockutil.folia.FoliaBlockHandler;
import io.github.projectunified.blockutil.vanilla.VanillaBlockHandler;
import me.hsgamer.gamesinthebox.GamesInTheBox;
import me.hsgamer.gamesinthebox.config.MainConfig;
import org.bukkit.Material;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.Nullable;

/**
* The utility to get {@link BlockHandler}
Expand Down Expand Up @@ -59,4 +63,17 @@ private BlockHandlerUtil() {
public static BlockHandler getBlockHandler() {
return blockHandler;
}

/**
* Get the {@link BlockData} from {@link XMaterial}
*
* @param material the {@link XMaterial}
* @return the {@link BlockData}
*/
@Nullable
public static BlockData getBlockData(XMaterial material) {
Material bukkitMaterial = material.parseMaterial();
if (bukkitMaterial == null) return null;
return new BlockData(bukkitMaterial, material.getData());
}
}

0 comments on commit 33033ed

Please sign in to comment.