0
0
mirror of https://github.com/Wurst-Imperium/Wurst7.git synced 2024-09-20 01:12:13 +02:00

RenderBlockModelListener -> TesselateBlockListener

This commit is contained in:
Alexander01998 2019-08-20 17:35:16 +02:00
parent d83b6d50b2
commit 040c8d7280
4 changed files with 50 additions and 72 deletions

View File

@ -13,16 +13,16 @@ import net.minecraft.block.BlockState;
import net.wurstclient.event.CancellableEvent;
import net.wurstclient.event.Listener;
public interface RenderBlockModelListener extends Listener
public interface TesselateBlockListener extends Listener
{
public void onRenderBlockModel(RenderBlockModelEvent event);
public void onTesselateBlock(TesselateBlockEvent event);
public static class RenderBlockModelEvent
extends CancellableEvent<RenderBlockModelListener>
public static class TesselateBlockEvent
extends CancellableEvent<TesselateBlockListener>
{
private final BlockState state;
public RenderBlockModelEvent(BlockState state)
public TesselateBlockEvent(BlockState state)
{
this.state = state;
}
@ -33,11 +33,11 @@ public interface RenderBlockModelListener extends Listener
}
@Override
public void fire(ArrayList<RenderBlockModelListener> listeners)
public void fire(ArrayList<TesselateBlockListener> listeners)
{
for(RenderBlockModelListener listener : listeners)
for(TesselateBlockListener listener : listeners)
{
listener.onRenderBlockModel(this);
listener.onTesselateBlock(this);
if(isCancelled())
break;
@ -45,9 +45,9 @@ public interface RenderBlockModelListener extends Listener
}
@Override
public Class<RenderBlockModelListener> getListenerType()
public Class<TesselateBlockListener> getListenerType()
{
return RenderBlockModelListener.class;
return TesselateBlockListener.class;
}
}
}

View File

@ -1,60 +0,0 @@
/*
* Copyright (C) 2014 - 2019 | Wurst-Imperium | All rights reserved.
*
* This source code is subject to the terms of the GNU General Public
* License, version 3. If a copy of the GPL was not distributed with this
* file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt
*/
package net.wurstclient.mixin;
import java.util.Random;
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.CallbackInfoReturnable;
import net.minecraft.block.BlockState;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.block.BlockModelRenderer;
import net.minecraft.client.render.model.BakedModel;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ExtendedBlockView;
import net.wurstclient.WurstClient;
import net.wurstclient.events.RenderBlockModelListener.RenderBlockModelEvent;
@Mixin(BlockModelRenderer.class)
public class BlockModelRendererMixin
{
@Inject(at = {@At("HEAD")},
method = {
"tesselateSmooth(Lnet/minecraft/world/ExtendedBlockView;Lnet/minecraft/client/render/model/BakedModel;Lnet/minecraft/block/BlockState;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/client/render/BufferBuilder;ZLjava/util/Random;J)Z"},
cancellable = true)
private void onTesselateSmooth(ExtendedBlockView extendedBlockView_1,
BakedModel bakedModel_1, BlockState state, BlockPos blockPos_1,
BufferBuilder bufferBuilder_1, boolean boolean_1, Random random_1,
long long_1, CallbackInfoReturnable<Boolean> ci)
{
RenderBlockModelEvent event = new RenderBlockModelEvent(state);
WurstClient.INSTANCE.getEventManager().fire(event);
if(event.isCancelled())
ci.cancel();
}
@Inject(at = {@At("HEAD")},
method = {
"tesselateFlat(Lnet/minecraft/world/ExtendedBlockView;Lnet/minecraft/client/render/model/BakedModel;Lnet/minecraft/block/BlockState;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/client/render/BufferBuilder;ZLjava/util/Random;J)Z"},
cancellable = true)
private void onTesselateFlat(ExtendedBlockView extendedBlockView_1,
BakedModel bakedModel_1, BlockState state, BlockPos blockPos_1,
BufferBuilder bufferBuilder_1, boolean boolean_1, Random random_1,
long long_1, CallbackInfoReturnable<Boolean> ci)
{
RenderBlockModelEvent event = new RenderBlockModelEvent(state);
WurstClient.INSTANCE.getEventManager().fire(event);
if(event.isCancelled())
ci.cancel();
}
}

View File

@ -0,0 +1,38 @@
/*
* Copyright (C) 2014 - 2019 | Wurst-Imperium | All rights reserved.
*
* This source code is subject to the terms of the GNU General Public
* License, version 3. If a copy of the GPL was not distributed with this
* file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt
*/
package net.wurstclient.mixin;
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.CallbackInfoReturnable;
import net.fabricmc.indigo.renderer.render.TerrainRenderContext;
import net.minecraft.block.BlockState;
import net.minecraft.client.render.model.BakedModel;
import net.minecraft.util.math.BlockPos;
import net.wurstclient.WurstClient;
import net.wurstclient.events.TesselateBlockListener.TesselateBlockEvent;
@Mixin(TerrainRenderContext.class)
public class TerrainRenderContextMixin
{
@Inject(at = {@At("HEAD")},
method = {
"tesselateBlock(Lnet/minecraft/block/BlockState;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/client/render/model/BakedModel;)Z"},
cancellable = true)
private void tesselateBlock(BlockState blockState, BlockPos blockPos,
final BakedModel model, CallbackInfoReturnable<Boolean> cir)
{
TesselateBlockEvent event = new TesselateBlockEvent(blockState);
WurstClient.INSTANCE.getEventManager().fire(event);
if(event.isCancelled())
cir.cancel();
}
}

View File

@ -7,7 +7,6 @@
"client": [
"BlockEntityRenderDispatcherMixin",
"BlockMixin",
"BlockModelRendererMixin",
"BlockStateMixin",
"ChatHudMixin",
"ChunkOcclusionGraphBuilderMixin",
@ -19,7 +18,8 @@
"IngameHudMixin",
"KeyBindingMixin",
"KeyboardMixin",
"MinecraftClientMixin"
"MinecraftClientMixin",
"TerrainRenderContextMixin"
],
"injectors": {
"defaultRequire": 1