Reformated
This commit is contained in:
parent
fc1da134e7
commit
60e8008cb7
416 changed files with 5772 additions and 4573 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)) {
|
||||
|
|
|
@ -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));
|
||||
|
||||
|
|
|
@ -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++) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.");
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
);
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue