1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-10-24 18:37:38 +00:00

Minor fixes and cleanup

My working tree is a mess, so this is not a good commit. I'm making a
bit of a habit of this.

 - Fix UserLevel.OWNER check failing on single player servers.
 - Correctly handle the "open folder" fake command.
 - Some reshuffling of Forge-specific methods to make Fabric slightly
   easier.
This commit is contained in:
Jonathan Coates
2022-11-10 17:15:03 +00:00
parent 8360e8234d
commit b2b58892e3
17 changed files with 105 additions and 77 deletions

View File

@@ -119,7 +119,10 @@ minecraft {
mixin {
add(sourceSets.main.get(), "computercraft.mixins.refmap.json")
add(sourceSets.client.get(), "computercraft-client.mixins.refmap.json")
config("computercraft.mixins.json")
config("computercraft-client.mixins.json")
config("computercraft-client.forge.mixins.json")
}

View File

@@ -8,7 +8,10 @@ package dan200.computercraft.client;
import dan200.computercraft.api.ComputerCraftAPI;
import dan200.computercraft.client.sound.SpeakerSound;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.*;
import net.minecraftforge.client.event.CustomizeGuiOverlayEvent;
import net.minecraftforge.client.event.RenderHandEvent;
import net.minecraftforge.client.event.RenderHighlightEvent;
import net.minecraftforge.client.event.RenderItemInFrameEvent;
import net.minecraftforge.client.event.sound.PlayStreamingSourceEvent;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.level.LevelEvent;
@@ -46,11 +49,6 @@ public final class ForgeClientHooks {
}
}
@SubscribeEvent
public static void onClientSendMessage(ClientChatEvent event) {
if (ClientHooks.onChatMessage(event.getMessage())) event.setCanceled(true);
}
@SubscribeEvent
public static void onRenderText(CustomizeGuiOverlayEvent.DebugText event) {
ClientHooks.addDebugInfo(event.getRight()::add);

View File

@@ -7,12 +7,7 @@ package dan200.computercraft.mixin.client;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import dan200.computercraft.shared.ModRegistry;
import dan200.computercraft.shared.peripheral.modem.wired.CableBlock;
import dan200.computercraft.shared.peripheral.modem.wired.CableModemVariant;
import dan200.computercraft.shared.peripheral.modem.wired.CableShapes;
import dan200.computercraft.shared.util.WorldUtil;
import net.minecraft.client.Minecraft;
import dan200.computercraft.client.ClientHooks;
import net.minecraft.client.renderer.block.BlockModelShaper;
import net.minecraft.client.renderer.block.BlockRenderDispatcher;
import net.minecraft.client.renderer.block.ModelBlockRenderer;
@@ -21,8 +16,6 @@ import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import net.minecraftforge.client.model.data.ModelData;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
@@ -60,27 +53,15 @@ public class BlockRenderDispatcherMixin {
BlockState state, BlockPos pos, BlockAndTintGetter world, PoseStack pose, VertexConsumer buffers, ModelData modelData,
CallbackInfo info
) {
// Only apply to cables which have both a cable and modem
if (state.getBlock() != ModRegistry.Blocks.CABLE.get()
|| !state.getValue(CableBlock.CABLE)
|| state.getValue(CableBlock.MODEM) == CableModemVariant.None
) {
return;
var newState = ClientHooks.getBlockBreakingState(state, pos);
if (newState != null) {
info.cancel();
var model = blockModelShaper.getBlockModel(newState);
modelRenderer.tesselateBlock(
world, model, newState, pos, pose, buffers, true, random, newState.getSeed(pos),
OverlayTexture.NO_OVERLAY, modelData, null
);
}
var hit = Minecraft.getInstance().hitResult;
if (hit == null || hit.getType() != HitResult.Type.BLOCK) return;
var hitPos = ((BlockHitResult) hit).getBlockPos();
if (!hitPos.equals(pos)) return;
info.cancel();
var newState = WorldUtil.isVecInside(CableShapes.getModemShape(state), hit.getLocation().subtract(pos.getX(), pos.getY(), pos.getZ()))
? state.getBlock().defaultBlockState().setValue(CableBlock.MODEM, state.getValue(CableBlock.MODEM))
: state.setValue(CableBlock.MODEM, CableModemVariant.None);
var model = blockModelShaper.getBlockModel(newState);
var seed = newState.getSeed(pos);
modelRenderer.tesselateBlock(world, model, newState, pos, pose, buffers, true, random, seed, OverlayTexture.NO_OVERLAY, modelData, null);
}
}