From 2a18714c4c4cba26db6dc8ca2cb9fd738e5b227d Mon Sep 17 00:00:00 2001 From: Aleksey Date: Thu, 29 Oct 2020 21:57:09 +0300 Subject: [PATCH] WIP: start Eternal ritual --- .../ru/betterend/blocks/RunedFlavolite.java | 7 ++-- .../ru/betterend/item/EternalCrystal.java | 4 +- .../betterend/util/EternalPortalHelper.java | 40 +++++++++++++++++++ 3 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 src/main/java/ru/betterend/util/EternalPortalHelper.java diff --git a/src/main/java/ru/betterend/blocks/RunedFlavolite.java b/src/main/java/ru/betterend/blocks/RunedFlavolite.java index dbefb13f..60eb63c7 100644 --- a/src/main/java/ru/betterend/blocks/RunedFlavolite.java +++ b/src/main/java/ru/betterend/blocks/RunedFlavolite.java @@ -1,14 +1,16 @@ package ru.betterend.blocks; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; + import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; + import ru.betterend.blocks.basis.BlockBase; import ru.betterend.registry.EndBlocks; import ru.betterend.util.BlocksHelper; @@ -30,8 +32,7 @@ public class RunedFlavolite extends BlockBase { } @Override - public void onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) { - super.onBreak(world, pos, state, player); + public void onBroken(WorldAccess world, BlockPos pos, BlockState state) { BlockPos bottom = PortalFrameHelper.findBottomCorner((World) world, pos, this); BlockPos top = PortalFrameHelper.findTopCorner((World) world, pos, this); if (bottom == null || top == null) return; diff --git a/src/main/java/ru/betterend/item/EternalCrystal.java b/src/main/java/ru/betterend/item/EternalCrystal.java index d7b03d8d..f3f2bd7e 100644 --- a/src/main/java/ru/betterend/item/EternalCrystal.java +++ b/src/main/java/ru/betterend/item/EternalCrystal.java @@ -8,6 +8,7 @@ import net.minecraft.util.ActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import ru.betterend.blocks.RunedFlavolite; +import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; import ru.betterend.util.PortalFrameHelper; @@ -22,8 +23,9 @@ public class EternalCrystal extends Item { if (world.isClient) return ActionResult.CONSUME; BlockPos usedPos = context.getBlockPos(); BlockState usedBlock = world.getBlockState(usedPos); - if (usedBlock.getBlock() instanceof RunedFlavolite && !usedBlock.get(RunedFlavolite.ACTIVATED)) { + if (usedBlock.isOf(EndBlocks.FLAVOLITE_RUNED) && !usedBlock.get(RunedFlavolite.ACTIVATED)) { if (PortalFrameHelper.checkPortalFrame((ServerWorld) world, usedPos, usedBlock.getBlock())) { + context.getStack().decrement(1); return ActionResult.SUCCESS; } } diff --git a/src/main/java/ru/betterend/util/EternalPortalHelper.java b/src/main/java/ru/betterend/util/EternalPortalHelper.java new file mode 100644 index 00000000..596708f4 --- /dev/null +++ b/src/main/java/ru/betterend/util/EternalPortalHelper.java @@ -0,0 +1,40 @@ +package ru.betterend.util; + +import java.util.HashMap; +import java.util.Map; + +import net.minecraft.block.Block; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import ru.betterend.blocks.EternalPedestal; +import ru.betterend.registry.EndBlocks; + +public class EternalPortalHelper { + private final static Map structureMap = new HashMap() { + private static final long serialVersionUID = 1L; + { + put(0, 7); + put(1, 1); + put(1, 11); + put(11, 1); + put(11, 11); + put(12, 7); + } + }; + private final static Block PEDESTAL = EndBlocks.ETERNAL_PEDESTAL; + private final static BooleanProperty ACTIVE = EternalPedestal.ACTIVATED; + + private static int centerX = 6; + private static int centerZ = 6; + + public static boolean checkPortalStructure(World world, BlockPos pos) { + if (!world.getBlockState(pos).isOf(PEDESTAL)) return false; + return false; + } + + private static BlockPos finedCorner(World world, BlockPos pos) { + + return pos; + } +}