mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-25 14:14:32 +01:00
Fixed crash when disguising as a block with a block entity
This commit is contained in:
parent
762b211124
commit
2f32cdf6bb
3 changed files with 22 additions and 8 deletions
|
@ -8,8 +8,8 @@ import com.minelittlepony.unicopia.entity.Equine;
|
||||||
import com.minelittlepony.unicopia.entity.ItemImpl;
|
import com.minelittlepony.unicopia.entity.ItemImpl;
|
||||||
import com.minelittlepony.unicopia.entity.Living;
|
import com.minelittlepony.unicopia.entity.Living;
|
||||||
import com.minelittlepony.unicopia.entity.behaviour.Disguise;
|
import com.minelittlepony.unicopia.entity.behaviour.Disguise;
|
||||||
|
import com.minelittlepony.unicopia.entity.behaviour.FallingBlockBehaviour;
|
||||||
import com.minelittlepony.unicopia.entity.player.Pony;
|
import com.minelittlepony.unicopia.entity.player.Pony;
|
||||||
import com.minelittlepony.unicopia.mixin.MixinBlockEntity;
|
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
|
@ -144,7 +144,7 @@ public class WorldRenderDelegate {
|
||||||
if (blockEntity != null) {
|
if (blockEntity != null) {
|
||||||
BlockEntityRenderer<BlockEntity> r = MinecraftClient.getInstance().getBlockEntityRenderDispatcher().get(blockEntity);
|
BlockEntityRenderer<BlockEntity> r = MinecraftClient.getInstance().getBlockEntityRenderDispatcher().get(blockEntity);
|
||||||
if (r != null) {
|
if (r != null) {
|
||||||
((MixinBlockEntity)blockEntity).setPos(e.getBlockPos());
|
((FallingBlockBehaviour.Positioned)blockEntity).setPos(e.getBlockPos());
|
||||||
matrices.push();
|
matrices.push();
|
||||||
|
|
||||||
BlockState state = blockEntity.getCachedState();
|
BlockState state = blockEntity.getCachedState();
|
||||||
|
|
|
@ -6,7 +6,6 @@ import java.util.Optional;
|
||||||
import com.minelittlepony.unicopia.ability.magic.Caster;
|
import com.minelittlepony.unicopia.ability.magic.Caster;
|
||||||
import com.minelittlepony.unicopia.ability.magic.spell.DisguiseSpell;
|
import com.minelittlepony.unicopia.ability.magic.spell.DisguiseSpell;
|
||||||
import com.minelittlepony.unicopia.entity.player.Pony;
|
import com.minelittlepony.unicopia.entity.player.Pony;
|
||||||
import com.minelittlepony.unicopia.mixin.MixinBlockEntity;
|
|
||||||
import com.minelittlepony.unicopia.mixin.MixinFallingBlock;
|
import com.minelittlepony.unicopia.mixin.MixinFallingBlock;
|
||||||
import com.minelittlepony.unicopia.util.Tickable;
|
import com.minelittlepony.unicopia.util.Tickable;
|
||||||
|
|
||||||
|
@ -25,6 +24,7 @@ import net.minecraft.entity.FallingBlockEntity;
|
||||||
import net.minecraft.entity.damage.DamageSource;
|
import net.minecraft.entity.damage.DamageSource;
|
||||||
import net.minecraft.state.property.Properties;
|
import net.minecraft.state.property.Properties;
|
||||||
import net.minecraft.tag.BlockTags;
|
import net.minecraft.tag.BlockTags;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
|
@ -115,9 +115,13 @@ public class FallingBlockBehaviour extends EntityBehaviour<FallingBlockEntity> {
|
||||||
}
|
}
|
||||||
|
|
||||||
be.setWorld(entity.world);
|
be.setWorld(entity.world);
|
||||||
((MixinBlockEntity)be).setPos(entity.getBlockPos());
|
((Positioned)be).setPos(entity.getBlockPos());
|
||||||
ceb.tick();
|
ceb.tick();
|
||||||
be.setWorld(null);
|
be.setWorld(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface Positioned {
|
||||||
|
void setPos(BlockPos pos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
package com.minelittlepony.unicopia.mixin;
|
package com.minelittlepony.unicopia.mixin;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
import org.spongepowered.asm.mixin.Mutable;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
|
||||||
|
import com.minelittlepony.unicopia.entity.behaviour.FallingBlockBehaviour;
|
||||||
|
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
@Mixin(BlockEntity.class)
|
@Mixin(BlockEntity.class)
|
||||||
public interface MixinBlockEntity {
|
abstract class MixinBlockEntity implements FallingBlockBehaviour.Positioned {
|
||||||
@Accessor("pos")
|
@Shadow
|
||||||
void setPos(BlockPos pos);
|
@Mutable
|
||||||
|
private @Final BlockPos pos;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPos(BlockPos pos) {
|
||||||
|
this.pos = pos;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue