Skip to content

Instantly share code, notes, and snippets.

@thisisfel1x
Last active April 25, 2020 09:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thisisfel1x/0ebeb72645d4becbf35c4f152206e970 to your computer and use it in GitHub Desktop.
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
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