Skip to content

Instantly share code, notes, and snippets.

@Daomephsta
Daomephsta / EntityMixin.java
Created June 15, 2023 20:59
Step Height Attribute
package io.github.daomephsta.mixin;
import org.spongepowered.asm.mixin.Debug;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Daomephsta
Daomephsta / OriginAware.java
Created June 11, 2023 09:45
Transaction debugging
package io.github.daomephsta;
import java.lang.StackWalker.StackFrame;
import java.util.List;
public interface OriginAware
{
public List<StackFrame> silverfish_getOrigin();
}
package io.github.daomephsta;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
// For those who want the bleeding edge
plugins {
id 'eclipse'
id 'maven-publish'
id 'net.minecraftforge.gradle' version '5.1.+'
id 'wtf.gofancy.fancygradle' version '1.1.+'
}
version = "${project.modVersion}+MC${project.minecraftVersion}"
group = "leviathan143.loottweaker" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
@Daomephsta
Daomephsta / ChargeBarTrait.java
Created September 4, 2022 15:28
Mixin for traits
@Mixin({FallingBlockDestroyerItem.class, FallingBlockStabiliserItem.class})
public abstract class ChargeBarTrait extends Item implements IPolarisedItem
{
// Make the compiler happy
// Ignored by Mixin
public ChargeBarTrait(Settings settings)
{
super(settings);
}
@Daomephsta
Daomephsta / FabricRenderLayers.java
Last active November 10, 2021 19:12
Render Layer API
package net.fabricmc.fabric.api.client.rendering.v1;
import net.fabricmc.fabric.impl.client.rendering.RenderLayerAccessors;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexFormat;
/**
* Extend this to get access to protected members of RenderLayer, e.g. MultiPhaseParameters
*/
public abstract class FabricRenderLayers extends RenderLayer {
/** Subinterface of BlockEntityProvider that reduces type checking and conversion boilerplate related to tickers.<br>
* This interface should be implemented by the {@code Block}.<br>
* The {@code BlockEntity} must implement {@link BlockEntityHost.Hosted}.
* @param <T> class of the block entity hosted by this block
* @author Daomephsta
*/
public interface BlockEntityHost<T extends BlockEntity & BlockEntityHost.Hosted> extends BlockEntityProvider
{
@Override
public default <U extends BlockEntity> BlockEntityTicker<U> getTicker(
@Daomephsta
Daomephsta / ScratchPrelaunch.java
Last active May 30, 2021 10:23
WithValue injector
package io.github.daomephsta;
import org.spongepowered.asm.mixin.injection.struct.InjectionInfo;
import io.github.daomephsta.injector.WithValueInjectionInfo;
import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint;
public class ScratchPrelaunch implements PreLaunchEntrypoint
{
@Override
@Daomephsta
Daomephsta / RegistryWaiter.java
Last active May 16, 2021 02:58
Utility class for performing actions when certain registry objects are available. Does not handle remapping or removal.
package io.github.daomephsta;
import static java.util.stream.Collectors.toMap;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
@Daomephsta
Daomephsta / RemovalSafeLootEntryIterator.java
Created July 14, 2020 04:48
RemovalSafeLootEntryIterator
public class RemovalSafeLootEntryIterator implements Iterator<RemovalSafeLootEntryIterator>, LootEntryRepresentation
{
private final Iterator<? extends LootEntryRepresentation> delegate;
private LootEntryRepresentation currentEntry;
public RemovalSafeLootEntryIterator(Iterator<? extends LootEntryRepresentation> delegate)
{
this.delegate = delegate;
}