Skip to content

Instantly share code, notes, and snippets.

I realized that some people may be interested in a quick recap of what's happened to all the Java-based server implementations that were announced since the DMCA about 7 months ago. Here goes.

  • CraftBukkit: Totally dead
  • Spigot: Alive and suitable for production, has builds available without Spigot optimizations for those who prefer something more vanilla-like
  • Sponge: Released working alpha for the Forge version yesterday, vanilla-based version still in development
  • Granite: Merged into Sponge as a base for the vanilla version, still in-progress
  • Project Rainbow: Still alive, with small community producing plugins
  • Husk: Total vaporware
import com.google.common.base.Charsets;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.scoreboard.*;
import java.lang.reflect.Constructor;
package me.vemacs.chestnuker;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Chest;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.HandlerList;
private static Object minecraftServer;
private static Field recentTps;
public static double[] getRecentTps() {
try {
if (minecraftServer == null) {
Server server = Bukkit.getServer();
Field consoleField = server.getClass().getDeclaredField("console");
consoleField.setAccessible(true);
minecraftServer = consoleField.get(server);
private static Method getHandleMethod;
private static Field pingField;
private static int getPing(Player player) {
try {
if (getHandleMethod == null) {
getHandleMethod = player.getClass().getDeclaredMethod("getHandle");
getHandleMethod.setAccessible(true);
}
Object entityPlayer = getHandleMethod.invoke(player);
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Your views here -->
<View
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="@drawable/shadow" />
</RelativeLayout>
import com.google.common.base.Preconditions;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectionHelpers {
@vemacs
vemacs / NoAI.java
Last active January 15, 2023 16:48
private static String serverVersion;
private static Method getHandle;
private static Method getNBTTag;
private static Class<?> nmsEntityClass;
private static Class<?> nbtTagClass;
private static Method c;
private static Method setInt;
private static Method f;
public static void setAiEnabled(Entity entity, boolean enabled) {

Keybase proof

I hereby claim:

  • I am vemacs on github.
  • I am vemacs (https://keybase.io/vemacs) on keybase.
  • I have a public key whose fingerprint is 72B1 9E38 B25F 044C 99F2 207D 7681 06A2 1E31 5061

To claim this, I am signing this object:

  • le.doot.generation: !
  • zewl.bot: .
  • chester.bot.doot.doot: $
  • steveice (interim): %
  • spongybot: #
  • totallynotfabbot: -
  • rob.the.bot: ?
  • wee.bot: `
  • hintss.bot: lol