Last active
April 25, 2020 09:40
-
-
Save thisisfel1x/0ebeb72645d4becbf35c4f152206e970 to your computer and use it in GitHub Desktop.
Randomize your blocks with this simple class. The blocks will stay the same until the server reloads/restarts
This file contains hidden or 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
package de.fel1x.randomizer; | |
import org.bukkit.Bukkit; | |
import org.bukkit.Material; | |
import org.bukkit.block.Block; | |
import org.bukkit.event.EventHandler; | |
import org.bukkit.event.Listener; | |
import org.bukkit.event.block.BlockBreakEvent; | |
import org.bukkit.inventory.ItemStack; | |
import org.bukkit.plugin.PluginManager; | |
import org.bukkit.plugin.java.JavaPlugin; | |
import java.util.*; | |
import java.util.stream.Collectors; | |
import java.util.stream.IntStream; | |
/* | |
* Plugin by fel1x | |
* Tested for versions 1.8.x to 1.15.x | |
*/ | |
public final class Randomizer extends JavaPlugin implements Listener { | |
private Map<Material, Material> randomizedBlocks; | |
@Override | |
public void onEnable() { | |
List<Material> normalBlocks = Arrays.stream(Material.values()).filter(Material::isBlock).collect(Collectors.toList()); | |
List<Material> randomizedBlocksList = Arrays.stream(Material.values()).filter(Material::isBlock).collect(Collectors.toList()); | |
// Shuffle randomized blocks | |
Collections.shuffle(randomizedBlocksList); | |
// Put blocks in HashMap | |
randomizedBlocks = IntStream.range(0, normalBlocks.size()).boxed().collect(Collectors.toMap(normalBlocks::get, randomizedBlocksList::get)); | |
PluginManager pluginManager = Bukkit.getPluginManager(); | |
pluginManager.registerEvents(this, this); | |
} | |
@EventHandler | |
public void on(BlockBreakEvent event) { | |
Block block = event.getBlock(); | |
if(block.getType().equals(Material.AIR)) return; | |
block.getDrops().clear(); | |
Material blockToDrop = randomizedBlocks.get(block.getType()); | |
block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(blockToDrop)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment