Replay2024 conference held in Seattle on September 19th and 20th, 2024.
The Game Test Framework is a powerful tool provided by Mojang that is included with Minecraft in 1.17 and up. It allows you to declare game tests that can be run inside a Minecraft world and provide a success or fail state. Game tests are similar in concept to unit tests, but they allow you to interact with a running instance of Minecraft. This means you can test block interactions, entity interactions, item functionality, etc. Game tests use template structures to define the dimensions of the test and what blocks and entities will start in the test structure. This framework has useful applications for Continuous Integration (CI) and testing during development to ensure features are working as expected.
For a more in-depth explanation about the Game Test Framework itself and how Mojang uses it to test the base game, please see this video with contributions by Dinnerbone. This guide is tailored towards Forge modders by expla
Prior to
Bash 4.4
set -u
treated empty arrays as "unset", and terminates the process.
There are a number of possible workarounds using array
parameter expansion,
however almost all of them fail in certain Bash versions.
This gist is a supplement to this StackOverflow post.
GitHub allows automated builds using GitHub Actions. A commonly asked question is how to release artifacts (packaged Java jars) built by Maven and Gradle to The Central Repository. The GitHub Actions documentation provides only part of the answer.
So, first, configure your Maven project for staging artifacts to The Central Repository, by reading through Configuring Your Project for Deployment and following those steps. Please make sure that the maven-gpg-plugin is configured to prevent gpg
from using PIN entry programs, as follows:
<configuration>
<gpgArguments>
<arg>--pinentry-mode</arg>
loopback
<?xml version="1.0" encoding="UTF-8"?> | |
<migrationMap> | |
<name value="1.13.2 to 1.14" /> | |
<description value="1.13.2 to 1.14 MCP changes" /> | |
<entry oldName="net.minecraft.GameVersion" newName="net.minecraft.util.MinecraftVersion" type="class" /> | |
<entry oldName="net.minecraft.advancements.AdvancementList.Listener" newName="net.minecraft.advancements.AdvancementList.IListener" type="class" /> | |
<entry oldName="net.minecraft.advancements.RequirementsStrategy" newName="net.minecraft.advancements.IRequirementsStrategy" type="class" /> | |
<entry oldName="net.minecraft.advancements.criterion.AbstractCriterionInstance" newName="net.minecraft.advancements.criterion.CriterionInstance" type="class" /> | |
<entry oldName="net.minecraft.block.Block.EnumOffsetType" newName="net.minecraft.block.Block.OffsetType" type="class" /> | |
<entry oldName="net.minecraft.block.BlockAbstractBanner" newName="net.minecraft.block.AbstractBannerBlock" type="class" /> |
All Tests were performed with 20 warmup iterations of 10000 cycles and 40 benchmarking iterations of 50000 cycles. Times are all in milliseconds.
These arguments were choosen such that the GC pauses would be long, but infrequent.
VM arguments: -verbose:gc -Xbatch -XX:CICompilerCount=1 -XX:-TieredCompilation -Xmx10G -Xms10G -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:InitiatingHeapOccupancyPercent=80
Guava:
In this article, I will share some of my experience on installing NVIDIA driver and CUDA on Linux OS. Here I mainly use Ubuntu as example. Comments for CentOS/Fedora are also provided as much as I can.
package com.thevoxelbox.stats; | |
import com.thevoxelbox.stats.StatsGatherer.Schematic; | |
import org.jnbt.ByteArrayTag; | |
import org.jnbt.CompoundTag; | |
import org.jnbt.NBTInputStream; | |
import org.jnbt.ShortTag; | |
import org.jnbt.Tag; | |
import java.io.File; |
Tracks down when a Minecraft account was created.
Mojang has an API endpoint for usernames:
https://api.mojang.com/users/profiles/minecraft/<name>?at=<timestamp>
It can be used to find the UUID of an account, by username it used at the given time.
It returns either 200 OK
or 204 No Content
– indicating that the username was not in use at the time.