|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package net.brokenmoon.redcontrol;
|
|
|
|
|
|
|
|
|
|
import net.brokenmoon.redcontrol.api.events.BlockModificationEvents;
|
|
|
|
|
import net.brokenmoon.redcontrol.blockentities.CpuEntity;
|
|
|
|
|
import net.brokenmoon.redcontrol.blockentities.DriveEntity;
|
|
|
|
|
import net.brokenmoon.redcontrol.blocks.CpuBlock;
|
|
|
|
@ -7,6 +8,7 @@ import net.brokenmoon.redcontrol.blocks.DriveBlock;
|
|
|
|
|
import net.brokenmoon.redcontrol.blocks.TerminalBlock;
|
|
|
|
|
import net.brokenmoon.redcontrol.blocks.TerminalEntity;
|
|
|
|
|
import net.brokenmoon.redcontrol.item.FloppyDisk;
|
|
|
|
|
import net.brokenmoon.redcontrol.util.FloodFill;
|
|
|
|
|
import net.fabricmc.api.ModInitializer;
|
|
|
|
|
|
|
|
|
|
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
|
|
|
@ -16,6 +18,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
|
|
|
|
import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder;
|
|
|
|
|
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
|
|
|
|
|
import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener;
|
|
|
|
|
import net.minecraft.block.Block;
|
|
|
|
|
import net.minecraft.block.entity.BlockEntity;
|
|
|
|
|
import net.minecraft.block.entity.BlockEntityType;
|
|
|
|
|
import net.minecraft.item.BlockItem;
|
|
|
|
@ -23,14 +26,19 @@ import net.minecraft.item.Item;
|
|
|
|
|
import net.minecraft.item.ItemGroup;
|
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
|
import net.minecraft.nbt.NbtCompound;
|
|
|
|
|
import net.minecraft.particle.ParticleTypes;
|
|
|
|
|
import net.minecraft.registry.Registry;
|
|
|
|
|
import net.minecraft.registry.Registries;
|
|
|
|
|
import net.minecraft.registry.RegistryKeys;
|
|
|
|
|
import net.minecraft.registry.tag.TagKey;
|
|
|
|
|
import net.minecraft.resource.Resource;
|
|
|
|
|
import net.minecraft.resource.ResourceManager;
|
|
|
|
|
import net.minecraft.resource.ResourceType;
|
|
|
|
|
import net.minecraft.server.world.ServerWorld;
|
|
|
|
|
import net.minecraft.text.Text;
|
|
|
|
|
import net.minecraft.util.Identifier;
|
|
|
|
|
import net.minecraft.util.math.BlockPos;
|
|
|
|
|
import net.minecraft.util.math.Vec3d;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
|
@ -43,8 +51,13 @@ public class RedControl implements ModInitializer {
|
|
|
|
|
// It is considered best practice to use your mod id as the logger's name.
|
|
|
|
|
// That way, it's clear which mod wrote info, warnings, and errors.
|
|
|
|
|
public static final Logger LOGGER = LoggerFactory.getLogger("redcontrol");
|
|
|
|
|
|
|
|
|
|
//A hashmap of files contained in images
|
|
|
|
|
public static final HashMap<String,byte[]> images = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
//Tags
|
|
|
|
|
public static final TagKey<Block> TAG_BUSABLE = TagKey.of(RegistryKeys.BLOCK, modloc("bus_conductive"));
|
|
|
|
|
|
|
|
|
|
//Blocks
|
|
|
|
|
public static final CpuBlock CPU = new CpuBlock(FabricBlockSettings.create().strength(4.0f));
|
|
|
|
|
public static final TerminalBlock TERMINAL = new TerminalBlock(FabricBlockSettings.create().strength(4.0f));
|
|
|
|
@ -169,6 +182,19 @@ public class RedControl implements ModInitializer {
|
|
|
|
|
te.pushKey(key);
|
|
|
|
|
}
|
|
|
|
|
})));
|
|
|
|
|
|
|
|
|
|
BlockModificationEvents.ON_CHANGE.register((world,blockPos,oldState,newState) -> {
|
|
|
|
|
if (oldState.isIn(TAG_BUSABLE) ^ newState.isIn(TAG_BUSABLE)) {
|
|
|
|
|
Vec3d center = blockPos.toCenterPos();
|
|
|
|
|
((ServerWorld)world).spawnParticles(ParticleTypes.CRIT,center.x,center.y,center.z,30,0.1,0.1,0.1,0.1);
|
|
|
|
|
if (newState.isIn(TAG_BUSABLE)) {
|
|
|
|
|
//a bus-block was placed
|
|
|
|
|
FloodFill.INSTANCE.blockFloodFiller((ServerWorld) world,blockPos);
|
|
|
|
|
} else {
|
|
|
|
|
//a bus block was removed
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static Identifier modloc(String path) {return new Identifier("redcontrol",path);}
|
|
|
|
|