Merge Shaders & RenderInvisible into Rendering
This commit is contained in:
@@ -35,8 +35,7 @@ public class MeteorRejectsAddon extends MeteorAddon {
|
|||||||
modules.add(new Lavacast());
|
modules.add(new Lavacast());
|
||||||
modules.add(new NewChunks());
|
modules.add(new NewChunks());
|
||||||
modules.add(new ObsidianFarm());
|
modules.add(new ObsidianFarm());
|
||||||
modules.add(new RenderInvisible());
|
modules.add(new Rendering());
|
||||||
modules.add(new Shaders());
|
|
||||||
modules.add(new SkeletonESP());
|
modules.add(new SkeletonESP());
|
||||||
modules.add(new Sneak());
|
modules.add(new Sneak());
|
||||||
modules.add(new SoundLocator());
|
modules.add(new SoundLocator());
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import net.minecraft.item.Items;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.GameMode;
|
import net.minecraft.world.GameMode;
|
||||||
|
|
||||||
import cloudburst.rejects.modules.RenderInvisible;
|
import cloudburst.rejects.modules.Rendering;
|
||||||
import minegame159.meteorclient.systems.modules.Modules;
|
import minegame159.meteorclient.systems.modules.Modules;
|
||||||
|
|
||||||
@Mixin(ClientWorld.class)
|
@Mixin(ClientWorld.class)
|
||||||
@@ -27,7 +27,7 @@ public abstract class ClientWorldMixin {
|
|||||||
public void doRandomBlockDisplayTicks(int xCenter, int yCenter, int i, CallbackInfo info) {
|
public void doRandomBlockDisplayTicks(int xCenter, int yCenter, int i, CallbackInfo info) {
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
boolean showBarrierParticles = this.client.interactionManager.getCurrentGameMode() == GameMode.CREATIVE && (this.client.player.inventory.getMainHandStack().getItem() == Items.BARRIER || this.client.player.inventory.offHand.get(0).getItem() == Items.BARRIER);
|
boolean showBarrierParticles = this.client.interactionManager.getCurrentGameMode() == GameMode.CREATIVE && (this.client.player.inventory.getMainHandStack().getItem() == Items.BARRIER || this.client.player.inventory.offHand.get(0).getItem() == Items.BARRIER);
|
||||||
if (Modules.get().get(RenderInvisible.class).renderBarriers()) showBarrierParticles = true;
|
if (Modules.get().get(Rendering.class).renderBarriers()) showBarrierParticles = true;
|
||||||
|
|
||||||
BlockPos.Mutable mutable = new BlockPos.Mutable();
|
BlockPos.Mutable mutable = new BlockPos.Mutable();
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package cloudburst.rejects.mixin;
|
||||||
|
|
||||||
|
import cloudburst.rejects.modules.Rendering;
|
||||||
|
import minegame159.meteorclient.systems.modules.Modules;
|
||||||
|
import net.minecraft.client.render.entity.feature.Deadmau5FeatureRenderer;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
|
@Mixin(Deadmau5FeatureRenderer.class)
|
||||||
|
public class Deadmau5FeatureRendererMixin {
|
||||||
|
@Redirect(method = "render", at = @At(value = "INVOKE", target = "Ljava/lang/String;equals(Ljava/lang/Object;)Z"))
|
||||||
|
private boolean redirectAllow(String s, Object name){
|
||||||
|
if (Modules.get().get(Rendering.class).deadmau5EarsEnabled()) {
|
||||||
|
return true; //Allow it always
|
||||||
|
}
|
||||||
|
return name.equals(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ import minegame159.meteorclient.systems.modules.Modules;
|
|||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
|
||||||
import cloudburst.rejects.modules.RenderInvisible;
|
import cloudburst.rejects.modules.Rendering;
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
@@ -17,6 +17,6 @@ public abstract class EntityMixin {
|
|||||||
private void isInvisibleToCanceller(PlayerEntity player, CallbackInfoReturnable<Boolean> info) {
|
private void isInvisibleToCanceller(PlayerEntity player, CallbackInfoReturnable<Boolean> info) {
|
||||||
if (player == null) info.setReturnValue(false);
|
if (player == null) info.setReturnValue(false);
|
||||||
|
|
||||||
if (Modules.get().get(RenderInvisible.class).renderEntities()) info.setReturnValue(false);
|
if (Modules.get().get(Rendering.class).renderEntities()) info.setReturnValue(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import net.minecraft.client.MinecraftClient;
|
|||||||
import net.minecraft.client.gl.ShaderEffect;
|
import net.minecraft.client.gl.ShaderEffect;
|
||||||
import net.minecraft.client.render.GameRenderer;
|
import net.minecraft.client.render.GameRenderer;
|
||||||
|
|
||||||
import cloudburst.rejects.modules.Shaders;
|
import cloudburst.rejects.modules.Rendering;
|
||||||
import minegame159.meteorclient.systems.modules.Modules;
|
import minegame159.meteorclient.systems.modules.Modules;
|
||||||
|
|
||||||
@Mixin(GameRenderer.class)
|
@Mixin(GameRenderer.class)
|
||||||
@@ -18,7 +18,7 @@ public class GameRendererMixin {
|
|||||||
|
|
||||||
@Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/GameRenderer;shader:Lnet/minecraft/client/gl/ShaderEffect;", ordinal = 0))
|
@Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/GameRenderer;shader:Lnet/minecraft/client/gl/ShaderEffect;", ordinal = 0))
|
||||||
private ShaderEffect renderShader(GameRenderer renderer, float tickDelta) {
|
private ShaderEffect renderShader(GameRenderer renderer, float tickDelta) {
|
||||||
ShaderEffect shader = Modules.get().get(Shaders.class).getShaderEffect();
|
ShaderEffect shader = Modules.get().get(Rendering.class).getShaderEffect();
|
||||||
|
|
||||||
if (shader != null) {
|
if (shader != null) {
|
||||||
shader.setupDimensions(client.getWindow().getFramebufferWidth(), client.getWindow().getFramebufferHeight());
|
shader.setupDimensions(client.getWindow().getFramebufferWidth(), client.getWindow().getFramebufferHeight());
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package cloudburst.rejects.mixin;
|
||||||
|
|
||||||
|
import cloudburst.rejects.modules.Rendering;
|
||||||
|
import minegame159.meteorclient.systems.modules.Modules;
|
||||||
|
import net.fabricmc.api.EnvType;
|
||||||
|
import net.fabricmc.api.Environment;
|
||||||
|
import net.minecraft.client.render.entity.LivingEntityRenderer;
|
||||||
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
import net.minecraft.client.util.math.Vector3f;
|
||||||
|
import net.minecraft.entity.LivingEntity;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
@Environment(EnvType.CLIENT)
|
||||||
|
@Mixin(LivingEntityRenderer.class)
|
||||||
|
public class LivingEntityRendererMixin {
|
||||||
|
|
||||||
|
@Inject(method = "setupTransforms", at = @At(value = "TAIL"))
|
||||||
|
private void dinnerboneEntities(LivingEntity entity, MatrixStack matrices, float _animationProgress, float _bodyYaw, float _tickDelta, CallbackInfo _info) {
|
||||||
|
if ((!(entity instanceof PlayerEntity)) && Modules.get().get(Rendering.class).dinnerboneEnabled()) {
|
||||||
|
matrices.translate(0.0D, entity.getHeight() + 0.1F, 0.0D);
|
||||||
|
matrices.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(180.0F));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@ import net.minecraft.block.StructureVoidBlock;
|
|||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
|
|
||||||
import minegame159.meteorclient.systems.modules.Modules;
|
import minegame159.meteorclient.systems.modules.Modules;
|
||||||
import cloudburst.rejects.modules.RenderInvisible;
|
import cloudburst.rejects.modules.Rendering;
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
@@ -28,7 +28,7 @@ public abstract class StructureVoidBlockMixin extends Block {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isSideInvisible(BlockState state, BlockState neighbor, Direction facing) {
|
public boolean isSideInvisible(BlockState state, BlockState neighbor, Direction facing) {
|
||||||
return !(Modules.get().get(RenderInvisible.class).renderStructureVoid());
|
return !(Modules.get().get(Rendering.class).renderStructureVoid());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
package cloudburst.rejects.modules;
|
|
||||||
|
|
||||||
import cloudburst.rejects.MeteorRejectsAddon;
|
|
||||||
import minegame159.meteorclient.settings.BoolSetting;
|
|
||||||
import minegame159.meteorclient.settings.Setting;
|
|
||||||
import minegame159.meteorclient.settings.SettingGroup;
|
|
||||||
import minegame159.meteorclient.systems.modules.Categories;
|
|
||||||
import minegame159.meteorclient.systems.modules.Module;
|
|
||||||
|
|
||||||
public class RenderInvisible extends Module {
|
|
||||||
|
|
||||||
private final SettingGroup sgGeneral = settings.getDefaultGroup();
|
|
||||||
|
|
||||||
private final Setting<Boolean> entities = sgGeneral.add(new BoolSetting.Builder()
|
|
||||||
.name("entities")
|
|
||||||
.description("Render invisible entities.")
|
|
||||||
.defaultValue(true)
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
|
|
||||||
private final Setting<Boolean> barrier = sgGeneral.add(new BoolSetting.Builder()
|
|
||||||
.name("barrier")
|
|
||||||
.description("Render barrier blocks.")
|
|
||||||
.defaultValue(true)
|
|
||||||
.onChanged(onChanged -> {
|
|
||||||
if(this.isActive()) {
|
|
||||||
mc.worldRenderer.reload();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
|
|
||||||
private final Setting<Boolean> structureVoid = sgGeneral.add(new BoolSetting.Builder()
|
|
||||||
.name("structure-void")
|
|
||||||
.description("Render structure void blocks.")
|
|
||||||
.defaultValue(true)
|
|
||||||
.onChanged(onChanged -> {
|
|
||||||
if(this.isActive()) {
|
|
||||||
mc.worldRenderer.reload();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onActivate() {
|
|
||||||
mc.worldRenderer.reload();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDeactivate() {
|
|
||||||
mc.worldRenderer.reload();
|
|
||||||
}
|
|
||||||
|
|
||||||
public RenderInvisible() {
|
|
||||||
super(MeteorRejectsAddon.CATEGORY, "render-invisible", "Renders invisible entities and blocks.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean renderEntities() {
|
|
||||||
return this.isActive() && entities.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean renderBarriers() {
|
|
||||||
return this.isActive() && barrier.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean renderStructureVoid() {
|
|
||||||
return this.isActive() && structureVoid.get();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
157
src/main/java/cloudburst/rejects/modules/Rendering.java
Normal file
157
src/main/java/cloudburst/rejects/modules/Rendering.java
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
package cloudburst.rejects.modules;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import net.minecraft.client.gl.ShaderEffect;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import cloudburst.rejects.MeteorRejectsAddon;
|
||||||
|
import minegame159.meteorclient.settings.EnumSetting;
|
||||||
|
import minegame159.meteorclient.settings.BoolSetting;
|
||||||
|
import minegame159.meteorclient.settings.Setting;
|
||||||
|
import minegame159.meteorclient.settings.SettingGroup;
|
||||||
|
import minegame159.meteorclient.systems.modules.Module;
|
||||||
|
|
||||||
|
public class Rendering extends Module {
|
||||||
|
|
||||||
|
public enum Shader {
|
||||||
|
None,
|
||||||
|
Notch,
|
||||||
|
FXAA,
|
||||||
|
Art,
|
||||||
|
Bumpy,
|
||||||
|
Blobs,
|
||||||
|
Blobs2,
|
||||||
|
Pencil,
|
||||||
|
Vibrant,
|
||||||
|
Deconverge,
|
||||||
|
Flip,
|
||||||
|
Invert,
|
||||||
|
NTSC,
|
||||||
|
Outline,
|
||||||
|
Phosphor,
|
||||||
|
Scanline,
|
||||||
|
Sobel,
|
||||||
|
Bits,
|
||||||
|
Desaturate,
|
||||||
|
Green,
|
||||||
|
Blur,
|
||||||
|
Wobble,
|
||||||
|
Antialias,
|
||||||
|
Creeper,
|
||||||
|
Spider
|
||||||
|
}
|
||||||
|
|
||||||
|
private final SettingGroup sgInvisible = settings.createGroup("Invisible");
|
||||||
|
private final SettingGroup sgFun = settings.createGroup("Fun");
|
||||||
|
|
||||||
|
private ShaderEffect shader = null;
|
||||||
|
|
||||||
|
public Rendering() {
|
||||||
|
super(MeteorRejectsAddon.CATEGORY, "Rendering", "Various Render Tweaks");
|
||||||
|
}
|
||||||
|
|
||||||
|
private final Setting<Boolean> entities = sgInvisible.add(new BoolSetting.Builder()
|
||||||
|
.name("entities")
|
||||||
|
.description("Render invisible entities.")
|
||||||
|
.defaultValue(true)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
|
||||||
|
private final Setting<Boolean> barrier = sgInvisible.add(new BoolSetting.Builder()
|
||||||
|
.name("barrier")
|
||||||
|
.description("Render barrier blocks.")
|
||||||
|
.defaultValue(true)
|
||||||
|
.onChanged(onChanged -> {
|
||||||
|
if(this.isActive()) {
|
||||||
|
mc.worldRenderer.reload();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
|
||||||
|
private final Setting<Boolean> structureVoid = sgInvisible.add(new BoolSetting.Builder()
|
||||||
|
.name("structure-void")
|
||||||
|
.description("Render structure void blocks.")
|
||||||
|
.defaultValue(true)
|
||||||
|
.onChanged(onChanged -> {
|
||||||
|
if(this.isActive()) {
|
||||||
|
mc.worldRenderer.reload();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
|
||||||
|
private final Setting<Shader> shaderEnum = sgFun.add(new EnumSetting.Builder<Shader>()
|
||||||
|
.name("shader")
|
||||||
|
.description("Select which shader to use")
|
||||||
|
.defaultValue(Shader.None)
|
||||||
|
.onChanged(this::onChanged)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
|
||||||
|
private final Setting<Boolean> dinnerbone = sgFun.add(new BoolSetting.Builder()
|
||||||
|
.name("dinnerbone")
|
||||||
|
.description("Apply dinnerbone effects to all entities")
|
||||||
|
.defaultValue(false)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
|
||||||
|
private final Setting<Boolean> deadmau5Ears = sgFun.add(new BoolSetting.Builder()
|
||||||
|
.name("deadmau5-ears")
|
||||||
|
.description("Add deadmau5 ears to all players")
|
||||||
|
.defaultValue(false)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivate() {
|
||||||
|
mc.worldRenderer.reload();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDeactivate() {
|
||||||
|
mc.worldRenderer.reload();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onChanged(Shader s) {
|
||||||
|
String name;
|
||||||
|
if (s == Shader.Vibrant) name = "color_convolve";
|
||||||
|
else if (s == Shader.Scanline) name = "scan_pincushion";
|
||||||
|
else name = s.toString().toLowerCase();
|
||||||
|
Identifier shaderID = new Identifier(String.format("shaders/post/%s.json", name));
|
||||||
|
try {
|
||||||
|
ShaderEffect shader = new ShaderEffect(mc.getTextureManager(), mc.getResourceManager(), mc.getFramebuffer(), shaderID);
|
||||||
|
this.shader = shader;
|
||||||
|
} catch (IOException e) {
|
||||||
|
this.shader = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean renderEntities() {
|
||||||
|
return this.isActive() && entities.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean renderBarriers() {
|
||||||
|
return this.isActive() && barrier.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean renderStructureVoid() {
|
||||||
|
return this.isActive() && structureVoid.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ShaderEffect getShaderEffect() {
|
||||||
|
if (!this.isActive()) return null;
|
||||||
|
return shader;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean dinnerboneEnabled() {
|
||||||
|
if (!this.isActive()) return false;
|
||||||
|
return dinnerbone.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean deadmau5EarsEnabled() {
|
||||||
|
if (!this.isActive()) return false;
|
||||||
|
return deadmau5Ears.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
package cloudburst.rejects.modules;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import net.minecraft.client.gl.ShaderEffect;
|
|
||||||
import net.minecraft.util.Identifier;
|
|
||||||
|
|
||||||
import cloudburst.rejects.MeteorRejectsAddon;
|
|
||||||
import minegame159.meteorclient.settings.EnumSetting;
|
|
||||||
import minegame159.meteorclient.settings.Setting;
|
|
||||||
import minegame159.meteorclient.settings.SettingGroup;
|
|
||||||
import minegame159.meteorclient.systems.modules.Module;
|
|
||||||
|
|
||||||
public class Shaders extends Module {
|
|
||||||
|
|
||||||
public enum Shader {
|
|
||||||
None,
|
|
||||||
Notch,
|
|
||||||
FXAA,
|
|
||||||
Art,
|
|
||||||
Bumpy,
|
|
||||||
Blobs,
|
|
||||||
Blobs2,
|
|
||||||
Pencil,
|
|
||||||
Vibrant,
|
|
||||||
Deconverge,
|
|
||||||
Flip,
|
|
||||||
Invert,
|
|
||||||
NTSC,
|
|
||||||
Outline,
|
|
||||||
Phosphor,
|
|
||||||
Scanline,
|
|
||||||
Sobel,
|
|
||||||
Bits,
|
|
||||||
Desaturate,
|
|
||||||
Green,
|
|
||||||
Blur,
|
|
||||||
Wobble,
|
|
||||||
Antialias,
|
|
||||||
Creeper,
|
|
||||||
Spider
|
|
||||||
}
|
|
||||||
|
|
||||||
private final SettingGroup sgGeneral = settings.getDefaultGroup();
|
|
||||||
|
|
||||||
private ShaderEffect shader = null;
|
|
||||||
|
|
||||||
public Shaders() {
|
|
||||||
super(MeteorRejectsAddon.CATEGORY, "shaders", "1.7 Super secret settings");
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Setting<Shader> shaderEnum = sgGeneral.add(new EnumSetting.Builder<Shader>()
|
|
||||||
.name("shader")
|
|
||||||
.description("Select which shader to use")
|
|
||||||
.defaultValue(Shader.None)
|
|
||||||
.onChanged(this::onChanged)
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
public void onChanged(Shader s) {
|
|
||||||
String name;
|
|
||||||
if (s == Shader.Vibrant) name = "color_convolve";
|
|
||||||
else if (s == Shader.Scanline) name = "scan_pincushion";
|
|
||||||
else name = s.toString().toLowerCase();
|
|
||||||
Identifier shaderID = new Identifier(String.format("shaders/post/%s.json", name));
|
|
||||||
try {
|
|
||||||
ShaderEffect shader = new ShaderEffect(mc.getTextureManager(), mc.getResourceManager(), mc.getFramebuffer(), shaderID);
|
|
||||||
this.shader = shader;
|
|
||||||
} catch (IOException e) {
|
|
||||||
this.shader = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ShaderEffect getShaderEffect() {
|
|
||||||
if (!this.isActive()) return null;
|
|
||||||
return shader;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -7,7 +7,9 @@
|
|||||||
"client": [
|
"client": [
|
||||||
"EntityMixin",
|
"EntityMixin",
|
||||||
"ClientWorldMixin",
|
"ClientWorldMixin",
|
||||||
|
"Deadmau5FeatureRendererMixin",
|
||||||
"StructureVoidBlockMixin",
|
"StructureVoidBlockMixin",
|
||||||
|
"LivingEntityRendererMixin",
|
||||||
"GameRendererMixin"
|
"GameRendererMixin"
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
|
|||||||
Reference in New Issue
Block a user