Reformated

This commit is contained in:
Frank 2022-06-08 20:58:41 +02:00
parent fc1da134e7
commit 60e8008cb7
416 changed files with 5772 additions and 4573 deletions

View file

@ -1,12 +1,13 @@
package org.betterx.betterend.mixin.client;
import org.betterx.betterend.client.render.ArmoredElytraLayer;
import net.minecraft.client.model.ArmorStandArmorModel;
import net.minecraft.client.renderer.entity.ArmorStandRenderer;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
import net.minecraft.world.entity.decoration.ArmorStand;
import org.betterx.betterend.client.render.ArmoredElytraLayer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;

View file

@ -1,5 +1,10 @@
package org.betterx.betterend.mixin.client;
import org.betterx.bclib.util.ColorUtil;
import org.betterx.bclib.util.MHelper;
import org.betterx.betterend.client.ClientOptions;
import org.betterx.betterend.registry.EndBlocks;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BiomeColors;
import net.minecraft.core.BlockPos;
@ -8,10 +13,6 @@ import net.minecraft.world.level.BlockAndTintGetter;
import net.fabricmc.loader.api.FabricLoader;
import org.betterx.bclib.util.ColorUtil;
import org.betterx.bclib.util.MHelper;
import org.betterx.betterend.client.ClientOptions;
import org.betterx.betterend.registry.EndBlocks;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;

View file

@ -1,13 +1,14 @@
package org.betterx.betterend.mixin.client;
import org.betterx.betterend.item.ArmoredElytra;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.layers.CapeLayer;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.ItemStack;
import com.mojang.blaze3d.vertex.PoseStack;
import org.betterx.betterend.item.ArmoredElytra;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -17,17 +18,19 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public class CapeLayerMixin {
@Inject(method = "render", at = @At("HEAD"), cancellable = true)
public void be_checkCustomElytra(PoseStack poseStack,
MultiBufferSource multiBufferSource,
int i,
AbstractClientPlayer abstractClientPlayer,
float f,
float g,
float h,
float j,
float k,
float l,
CallbackInfo info) {
public void be_checkCustomElytra(
PoseStack poseStack,
MultiBufferSource multiBufferSource,
int i,
AbstractClientPlayer abstractClientPlayer,
float f,
float g,
float h,
float j,
float k,
float l,
CallbackInfo info
) {
ItemStack itemStack = abstractClientPlayer.getItemBySlot(EquipmentSlot.CHEST);
if (itemStack.getItem() instanceof ArmoredElytra) {
info.cancel();

View file

@ -1,9 +1,10 @@
package org.betterx.betterend.mixin.client;
import org.betterx.betterend.integration.Integrations;
import net.minecraft.client.renderer.DimensionSpecialEffects.EndEffects;
import net.minecraft.world.phys.Vec3;
import org.betterx.betterend.integration.Integrations;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;

View file

@ -1,12 +1,13 @@
package org.betterx.betterend.mixin.client;
import org.betterx.betterend.client.render.ArmoredElytraLayer;
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.betterx.betterend.client.render.ArmoredElytraLayer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -20,13 +21,15 @@ public abstract class HumanoidMobRendererMixin<T extends Mob, M extends Humanoid
}
@Inject(method = "<init>(Lnet/minecraft/client/renderer/entity/EntityRendererProvider$Context;Lnet/minecraft/client/model/HumanoidModel;FFFF)V", at = @At("TAIL"))
public void be_addCustomLayer(EntityRendererProvider.Context context,
M humanoidModel,
float f,
float g,
float h,
float i,
CallbackInfo ci) {
public void be_addCustomLayer(
EntityRendererProvider.Context context,
M humanoidModel,
float f,
float g,
float h,
float i,
CallbackInfo ci
) {
addLayer(new ArmoredElytraLayer<>(this, context.getModelSet()));
}
}

View file

@ -1,11 +1,12 @@
package org.betterx.betterend.mixin.client;
import org.betterx.betterend.events.ItemTooltipCallback;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import org.betterx.betterend.events.ItemTooltipCallback;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -16,9 +17,11 @@ import java.util.List;
@Mixin(ItemStack.class)
public class ItemStackMixin {
@Inject(method = "getTooltipLines", at = @At("RETURN"))
private void be_getTooltip(Player entity,
TooltipFlag tooltipContext,
CallbackInfoReturnable<List<Component>> info) {
private void be_getTooltip(
Player entity,
TooltipFlag tooltipContext,
CallbackInfoReturnable<List<Component>> info
) {
ItemTooltipCallback.EVENT.invoker()
.getTooltip(entity, ItemStack.class.cast(this), tooltipContext, info.getReturnValue());
}

View file

@ -1,5 +1,8 @@
package org.betterx.betterend.mixin.client;
import org.betterx.betterend.interfaces.FallFlyingItem;
import com.mojang.authlib.GameProfile;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.client.player.AbstractClientPlayer;
@ -10,8 +13,6 @@ import net.minecraft.world.entity.player.ProfilePublicKey;
import net.minecraft.world.item.ElytraItem;
import net.minecraft.world.item.ItemStack;
import com.mojang.authlib.GameProfile;
import org.betterx.betterend.interfaces.FallFlyingItem;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@ -28,9 +29,11 @@ public abstract class LocalPlayerMixin extends AbstractClientPlayer {
@Shadow
public ClientPacketListener connection;
public LocalPlayerMixin(ClientLevel clientLevel,
GameProfile gameProfile,
@Nullable ProfilePublicKey profilePublicKey) {
public LocalPlayerMixin(
ClientLevel clientLevel,
GameProfile gameProfile,
@Nullable ProfilePublicKey profilePublicKey
) {
super(clientLevel, gameProfile, profilePublicKey);
}

View file

@ -1,5 +1,7 @@
package org.betterx.betterend.mixin.client;
import org.betterx.bclib.util.MHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.screens.Screen;
@ -10,7 +12,6 @@ import net.minecraft.sounds.Music;
import net.minecraft.sounds.Musics;
import net.minecraft.world.level.Level;
import org.betterx.bclib.util.MHelper;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@ -40,7 +41,7 @@ public class MinecraftClientMixin {
if (this.gui.getBossOverlay().shouldPlayMusic() && MHelper.lengthSqr(
this.player.getX(),
this.player.getZ()
) < 250000) {
) < 250000) {
info.setReturnValue(Musics.END_BOSS);
} else {
Music sound = this.level.getBiomeManager()

View file

@ -1,10 +1,11 @@
package org.betterx.betterend.mixin.client;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.world.generator.GeneratorOptions;
import net.minecraft.client.resources.model.ModelBakery;
import net.minecraft.resources.ResourceLocation;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.world.generator.GeneratorOptions;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;

View file

@ -1,5 +1,9 @@
package org.betterx.betterend.mixin.client;
import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
import org.betterx.betterend.client.ClientOptions;
import org.betterx.betterend.world.biome.EndBiome;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.sounds.AbstractSoundInstance;
import net.minecraft.client.resources.sounds.SoundInstance;
@ -8,9 +12,6 @@ import net.minecraft.sounds.Music;
import net.minecraft.util.Mth;
import net.minecraft.util.RandomSource;
import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
import org.betterx.betterend.client.ClientOptions;
import org.betterx.betterend.world.biome.EndBiome;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;

View file

@ -1,12 +1,13 @@
package org.betterx.betterend.mixin.client;
import org.betterx.betterend.client.render.ArmoredElytraLayer;
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.betterx.betterend.client.render.ArmoredElytraLayer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -15,9 +16,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(PlayerRenderer.class)
public abstract class PlayerRendererMixin extends LivingEntityRenderer<AbstractClientPlayer, PlayerModel<AbstractClientPlayer>> {
public PlayerRendererMixin(EntityRendererProvider.Context context,
PlayerModel<AbstractClientPlayer> entityModel,
float f) {
public PlayerRendererMixin(
EntityRendererProvider.Context context,
PlayerModel<AbstractClientPlayer> entityModel,
float f
) {
super(context, entityModel, f);
}

View file

@ -1,5 +1,8 @@
package org.betterx.betterend.mixin.common;
import org.betterx.bclib.util.MHelper;
import org.betterx.betterend.item.tool.EndHammerItem;
import net.minecraft.util.Mth;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
@ -12,8 +15,6 @@ import net.minecraft.world.level.storage.loot.LootContext;
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
import com.google.common.collect.Lists;
import org.betterx.bclib.util.MHelper;
import org.betterx.betterend.item.tool.EndHammerItem;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -24,9 +25,11 @@ import java.util.List;
@Mixin(BlockBehaviour.class)
public abstract class BlockBehaviourMixin {
@Inject(method = "getDrops", at = @At("HEAD"), cancellable = true)
public void be_getDroppedStacks(BlockState state,
LootContext.Builder builder,
CallbackInfoReturnable<List<ItemStack>> info) {
public void be_getDroppedStacks(
BlockState state,
LootContext.Builder builder,
CallbackInfoReturnable<List<ItemStack>> info
) {
if (state.is(Blocks.GLOWSTONE)) {
ItemStack tool = builder.getParameter(LootContextParams.TOOL);
if (tool != null && tool.getItem() instanceof EndHammerItem) {

View file

@ -1,5 +1,10 @@
package org.betterx.betterend.mixin.common;
import org.betterx.bclib.api.v2.tag.CommonBlockTags;
import org.betterx.bclib.util.BlocksHelper;
import org.betterx.betterend.registry.EndBlocks;
import org.betterx.betterend.world.generator.GeneratorOptions;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
@ -15,10 +20,6 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.betterx.bclib.api.v2.tag.CommonBlockTags;
import org.betterx.bclib.util.BlocksHelper;
import org.betterx.betterend.registry.EndBlocks;
import org.betterx.betterend.world.generator.GeneratorOptions;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@ -41,10 +42,12 @@ public abstract class ChorusFlowerBlockMixin extends Block {
private ChorusPlantBlock plant;
@Inject(method = "canSurvive", at = @At("HEAD"), cancellable = true)
private void be_canSurvive(BlockState state,
LevelReader world,
BlockPos pos,
CallbackInfoReturnable<Boolean> info) {
private void be_canSurvive(
BlockState state,
LevelReader world,
BlockPos pos,
CallbackInfoReturnable<Boolean> info
) {
if (world.getBlockState(pos.below()).is(EndBlocks.CHORUS_NYLIUM)) {
info.setReturnValue(true);
info.cancel();
@ -52,22 +55,26 @@ public abstract class ChorusFlowerBlockMixin extends Block {
}
@Inject(method = "randomTick", at = @At("HEAD"), cancellable = true)
private void be_randomTick(BlockState state,
ServerLevel world,
BlockPos pos,
RandomSource random,
CallbackInfo info) {
private void be_randomTick(
BlockState state,
ServerLevel world,
BlockPos pos,
RandomSource random,
CallbackInfo info
) {
if (world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) {
BlockPos up = pos.above();
if (world.isEmptyBlock(up) && up.getY() < 256) {
int i = state.getValue(ChorusFlowerBlock.AGE);
if (i < 5) {
this.placeGrownFlower(world, up, i + 1);
BlocksHelper.setWithoutUpdate(world,
pos,
plant.defaultBlockState()
.setValue(ChorusPlantBlock.UP, true)
.setValue(ChorusPlantBlock.DOWN, true));
BlocksHelper.setWithoutUpdate(
world,
pos,
plant.defaultBlockState()
.setValue(ChorusPlantBlock.UP, true)
.setValue(ChorusPlantBlock.DOWN, true)
);
info.cancel();
}
}

View file

@ -1,5 +1,8 @@
package org.betterx.betterend.mixin.common;
import org.betterx.bclib.api.v2.tag.CommonBlockTags;
import org.betterx.betterend.registry.EndBlocks;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.item.context.BlockPlaceContext;
@ -13,8 +16,6 @@ import net.minecraft.world.level.block.ChorusPlantBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import org.betterx.bclib.api.v2.tag.CommonBlockTags;
import org.betterx.betterend.registry.EndBlocks;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -38,9 +39,11 @@ public abstract class ChorusPlantBlockMixin extends Block {
}
@Inject(method = "Lnet/minecraft/world/level/block/ChorusPlantBlock;getStateForPlacement" + "(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)" + "Lnet/minecraft/world/level/block/state/BlockState;", at = @At("RETURN"), cancellable = true)
private void be_getStateForPlacement(BlockGetter blockGetter,
BlockPos blockPos,
CallbackInfoReturnable<BlockState> info) {
private void be_getStateForPlacement(
BlockGetter blockGetter,
BlockPos blockPos,
CallbackInfoReturnable<BlockState> info
) {
BlockState plant = info.getReturnValue();
if (plant.is(Blocks.CHORUS_PLANT) && blockGetter.getBlockState(blockPos.below())
.is(CommonBlockTags.END_STONES)) {
@ -49,10 +52,12 @@ public abstract class ChorusPlantBlockMixin extends Block {
}
@Inject(method = "canSurvive", at = @At("HEAD"), cancellable = true)
private void be_canSurvive(BlockState state,
LevelReader world,
BlockPos pos,
CallbackInfoReturnable<Boolean> info) {
private void be_canSurvive(
BlockState state,
LevelReader world,
BlockPos pos,
CallbackInfoReturnable<Boolean> info
) {
BlockState down = world.getBlockState(pos.below());
if (down.is(EndBlocks.CHORUS_NYLIUM) || down.is(Blocks.END_STONE)) {
info.setReturnValue(true);
@ -60,13 +65,15 @@ public abstract class ChorusPlantBlockMixin extends Block {
}
@Inject(method = "updateShape", at = @At("RETURN"), cancellable = true)
private void be_updateShape(BlockState state,
Direction direction,
BlockState newState,
LevelAccessor world,
BlockPos pos,
BlockPos posFrom,
CallbackInfoReturnable<BlockState> info) {
private void be_updateShape(
BlockState state,
Direction direction,
BlockState newState,
LevelAccessor world,
BlockPos pos,
BlockPos posFrom,
CallbackInfoReturnable<BlockState> info
) {
BlockState plant = info.getReturnValue();
if (plant.is(Blocks.CHORUS_PLANT) && world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) {
plant = plant.setValue(BlockStateProperties.DOWN, true);

View file

@ -1,5 +1,9 @@
package org.betterx.betterend.mixin.common;
import org.betterx.bclib.util.BlocksHelper;
import org.betterx.bclib.util.MHelper;
import org.betterx.betterend.registry.EndBlocks;
import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel;
@ -11,9 +15,6 @@ import net.minecraft.world.level.levelgen.feature.ChorusPlantFeature;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import org.betterx.bclib.util.BlocksHelper;
import org.betterx.bclib.util.MHelper;
import org.betterx.betterend.registry.EndBlocks;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -22,8 +23,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(ChorusPlantFeature.class)
public class ChorusPlantFeatureMixin {
@Inject(method = "place", at = @At("HEAD"), cancellable = true)
private void be_place(FeaturePlaceContext<NoneFeatureConfiguration> featureConfig,
CallbackInfoReturnable<Boolean> info) {
private void be_place(
FeaturePlaceContext<NoneFeatureConfiguration> featureConfig,
CallbackInfoReturnable<Boolean> info
) {
final RandomSource random = featureConfig.random();
final BlockPos blockPos = featureConfig.origin();
final WorldGenLevel structureWorldAccess = featureConfig.level();
@ -36,7 +39,7 @@ public class ChorusPlantFeatureMixin {
structureWorldAccess,
blockPos,
bottom.setValue(PipeBlock.DOWN, true)
);
);
}
info.setReturnValue(true);
}

View file

@ -1,5 +1,7 @@
package org.betterx.betterend.mixin.common;
import org.betterx.bclib.api.v2.tag.CommonBlockTags;
import net.minecraft.core.Registry;
import net.minecraft.util.RandomSource;
import net.minecraft.world.Container;
@ -8,7 +10,6 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.item.enchantment.EnchantmentInstance;
import org.betterx.bclib.api.v2.tag.CommonBlockTags;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@ -67,7 +68,7 @@ public abstract class EnchantmentMenuMixin extends AbstractContainerMenu {
k,
0,
j
)) && world.isEmptyBlock(
)) && world.isEmptyBlock(
blockPos.offset(k, 1, j))) {
if (world.getBlockState(blockPos.offset(k * 2, 0, j * 2))
.is(CommonBlockTags.BOOKSHELVES)) {

View file

@ -1,12 +1,13 @@
package org.betterx.betterend.mixin.common;
import org.betterx.betterend.world.generator.GeneratorOptions;
import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.levelgen.WorldgenRandom;
import net.minecraft.world.level.levelgen.XoroshiroRandomSource;
import net.minecraft.world.level.levelgen.structure.Structure;
import net.minecraft.world.level.levelgen.structure.structures.EndCityStructure;
import org.betterx.betterend.world.generator.GeneratorOptions;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -17,8 +18,10 @@ import java.util.Optional;
@Mixin(EndCityStructure.class)
public class EndCityFeatureMixin {
@Inject(method = "findGenerationPoint", at = @At("HEAD"), cancellable = true)
private void be_findGenerationPoint(Structure.GenerationContext context,
CallbackInfoReturnable<Optional<Structure.GenerationStub>> info) {
private void be_findGenerationPoint(
Structure.GenerationContext context,
CallbackInfoReturnable<Optional<Structure.GenerationStub>> info
) {
final ChunkPos pos = context.chunkPos();
WorldgenRandom chunkRandom = new WorldgenRandom(new XoroshiroRandomSource(pos.x, pos.z));

View file

@ -1,5 +1,8 @@
package org.betterx.betterend.mixin.common;
import org.betterx.bclib.util.BlocksHelper;
import org.betterx.betterend.world.generator.GeneratorOptions;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
@ -11,8 +14,6 @@ import net.minecraft.world.level.dimension.end.EndDragonFight;
import net.minecraft.world.phys.AABB;
import com.google.common.collect.Lists;
import org.betterx.bclib.util.BlocksHelper;
import org.betterx.betterend.world.generator.GeneratorOptions;
import org.slf4j.Logger;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
@ -72,7 +73,7 @@ public class EndDragonFightMixin {
List<EndCrystal> crystalList = level.getEntitiesOfClass(
EndCrystal.class,
new AABB(central.below(255).south().west(), central.above(255).north().east())
);
);
int count = crystalList.size();
for (int n = 0; n < count; n++) {

View file

@ -1,5 +1,10 @@
package org.betterx.betterend.mixin.common;
import org.betterx.bclib.api.v2.WorldDataAPI;
import org.betterx.bclib.util.StructureHelper;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.world.generator.GeneratorOptions;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Vec3i;
import net.minecraft.nbt.CompoundTag;
@ -13,10 +18,6 @@ import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConf
import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
import org.betterx.bclib.api.v2.WorldDataAPI;
import org.betterx.bclib.util.StructureHelper;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.world.generator.GeneratorOptions;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@ -36,8 +37,10 @@ public class EndPodiumFeatureMixin {
private boolean active;
@Inject(method = "place", at = @At("HEAD"), cancellable = true)
private void be_place(FeaturePlaceContext<NoneFeatureConfiguration> featurePlaceContext,
CallbackInfoReturnable<Boolean> info) {
private void be_place(
FeaturePlaceContext<NoneFeatureConfiguration> featurePlaceContext,
CallbackInfoReturnable<Boolean> info
) {
if (!GeneratorOptions.hasPortal()) {
info.setReturnValue(false);
info.cancel();
@ -46,8 +49,8 @@ public class EndPodiumFeatureMixin {
WorldGenLevel world = featurePlaceContext.level();
BlockPos blockPos = be_updatePortalPos(world);
StructureTemplate structure = StructureHelper.readStructure(BetterEnd.makeID(active
? "portal/end_portal_active"
: "portal/end_portal_inactive"));
? "portal/end_portal_active"
: "portal/end_portal_inactive"));
Vec3i size = structure.getSize();
blockPos = blockPos.offset(-(size.getX() >> 1), -3, -(size.getZ() >> 1));
structure.placeInWorld(world, blockPos, blockPos, new StructurePlaceSettings(), random, 2);

View file

@ -1,11 +1,12 @@
package org.betterx.betterend.mixin.common;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.levelgen.feature.SpikeFeature.EndSpike;
import org.betterx.bclib.api.v2.WorldDataAPI;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.world.generator.GeneratorOptions;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.levelgen.feature.SpikeFeature.EndSpike;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;

View file

@ -1,12 +1,13 @@
package org.betterx.betterend.mixin.common;
import org.betterx.betterend.effects.EndStatusEffects;
import org.betterx.betterend.registry.EndEnchantments;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.monster.EnderMan;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import org.betterx.betterend.effects.EndStatusEffects;
import org.betterx.betterend.registry.EndEnchantments;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -19,7 +20,7 @@ public abstract class EnderManMixin {
if (player.isCreative() || player.hasEffect(EndStatusEffects.END_VEIL) || EnchantmentHelper.getItemEnchantmentLevel(
EndEnchantments.END_VEIL,
player.getItemBySlot(EquipmentSlot.HEAD)
) > 0) {
) > 0) {
info.setReturnValue(false);
}
}

View file

@ -1,5 +1,7 @@
package org.betterx.betterend.mixin.common;
import org.betterx.betterend.interfaces.TeleportingEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.Entity;
@ -8,7 +10,6 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.level.portal.PortalInfo;
import net.minecraft.world.phys.Vec3;
import org.betterx.betterend.interfaces.TeleportingEntity;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@ -65,7 +66,7 @@ public abstract class EntityMixin implements TeleportingEntity {
teleportTarget.pos.z,
teleportTarget.yRot,
entity.getXRot()
);
);
entity.setDeltaMovement(teleportTarget.speed);
destination.addDuringTeleport(entity);
}

View file

@ -1,10 +1,11 @@
package org.betterx.betterend.mixin.common;
import org.betterx.betterend.world.generator.GeneratorOptions;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
import org.betterx.betterend.world.generator.GeneratorOptions;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;

View file

@ -1,5 +1,11 @@
package org.betterx.betterend.mixin.common;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.interfaces.FallFlyingItem;
import org.betterx.betterend.interfaces.MobEffectApplier;
import org.betterx.betterend.item.CrystaliteArmor;
import org.betterx.betterend.registry.EndAttributes;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.tags.EntityTypeTags;
import net.minecraft.util.Mth;
@ -22,11 +28,6 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.interfaces.FallFlyingItem;
import org.betterx.betterend.interfaces.MobEffectApplier;
import org.betterx.betterend.item.CrystaliteArmor;
import org.betterx.betterend.registry.EndAttributes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@ -149,7 +150,7 @@ public abstract class LivingEntityMixin extends Entity {
1,
LivingEntity.class.cast(this),
livingEntity -> livingEntity.broadcastBreakEvent(EquipmentSlot.CHEST)
);
);
}
isFlying = true;
} else {
@ -249,7 +250,7 @@ public abstract class LivingEntityMixin extends Entity {
(lookAngle.x / k * l - moveDelta.x) * 0.1D,
0.0D,
(lookAngle.z / k * l - moveDelta.z) * 0.1D
);
);
}
moveDelta = moveDelta.multiply(0.9900000095367432D, 0.9800000190734863D, 0.9900000095367432D);
double movementFactor = ((FallFlyingItem) itemStack.getItem()).getMovementFactor();

View file

@ -19,12 +19,14 @@ import java.util.List;
@Mixin(Monster.class)
public class MonsterMixin {
@Inject(method = "checkMonsterSpawnRules", at = @At(value = "RETURN"), cancellable = true)
private static void be_checkMonsterSpawnRules(EntityType<? extends Monster> type,
ServerLevelAccessor serverWorldAccess,
MobSpawnType spawnReason,
BlockPos pos,
RandomSource random,
CallbackInfoReturnable<Boolean> info) {
private static void be_checkMonsterSpawnRules(
EntityType<? extends Monster> type,
ServerLevelAccessor serverWorldAccess,
MobSpawnType spawnReason,
BlockPos pos,
RandomSource random,
CallbackInfoReturnable<Boolean> info
) {
boolean canSpawn = info.getReturnValue();
if (canSpawn && spawnReason == MobSpawnType.NATURAL && type == EntityType.ENDERMAN) {
AABB box = new AABB(pos).inflate(16);

View file

@ -1,11 +1,12 @@
package org.betterx.betterend.mixin.common;
import net.minecraft.world.level.levelgen.*;
import net.minecraft.world.level.levelgen.blending.Blender;
import org.betterx.bclib.BCLib;
import org.betterx.betterend.interfaces.BETargetChecker;
import org.betterx.betterend.world.generator.TerrainGenerator;
import net.minecraft.world.level.levelgen.*;
import net.minecraft.world.level.levelgen.blending.Blender;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@ -20,16 +21,18 @@ public class NoiseChunkMixin implements BETargetChecker {
private boolean be_isEndGenerator;
@Inject(method = "<init>*", at = @At("TAIL"))
private void be_onNoiseChunkInit(int i,
RandomState randomState,
int j,
int k,
NoiseSettings noiseSettings,
DensityFunctions.BeardifierOrMarker beardifierOrMarker,
NoiseGeneratorSettings noiseGeneratorSettings,
Aquifer.FluidPicker fluidPicker,
Blender blender,
CallbackInfo ci) {
private void be_onNoiseChunkInit(
int i,
RandomState randomState,
int j,
int k,
NoiseSettings noiseSettings,
DensityFunctions.BeardifierOrMarker beardifierOrMarker,
NoiseGeneratorSettings noiseGeneratorSettings,
Aquifer.FluidPicker fluidPicker,
Blender blender,
CallbackInfo ci
) {
var o = BETargetChecker.class.cast(noiseGeneratorSettings);
if (o != null) be_isEndGenerator = o.be_isTarget();
else BCLib.LOGGER.warning(noiseGeneratorSettings + " has unknown implementation.");

View file

@ -1,8 +1,9 @@
package org.betterx.betterend.mixin.common;
import org.betterx.betterend.interfaces.BETargetChecker;
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
import org.betterx.betterend.interfaces.BETargetChecker;
import org.spongepowered.asm.mixin.Mixin;
@Mixin(NoiseGeneratorSettings.class)

View file

@ -1,10 +1,11 @@
package org.betterx.betterend.mixin.common;
import org.betterx.betterend.events.PlayerAdvancementsCallback;
import net.minecraft.advancements.Advancement;
import net.minecraft.server.PlayerAdvancements;
import net.minecraft.server.level.ServerPlayer;
import org.betterx.betterend.events.PlayerAdvancementsCallback;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@ -20,9 +21,10 @@ public abstract class PlayerAdvancementsMixin {
@Inject(method = "award", at = @At(value = "INVOKE", target = "Lnet/minecraft/advancements/AdvancementRewards;grant(Lnet/minecraft/server/level/ServerPlayer;)V", shift = Shift.AFTER))
public void be_award(Advancement advancement, String criterionName, CallbackInfoReturnable<Boolean> info) {
PlayerAdvancementsCallback.PLAYER_ADVANCEMENT_COMPLETE.invoker()
.onAdvancementComplete(player,
advancement,
criterionName
);
.onAdvancementComplete(
player,
advancement,
criterionName
);
}
}

View file

@ -1,5 +1,12 @@
package org.betterx.betterend.mixin.common;
import org.betterx.bclib.blocks.BlockProperties;
import org.betterx.bclib.blocks.BlockProperties.TripleShape;
import org.betterx.bclib.util.BlocksHelper;
import org.betterx.bclib.util.MHelper;
import org.betterx.betterend.interfaces.FallFlyingItem;
import org.betterx.betterend.registry.EndBlocks;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
@ -14,12 +21,6 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.Vec3;
import org.betterx.bclib.blocks.BlockProperties;
import org.betterx.bclib.blocks.BlockProperties.TripleShape;
import org.betterx.bclib.util.BlocksHelper;
import org.betterx.bclib.util.MHelper;
import org.betterx.betterend.interfaces.FallFlyingItem;
import org.betterx.betterend.registry.EndBlocks;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -36,12 +37,14 @@ public abstract class PlayerMixin extends LivingEntity {
private static Direction[] horizontal;
@Inject(method = "findRespawnPositionAndUseSpawnBlock", at = @At(value = "HEAD"), cancellable = true)
private static void be_findRespawnPositionAndUseSpawnBlock(ServerLevel world,
BlockPos pos,
float f,
boolean bl,
boolean bl2,
CallbackInfoReturnable<Optional<Vec3>> info) {
private static void be_findRespawnPositionAndUseSpawnBlock(
ServerLevel world,
BlockPos pos,
float f,
boolean bl,
boolean bl2,
CallbackInfoReturnable<Optional<Vec3>> info
) {
BlockState blockState = world.getBlockState(pos);
if (blockState.is(EndBlocks.RESPAWN_OBELISK)) {
info.setReturnValue(be_obeliskRespawnPosition(world, pos, blockState));

View file

@ -1,5 +1,12 @@
package org.betterx.betterend.mixin.common;
import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.interfaces.BETargetChecker;
import org.betterx.betterend.registry.EndBlocks;
import org.betterx.betterend.world.generator.GeneratorOptions;
import org.betterx.betterend.world.generator.TerrainGenerator;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Holder;
import net.minecraft.resources.ResourceKey;
@ -21,12 +28,6 @@ import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess;
import net.minecraft.world.level.storage.ServerLevelData;
import net.minecraft.world.level.storage.WritableLevelData;
import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.interfaces.BETargetChecker;
import org.betterx.betterend.registry.EndBlocks;
import org.betterx.betterend.world.generator.GeneratorOptions;
import org.betterx.betterend.world.generator.TerrainGenerator;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -39,20 +40,24 @@ import java.util.function.Supplier;
@Mixin(ServerLevel.class)
public abstract class ServerLevelMixin extends Level {
protected ServerLevelMixin(WritableLevelData writableLevelData,
ResourceKey<Level> resourceKey,
Holder<DimensionType> holder,
Supplier<ProfilerFiller> supplier,
boolean bl,
boolean bl2,
long l,
int i) {
protected ServerLevelMixin(
WritableLevelData writableLevelData,
ResourceKey<Level> resourceKey,
Holder<DimensionType> holder,
Supplier<ProfilerFiller> supplier,
boolean bl,
boolean bl2,
long l,
int i
) {
super(writableLevelData, resourceKey, holder, supplier, bl, bl2, l, i);
}
private final static List<ResourceKey<DimensionType>> BE_TEST_DIMENSIONS = List.of(BuiltinDimensionTypes.OVERWORLD,
BuiltinDimensionTypes.OVERWORLD_CAVES,
BuiltinDimensionTypes.NETHER);
private final static List<ResourceKey<DimensionType>> BE_TEST_DIMENSIONS = List.of(
BuiltinDimensionTypes.OVERWORLD,
BuiltinDimensionTypes.OVERWORLD_CAVES,
BuiltinDimensionTypes.NETHER
);
@ModifyArg(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/Holder;is(Lnet/minecraft/resources/ResourceKey;)Z"))
ResourceKey<DimensionType> be_dragonFight(ResourceKey<DimensionType> resourceKey) {
@ -64,30 +69,34 @@ public abstract class ServerLevelMixin extends Level {
}
@Inject(method = "<init>*", at = @At("TAIL"))
private void be_onServerWorldInit(MinecraftServer minecraftServer,
Executor executor,
LevelStorageAccess levelStorageAccess,
ServerLevelData serverLevelData,
ResourceKey resourceKey,
LevelStem levelStem,
ChunkProgressListener chunkProgressListener,
boolean bl,
long seed,
List list,
boolean bl2,
CallbackInfo ci) {
private void be_onServerWorldInit(
MinecraftServer minecraftServer,
Executor executor,
LevelStorageAccess levelStorageAccess,
ServerLevelData serverLevelData,
ResourceKey resourceKey,
LevelStem levelStem,
ChunkProgressListener chunkProgressListener,
boolean bl,
long seed,
List list,
boolean bl2,
CallbackInfo ci
) {
ServerLevel level = ServerLevel.class.cast(this);
if (level.dimension() == Level.END) {
final ChunkGenerator chunkGenerator = levelStem.generator();
if (chunkGenerator instanceof NoiseBasedChunkGenerator) {
Holder<NoiseGeneratorSettings> sHolder = ((NoiseBasedChunkGeneratorAccessor) chunkGenerator)
.be_getSettings();
.be_getSettings();
BETargetChecker.class.cast(sHolder.value()).be_setTarget(true);
}
TerrainGenerator.initNoise(seed,
chunkGenerator.getBiomeSource(),
level.getChunkSource().randomState().sampler());
TerrainGenerator.initNoise(
seed,
chunkGenerator.getBiomeSource(),
level.getChunkSource().randomState().sampler()
);
}
}

View file

@ -1,7 +1,10 @@
package org.betterx.betterend.mixin.common;
import org.betterx.betterend.interfaces.TeleportingEntity;
import org.betterx.betterend.world.generator.GeneratorOptions;
import com.mojang.authlib.GameProfile;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Holder;
import net.minecraft.network.protocol.game.*;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel;
@ -19,9 +22,6 @@ import net.minecraft.world.level.portal.PortalInfo;
import net.minecraft.world.level.storage.LevelData;
import net.minecraft.world.phys.Vec3;
import com.mojang.authlib.GameProfile;
import org.betterx.betterend.interfaces.TeleportingEntity;
import org.betterx.betterend.world.generator.GeneratorOptions;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@ -55,11 +55,13 @@ public abstract class ServerPlayerMixin extends Player implements TeleportingEnt
private BlockPos exitPos;
private int be_teleportDelay = 0;
public ServerPlayerMixin(Level level,
BlockPos blockPos,
float f,
GameProfile gameProfile,
@Nullable ProfilePublicKey profilePublicKey) {
public ServerPlayerMixin(
Level level,
BlockPos blockPos,
float f,
GameProfile gameProfile,
@Nullable ProfilePublicKey profilePublicKey
) {
super(level, blockPos, f, gameProfile, profilePublicKey);
}

View file

@ -1,11 +1,12 @@
package org.betterx.betterend.mixin.common;
import org.betterx.betterend.interfaces.ISlime;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.monster.Slime;
import net.minecraft.world.level.Level;
import org.betterx.betterend.interfaces.ISlime;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;

View file

@ -1,5 +1,11 @@
package org.betterx.betterend.mixin.common;
import org.betterx.bclib.api.v2.WorldDataAPI;
import org.betterx.bclib.util.BlocksHelper;
import org.betterx.bclib.util.StructureHelper;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.world.generator.GeneratorOptions;
import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.core.Vec3i;
@ -19,11 +25,6 @@ import net.minecraft.world.level.levelgen.feature.configurations.SpikeConfigurat
import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
import org.betterx.bclib.api.v2.WorldDataAPI;
import org.betterx.bclib.util.BlocksHelper;
import org.betterx.bclib.util.StructureHelper;
import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.world.generator.GeneratorOptions;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@ -33,19 +34,23 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(SpikeFeature.class)
public class SpikeFeatureMixin {
@Inject(method = "place", at = @At("HEAD"), cancellable = true)
private void be_place(FeaturePlaceContext<SpikeConfiguration> featurePlaceContext,
CallbackInfoReturnable<Boolean> info) {
private void be_place(
FeaturePlaceContext<SpikeConfiguration> featurePlaceContext,
CallbackInfoReturnable<Boolean> info
) {
if (!GeneratorOptions.hasPillars()) {
info.setReturnValue(false);
}
}
@Inject(method = "placeSpike", at = @At("HEAD"), cancellable = true)
private void be_placeSpike(ServerLevelAccessor world,
RandomSource random,
SpikeConfiguration config,
SpikeFeature.EndSpike spike,
CallbackInfo info) {
private void be_placeSpike(
ServerLevelAccessor world,
RandomSource random,
SpikeConfiguration config,
SpikeFeature.EndSpike spike,
CallbackInfo info
) {
int x = spike.getCenterX();
int z = spike.getCenterZ();
int radius = spike.getRadius();
@ -157,19 +162,20 @@ public class SpikeFeatureMixin {
BlockState blockState = Blocks.IRON_BARS
.defaultBlockState()
.setValue(IronBarsBlock.NORTH, bl4 && pz != -2).setValue(
IronBarsBlock.SOUTH,
bl4 && pz != 2
).setValue(
IronBarsBlock.WEST,
bl5 && px != -2).setValue(
IronBarsBlock.EAST,
bl5 && px != 2
);
IronBarsBlock.SOUTH,
bl4 && pz != 2
).setValue(
IronBarsBlock.WEST,
bl5 && px != -2
).setValue(
IronBarsBlock.EAST,
bl5 && px != 2
);
BlocksHelper.setWithoutUpdate(
world,
mut.set(spike.getCenterX() + px, maxY + py, spike.getCenterZ() + pz),
blockState
);
);
}
}
}