67 lines
2.4 KiB
Java
67 lines
2.4 KiB
Java
package com.futhark.block;
|
|
|
|
import com.futhark.RuneData;
|
|
import com.futhark.RuneType;
|
|
import com.futhark.StateSaverAndLoader;
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.block.BlockState;
|
|
import net.minecraft.entity.LivingEntity;
|
|
import net.minecraft.entity.player.PlayerEntity;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.server.MinecraftServer;
|
|
import net.minecraft.sound.SoundCategory;
|
|
import net.minecraft.sound.SoundEvents;
|
|
import net.minecraft.text.Text;
|
|
import net.minecraft.util.ActionResult;
|
|
import net.minecraft.util.Hand;
|
|
import net.minecraft.util.hit.BlockHitResult;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.world.World;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
public class RuneBlock extends Block {
|
|
|
|
public RuneBlock(Settings settings) {
|
|
super(settings);
|
|
}
|
|
|
|
@Override
|
|
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
|
|
|
|
MinecraftServer server = world.getServer();
|
|
if (server != null) {
|
|
StateSaverAndLoader serverState = StateSaverAndLoader.getServerState(server);
|
|
player.sendMessage(Text.literal(String.format("Clicked rune %s Total Runes in World: %d", serverState.runes.get(pos), serverState.totalNumberOfRunes)));
|
|
}
|
|
|
|
return ActionResult.SUCCESS;
|
|
}
|
|
|
|
@Override
|
|
public void onPlaced(World world, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack itemStack) {
|
|
super.onPlaced(world, pos, state, placer, itemStack);
|
|
|
|
MinecraftServer server = world.getServer();
|
|
if (server != null) {
|
|
StateSaverAndLoader serverState = StateSaverAndLoader.getServerState(server);
|
|
serverState.totalNumberOfRunes += 1;
|
|
RuneData runeData = new RuneData();
|
|
runeData.type = RuneType.UNKNOWN;
|
|
runeData.pos = pos;
|
|
serverState.runes.put(pos, runeData);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) {
|
|
super.onBreak(world, pos, state, player);
|
|
|
|
MinecraftServer server = world.getServer();
|
|
if (server != null) {
|
|
StateSaverAndLoader serverState = StateSaverAndLoader.getServerState(server);
|
|
serverState.runes.remove(pos);
|
|
serverState.totalNumberOfRunes -= 1;
|
|
}
|
|
}
|
|
}
|