Skip to content

Instantly share code, notes, and snippets.

@RainWarrior
RainWarrior / grammar.js
Last active January 27, 2022 10:35
Animation State Machine grammar
{
"parameters": { "name": <time_value>, ... },
"clips": { "name": <clip>, ... },
"states": [ "name", ... ],
"transitions": { "name_from": "name_to", ... },
"start_state": "name"
}
<time_value> ::=
<number> // result = number; Constant value.
<blockstate> == {
"forge_marker": 1,
"defaults": <variant>, // optional, added to all variants
"variants": {
"<property>": {
"<value>": <variant> // variant definition for the specified value of this property; variants for multiple values can be specified.
},
"<variant name>": <variant>, // variant definition for the full variant string
"<variant name>": [<variant1>, ...], // array of definitions for the full variant - result will be the random variant
}
@RainWarrior
RainWarrior / NewCodeTest.java
Created December 17, 2019 22:16
Some data fixer example code
package net.minecraft.util.datafix;
import com.google.gson.JsonElement;
import com.google.gson.internal.Streams;
import com.google.gson.stream.JsonReader;
import com.mojang.datafixers.DSL;
import com.mojang.datafixers.DataFix;
import com.mojang.datafixers.Dynamic;
import com.mojang.datafixers.OpticFinder;
import com.mojang.datafixers.RewriteResult;
{
"forge_marker": 1,
"defaults": {
"model": "forge:multi-layer",
"custom": {
"base": "yourmod:breaking_block#base",
"Solid": "yourmod:breaking_block#base",
"Translucent": "yourmod:breaking_block#breaking"
},
"transform": "forge:default-block"
{
"forge_marker": 1,
"defaults": {
"model": "forgedebugmodelloaderregistry:scanner.obj",
"custom": { "flip-v": true }
},
"variants": {
"inventory": [{
"transform": {
"firstperson": { "translation": [-0.33, 0.9, -0.33], "rotation": [{ "y": -45 }, { "x": 90 }, { "y": 90 }] },
abstract class TestA<T extends TestA<T>> {}
abstract class TestB<T extends TestB<T>> extends TestA<T> {}
final class TestBF extends TestB<TestBF>
{
static TestBF create() { return new TestBF(); }
}
private class T extends ClassLoader {
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException
{
ClassNode node = readClassNode(name);
// better actual set of default composable contexts
for (MethodNode m: node.methods) {
// set in the list, you know what I mean
m = transform(new WholeMethodContext(m));
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import cpw.mods.fml.client.registry.RenderingRegistry;
import net.minecraftforge.client.model.obj.WavefrontObject;
import net.minecraft.block.Block;
import net.minecraft.world.IBlockAccess;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
Metric (key = "distance") {float {1.0}}
Metric (key = "angle") {float {1.0}}
Metric (key = "time") {float {1.0}}
Metric (key = "up") {string {"z"}}
Node $node1
{
Name {string {"Armature"}}
Transform %transform
package net.minecraftforge.permissions.api
import java.util.{ List => JList }
import com.google.gson.JsonObject
import net.minecraft.tileentity.TileEntity
import net.minecraft.dispenser.ILocation
import net.minecraft.entity.{ Entity, EntityLiving, player }
import player.EntityPlayer
import net.minecraft.world.World
import net.minecraftforge.common.FakePlayer