Skip to content

Instantly share code, notes, and snippets.

View TuxCoding's full-sized avatar

Alex (TuxCoding) TuxCoding

  • [::1]
View GitHub Profile
@TuxCoding
TuxCoding / NamedItem.java
Created December 9, 2016 12:32
Give a player a custom named item in Bukkit (Minecraft)
import java.util.Arrays;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
public class NamedItem {
public static void give(Player toPlayer, Material material, String name, String[] lore) {
@TuxCoding
TuxCoding / IsCommandCheck.java
Created December 9, 2016 12:31
Check if a given string is registered as a command in Bukkit (Minecraft)
import java.lang.reflect.Field;
import org.bukkit.Bukkit;
import org.bukkit.command.SimpleCommandMap;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.SimplePluginManager;
public class IsCommandCheck {
public boolean isCommand(String command) {
@TuxCoding
TuxCoding / TOTP.java
Created December 9, 2016 12:29
TOTP (Time-based One-time Password Algorithm) key generation for two factor authentication.
import com.google.common.escape.Escaper;
import com.google.common.io.BaseEncoding;
import com.google.common.net.UrlEscapers;
import com.google.common.primitives.Ints;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.Calendar;
@TuxCoding
TuxCoding / NettyTrafficCounter.java
Created December 9, 2016 12:27
Counts the incoming and outgoing bytes in Netty. Use the register method in order to let this snippet track it.
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufHolder;
import io.netty.channel.Channel;
import io.netty.channel.ChannelDuplexHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelPromise;
import java.util.concurrent.atomic.AtomicLong;
public class NettyTrafficCounter extends ChannelDuplexHandler {
@TuxCoding
TuxCoding / JarUtils.java
Created December 9, 2016 12:24
Get the location of the jar file where this file is running from
import java.io.File;
import java.net.URISyntaxException;
public class JarUtils {
public static File getCurrentJar() throws URISyntaxException {
return new File(JarUtils.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
}
}
@TuxCoding
TuxCoding / FolderSize.java
Created December 9, 2016 12:23
Recursively travels the given folder to get the folder size in bytes.
import java.io.File;
public class FolderSize {
private static long getFolderSize(File folder) {
long size = 0;
for (File file : folder.listFiles()) {
if (file == null) {
continue;
@TuxCoding
TuxCoding / NetworkPreparedStatements.java
Created December 9, 2016 12:21
Used named placeholders instead of indexes for prepared statements
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.NetInterfaceStat;
import org.hyperic.sigar.Sigar;
@TuxCoding
TuxCoding / BCryptHasher.java
Created December 9, 2016 12:15
Generates BCrypt hashes in Java using: http://www.mindrot.org/projects/jBCrypt/ This snippet fixes compatibility with BCrypt hashes generated in PHP
import org.mindrot.jbcrypt.BCrypt;
public class BCryptHasher {
public static String hashPassword(String rawPassword) {
//generate a different salt for each user
return BCrypt.hashpw(rawPassword, BCrypt.gensalt());
}
public static boolean checkPassword(String passwordHash, String userInput) {
@TuxCoding
TuxCoding / FormatBytes.java
Created December 9, 2016 12:10
Format the amount bytes to a human readable format.
/*
* Example output:
SI BINARY
0: 0 B 0 B
27: 27 B 27 B
999: 999 B 999 B
1000: 1.0 kB 1000 B
1023: 1.0 kB 1023 B
1024: 1.0 kB 1.0 KiB