Mixin Fixes

This commit is contained in:
Frank Bauer 2021-06-25 00:00:09 +02:00
parent e104752c6d
commit e25ab5698d
14 changed files with 45 additions and 69 deletions

View file

@ -1,5 +1,6 @@
package ru.betterend.mixin.client;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@ -18,6 +19,7 @@ import ru.bclib.client.gui.BlockSignEditScreen;
@Mixin(ClientPacketListener.class)
public class ClientPlayNetworkHandlerMixin
{
@Final
@Shadow
private Minecraft minecraft;

View file

@ -1,14 +0,0 @@
package ru.betterend.mixin.client;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import com.google.gson.Gson;
import net.minecraft.client.renderer.block.model.BlockModelDefinition;
@Mixin(BlockModelDefinition.Context.class)
public interface ContextGsonAccessor {
@Accessor
Gson getGson();
}

View file

@ -1,16 +1,14 @@
package ru.betterend.mixin.client;
import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.HumanoidMobRenderer;
import net.minecraft.client.renderer.entity.MobRenderer;
import net.minecraft.world.entity.Mob;
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;
import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
import net.minecraft.client.renderer.entity.HumanoidMobRenderer;
import net.minecraft.client.renderer.entity.MobRenderer;
import net.minecraft.world.entity.Mob;
import ru.betterend.client.render.ArmoredElytraLayer;
@Mixin(HumanoidMobRenderer.class)

View file

@ -1,16 +1,14 @@
package ru.betterend.mixin.client;
import net.minecraft.client.model.PlayerModel;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
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;
import net.minecraft.client.model.PlayerModel;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
import ru.betterend.client.render.ArmoredElytraLayer;
@Mixin(PlayerRenderer.class)

View file

@ -65,7 +65,7 @@ public abstract class AnvilMenuMixin extends ItemCombinerMenu implements AnvilSc
}
@Inject(method = "onTake", at = @At("HEAD"), cancellable = true)
protected void be_onTakeOutput(Player player, ItemStack stack, CallbackInfoReturnable<ItemStack> info) {
protected void be_onTakeOutput(Player player, ItemStack stack, CallbackInfo info) {
if (be_currentRecipe != null) {
inputSlots.getItem(0).shrink(be_currentRecipe.getInputCount());
stack = be_currentRecipe.craft(inputSlots, player);
@ -85,7 +85,8 @@ public abstract class AnvilMenuMixin extends ItemCombinerMenu implements AnvilSc
world.levelEvent(1030, blockPos, 0);
}
});
info.setReturnValue(stack);
//TODO: no more return, does this still work?
//info.setReturnValue(stack);
}
}

View file

@ -46,7 +46,7 @@ public abstract class ChorusPlantBlockMixin extends Block {
}
}
@Inject(method = "getStateForPlacement", at = @At("RETURN"), cancellable = true)
@Inject(method = "getStateForPlacement(Lnet/minecraft/world/item/context/BlockPlaceContext;)Lnet/minecraft/world/level/block/state/BlockState;", at = @At("RETURN"), cancellable = true)
private void be_getStateForPlacement(BlockPlaceContext ctx, CallbackInfoReturnable<BlockState> info) {
BlockPos pos = ctx.getClickedPos();
Level world = ctx.getLevel();

View file

@ -27,11 +27,7 @@ public class ChunkBiomeContainerMixin implements IBiomeArray {
@Final
@Shadow
public static int HORIZONTAL_MASK;
@Final
@Shadow
public static int VERTICAL_MASK;
private static int HORIZONTAL_MASK;
@Override
public void be_setBiome(Biome biome, BlockPos pos) {
@ -78,9 +74,12 @@ public class ChunkBiomeContainerMixin implements IBiomeArray {
biomes[index] = biome;
}
@Shadow @Final private int quartMinY;
@Shadow @Final private int quartHeight;
private int be_getArrayIndex(int biomeX, int biomeY, int biomeZ) {
int i = biomeX & HORIZONTAL_MASK;
int j = Mth.clamp(biomeY, 0, VERTICAL_MASK);
int j = Mth.clamp(biomeY - this.quartMinY, 0, this.quartHeight);
int k = biomeZ & HORIZONTAL_MASK;
return j << WIDTH_BITS + WIDTH_BITS | k << WIDTH_BITS | i;
}

View file

@ -19,9 +19,9 @@ import ru.betterend.interfaces.TeleportingEntity;
@Mixin(Entity.class)
public abstract class EntityMixin implements TeleportingEntity {
@Shadow
public float yRot;
private float yRot;
@Shadow
public float xRot;
private float xRot;
@Shadow
public Level level;

View file

@ -22,7 +22,7 @@ import net.minecraft.world.level.storage.WorldData;
import ru.betterend.world.generator.GeneratorOptions;
@Mixin(MinecraftServer.class)
public class MinecraftServerMixin {
public abstract class MinecraftServerMixin {
@Shadow
private ServerResources resources;
@ -35,7 +35,7 @@ public class MinecraftServerMixin {
protected WorldData worldData;
@Inject(method = "overworld", at = @At(value = "HEAD"), cancellable = true)
private final void be_overworld(CallbackInfoReturnable<ServerLevel> info) {
private void be_overworld(CallbackInfoReturnable<ServerLevel> info) {
if (GeneratorOptions.swapOverworldToEnd()) {
ServerLevel world = levels.get(Level.END);
if (world == null) {
@ -47,7 +47,7 @@ public class MinecraftServerMixin {
}
@Inject(method = "createLevels", at = @At(value = "TAIL"))
private final void be_createLevels(ChunkProgressListener worldGenerationProgressListener, CallbackInfo info) {
private void be_createLevels(ChunkProgressListener worldGenerationProgressListener, CallbackInfo info) {
if (GeneratorOptions.swapOverworldToEnd()) {
ServerLevel world = levels.get(Level.END);
if (world == null) {
@ -57,19 +57,19 @@ public class MinecraftServerMixin {
ServerLevelData serverWorldProperties = worldData.overworldData();
net.minecraft.world.level.levelgen.WorldGenSettings generatorOptions = worldData.worldGenSettings();
boolean bl = generatorOptions.isDebug();
setInitialSpawn(world, serverWorldProperties, generatorOptions.generateBonusChest(), bl, true);
setInitialSpawn(world, serverWorldProperties, generatorOptions.generateBonusChest(), bl);
}
}
@Shadow private static void setInitialSpawn(ServerLevel serverLevel, ServerLevelData serverLevelData, boolean bl, boolean bl2) {};
@Inject(method = "setInitialSpawn", at = @At(value = "HEAD"), cancellable = true)
private static void be_setInitialSpawn(ServerLevel world, ServerLevelData serverWorldProperties, boolean bonusChest, boolean debugWorld, boolean bl, CallbackInfo info) {
private static void be_setInitialSpawn(ServerLevel world, ServerLevelData serverWorldProperties, boolean bonusChest, boolean debugWorld, CallbackInfo info) {
if (GeneratorOptions.swapOverworldToEnd() && world.dimension() == Level.OVERWORLD) {
info.cancel();
}
}
@Shadow
private static void setInitialSpawn(ServerLevel world, ServerLevelData serverWorldProperties, boolean bonusChest, boolean debugWorld, boolean bl) {}
@Shadow
public PlayerList getPlayerList() {

View file

@ -32,8 +32,8 @@ public abstract class NoiseBasedChunkGeneratorMixin extends ChunkGenerator {
TerrainGenerator.initNoise(seed);
}
@Inject(method = "fillNoiseColumn([DII)V", at = @At("HEAD"), cancellable = true, allow = 2)
private void be_fillNoiseColumn(double[] buffer, int x, int z, CallbackInfo info) {
@Inject(method = "fillNoiseColumn([DIIII)V", at = @At("HEAD"), cancellable = true, allow = 2)
private void be_fillNoiseColumn(double[] buffer, int x, int z, int k, int l, CallbackInfo info) {
if (GeneratorOptions.useNewGenerator() && settings.get().stable(NoiseGeneratorSettings.END)) {
TerrainGenerator.fillTerrainDensity(buffer, x, z, getBiomeSource());
info.cancel();

View file

@ -163,9 +163,9 @@ public class PlayerListMixin {
this.broadcastAll(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.ADD_PLAYER,
new ServerPlayer[] { serverPlayer }));
for (int i = 0; i < this.players.size(); ++i) {
for (ServerPlayer player : this.players) {
serverPlayer.connection.send(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.ADD_PLAYER,
new ServerPlayer[] { (ServerPlayer) this.players.get(i) }));
new ServerPlayer[]{(ServerPlayer) player}));
}
serverLevel3.addNewPlayer(serverPlayer);
@ -176,10 +176,7 @@ public class PlayerListMixin {
this.server.isResourcePackRequired(), this.server.getResourcePackPrompt());
}
Iterator<?> var24 = serverPlayer.getActiveEffects().iterator();
while (var24.hasNext()) {
MobEffectInstance statusEffectInstance = (MobEffectInstance) var24.next();
for (MobEffectInstance statusEffectInstance : serverPlayer.getActiveEffects()) {
serverPlayNetworkHandler
.send(new ClientboundUpdateMobEffectPacket(serverPlayer.getId(), statusEffectInstance));
}

View file

@ -132,7 +132,7 @@ public abstract class ServerPlayerMixin extends Player implements TeleportingEnt
}
@Shadow
abstract ServerLevel getLevel();
public abstract ServerLevel getLevel();
@Shadow
abstract void triggerDimensionChangeTriggers(ServerLevel origin);

View file

@ -7,8 +7,6 @@ import org.spongepowered.asm.mixin.Shadow;
import ru.betterend.util.ShuffelingListExtended;
import java.util.List;
import java.util.Random;
import java.util.stream.Stream;
@Mixin(ShufflingList.class)
public abstract class ShuffelingListMixin<U> implements ShuffelingListExtended<U> {

View file

@ -1,38 +1,35 @@
package ru.betterend.mixin.common;
import java.util.Random;
import net.minecraft.core.Vec3i;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
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;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.core.Vec3i;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.boss.enderdragon.EndCrystal;
import net.minecraft.world.level.ServerLevelAccessor;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.IronBarsBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.Heightmap.Types;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
import net.minecraft.world.level.levelgen.feature.SpikeFeature;
import net.minecraft.world.level.levelgen.feature.configurations.SpikeConfiguration;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
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;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import ru.bclib.api.WorldDataAPI;
import ru.bclib.util.BlocksHelper;
import ru.bclib.util.StructureHelper;
import ru.betterend.BetterEnd;
import ru.betterend.world.generator.GeneratorOptions;
import java.util.Random;
@Mixin(SpikeFeature.class)
public class SpikeFeatureMixin {
@Inject(method = "place", at = @At("HEAD"), cancellable = true)