Skip to content

Commit

Permalink
Read CHANGES.md
Browse files Browse the repository at this point in the history
  • Loading branch information
RadonCoding committed Apr 4, 2024
1 parent e8a5e13 commit e8048e0
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import radon.jujutsu_kaisen.block.entity.base.ITemporaryBlock;
import radon.jujutsu_kaisen.entity.base.DomainExpansionEntity;

import java.util.UUID;

public class DomainBlockEntity extends BlockEntity {
public class DomainBlockEntity extends BlockEntity implements ITemporaryBlock {
private boolean initialized;
private UUID identifier;

Expand Down Expand Up @@ -78,7 +79,9 @@ public void destroy() {
return this.identifier;
}

public @Nullable BlockState getOriginal() {
@Nullable
@Override
public BlockState getOriginal() {
if (this.level == null) return this.original;

if (this.original == null && this.deferred != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import radon.jujutsu_kaisen.block.entity.base.ITemporaryBlock;

public class DurationBlockEntity extends BlockEntity {
public class DurationBlockEntity extends BlockEntity implements ITemporaryBlock {
private boolean initialized;
private int duration;

Expand Down Expand Up @@ -46,7 +47,9 @@ public static void tick(Level pLevel, BlockPos pPos, BlockState pState, Duration
}
}

public @Nullable BlockState getOriginal() {
@Nullable
@Override
public BlockState getOriginal() {
if (this.original == null && this.deferred != null && this.level != null) {
this.original = NbtUtils.readBlockState(this.level.holderLookup(Registries.BLOCK), this.deferred);
this.deferred = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.NotNull;
import radon.jujutsu_kaisen.block.entity.base.ITemporaryBlock;
import radon.jujutsu_kaisen.data.capability.IJujutsuCapability;
import radon.jujutsu_kaisen.data.capability.JujutsuCapabilityHandler;
import radon.jujutsu_kaisen.data.sorcerer.ISorcererData;
Expand All @@ -31,7 +32,7 @@
import java.util.List;
import java.util.UUID;

public class VeilBlockEntity extends BlockEntity {
public class VeilBlockEntity extends BlockEntity implements ITemporaryBlock {
private boolean initialized;

@Nullable
Expand Down Expand Up @@ -106,7 +107,9 @@ public void destroy() {
}
}

public @Nullable BlockState getOriginal() {
@Nullable
@Override
public BlockState getOriginal() {
if (this.level == null) return this.original;

if (this.original == null && this.deferred != null) {
Expand All @@ -118,9 +121,9 @@ public void destroy() {
}

public void create(UUID parentUUID, UUID ownerUUID, int delay, int size, List<Modifier> modifiers, BlockState original, CompoundTag saved) {
this.initialized = true;
this.parentUUID = parentUUID;
this.ownerUUID = ownerUUID;
this.initialized = true;
this.death = delay;
this.size = size;
this.modifiers = modifiers;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package radon.jujutsu_kaisen.block.entity.base;

import net.minecraft.world.level.block.state.BlockState;

import javax.annotation.Nullable;

public interface ITemporaryBlock {
@Nullable
BlockState getOriginal();
}
64 changes: 4 additions & 60 deletions src/main/java/radon/jujutsu_kaisen/entity/VeilEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import radon.jujutsu_kaisen.block.VeilBlock;
import radon.jujutsu_kaisen.block.entity.VeilBlockEntity;
import radon.jujutsu_kaisen.block.entity.VeilRodBlockEntity;
import radon.jujutsu_kaisen.block.entity.base.ITemporaryBlock;
import radon.jujutsu_kaisen.data.capability.IJujutsuCapability;
import radon.jujutsu_kaisen.data.capability.JujutsuCapabilityHandler;
import radon.jujutsu_kaisen.data.sorcerer.ISorcererData;
Expand Down Expand Up @@ -276,7 +277,9 @@ private void createBarrier() {

CompoundTag saved = null;

if (existing != null) {
if (existing instanceof ITemporaryBlock tmp) {
state = tmp.getOriginal();
} else if (existing != null) {
saved = existing.saveWithFullMetadata();
}

Expand All @@ -298,58 +301,6 @@ private void createBarrier() {
}
}

private void destroyBarrier() {
this.total = 0;

LivingEntity owner = this.getOwner();

if (owner == null) return;

BlockState replacement = JJKBlocks.VEIL.get().defaultBlockState();

for (Modifier modifier : this.modifiers) {
if (modifier.getType() == Modifier.Type.COLOR) {
replacement = replacement.setValue(VeilBlock.COLOR, ((ColorModifier) modifier).getColor());
} else if (modifier.getType() == Modifier.Type.TRANSPARENT) {
replacement = replacement.setValue(VeilBlock.TRANSPARENT, true);
}
}

int radius = this.getRadius();

BlockPos center = BlockPos.containing(this.position().add(0.0D, radius, 0.0D));

for (int y = radius; y >= -radius; y--) {
int delay = Math.abs(y - radius);

if (this.getTime() < delay) break;

for (int x = -radius; x <= radius; x++) {
for (int z = -radius; z <= radius; z++) {
double distance = Math.sqrt(x * x + y * y + z * z);

if (distance < radius && distance >= radius - 1) {
BlockPos pos = center.offset(x, y, z);

if (!this.level().isInWorldBounds(pos)) continue;

BlockState state = this.level().getBlockState(pos);

if (state.is(Blocks.BEDROCK)) continue;

if (!this.isOwned(pos)) continue;

if (!(this.level().getBlockEntity(pos) instanceof VeilBlockEntity be)) continue;

if (be.getParentUUID() == null || !be.getParentUUID().equals(this.getUUID())) continue;

be.destroy();
}
}
}
}
}

private void check() {
if (this.center != null) {
if (!this.level().getBlockState(this.center).is(JJKBlocks.VEIL_ROD)) {
Expand Down Expand Up @@ -392,13 +343,6 @@ public void onAddedToWorld() {
}
}

@Override
public void onRemovedFromWorld() {
super.onRemovedFromWorld();

this.destroyBarrier();
}

@Override
public @NotNull EntityDimensions getDimensions(@NotNull Pose pPose) {
int radius = this.getRadius() * 2;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import radon.jujutsu_kaisen.block.JJKBlocks;
import radon.jujutsu_kaisen.block.entity.DomainBlockEntity;
import radon.jujutsu_kaisen.block.entity.VeilBlockEntity;
import radon.jujutsu_kaisen.block.entity.base.ITemporaryBlock;
import radon.jujutsu_kaisen.data.ability.IAbilityData;
import radon.jujutsu_kaisen.data.capability.IJujutsuCapability;
import radon.jujutsu_kaisen.data.capability.JujutsuCapabilityHandler;
Expand Down Expand Up @@ -164,7 +165,9 @@ protected void createBlock(int delay, BlockPos pos, int radius, double distance)

CompoundTag saved = null;

if (existing != null) {
if (existing instanceof ITemporaryBlock tmp) {
state = tmp.getOriginal();
} else if (existing != null) {
saved = existing.saveWithFullMetadata();
}

Expand Down

0 comments on commit e8048e0

Please sign in to comment.