Compare commits

...

2 Commits

11 changed files with 100 additions and 47 deletions

View File

@ -1,14 +1,12 @@
package me.parsell.wireddust;
import me.parsell.wireddust.core.WiredDustBlocks;
import me.parsell.wireddust.core.WiredDustGamerules;
import me.parsell.wireddust.core.WiredDustItems;
import me.parsell.wireddust.core.WiredDustTags;
import me.shedaniel.autoconfig.AutoConfig;
import me.shedaniel.autoconfig.serializer.GsonConfigSerializer;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.event.player.UseBlockCallback;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.ActionResult;
public class WiredDust implements ModInitializer {
public static final String MODID = "wireddust";
@ -21,6 +19,8 @@ public class WiredDust implements ModInitializer {
WiredDustBlocks.init();
WiredDustItems.init();
WiredDustGamerules.init();
WiredDustTags.init();
// Make sure player is not in spectator mode

View File

@ -3,20 +3,17 @@ package me.parsell.wireddust;
import me.shedaniel.autoconfig.ConfigData;
import me.shedaniel.autoconfig.annotation.Config;
@Config(name = "GlowstoneWire")
@Config(name = "WiredDust")
public class WiredDustConfig implements ConfigData{
public boolean useVanillaItems = true;
public boolean addSugarWire = true;
public boolean addGlowstoneWire = true;
public boolean addBlazePowderWire = true;
public boolean doBlazePowderDamage = true;
public boolean GR_DO_BLAZE_POWDER_WIRE_DAMAGE_DEFAULT = true;
public boolean addGunpowderWire = true;
public boolean gunpowderWireIgnitesExtremelyFlammableBlocks = true;
public boolean gunpowderWireIgnitesFlammableBlocks = false;
public boolean gunpowderWireIgnitesTNT = true;
//TODO Consider gamerules for additional functionality instead of mod config
public boolean GR_GUNPOWDER_WIRE_IGNITES_TNT_DEFAULT = true;
public boolean GR_GUNPOWDER_WIRE_LIGHTS_CAMPFIRES_DEFAULT = true;
public boolean GR_GUNPOWDER_WIRE_IGNITES_BLOCKS = true;
}

View File

@ -2,6 +2,7 @@ package me.parsell.wireddust.common;
import java.util.Random;
import me.parsell.wireddust.core.WiredDustGamerules;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.block.BlockState;
@ -22,8 +23,9 @@ public class WDBlazePowderWireBlock extends WDWireBlock{
@Override
public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) {
if (!entity.isFireImmune() && entity instanceof LivingEntity && !EnchantmentHelper.hasFrostWalker((LivingEntity)entity))
entity.damage(DamageSource.HOT_FLOOR, 1.0F);
if(world.getGameRules().getBoolean(WiredDustGamerules.DO_BLAZE_POWDER_WIRE_DAMAGE))
if (!entity.isFireImmune() && entity instanceof LivingEntity && !EnchantmentHelper.hasFrostWalker((LivingEntity)entity))
entity.damage(DamageSource.HOT_FLOOR, 1.0F);
}
@Environment(EnvType.CLIENT)
@ -41,7 +43,7 @@ public class WDBlazePowderWireBlock extends WDWireBlock{
// determine what particle I should show
ParticleEffect blaze_powder_particle = ParticleTypes.FLAME;
if(world.getBiomeAccess().getBiome(pos).getDownfall() > 0.0F)
if(world.getBiomeAccess().getBiome(pos).getDownfall() > 0.0F) // Todo: this isn't correct
blaze_powder_particle = ParticleTypes.SMOKE;
world.addParticle(blaze_powder_particle, pos.getX() + x_rand, pos.getY() + 0.1D, pos.getZ() + z_rand, 0.0, 0.0, 0.0);

View File

@ -3,6 +3,8 @@ package me.parsell.wireddust.common;
import java.util.Iterator;
import java.util.Random;
import me.parsell.wireddust.core.WiredDustGamerules;
import me.parsell.wireddust.core.WiredDustTags;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.block.Block;
@ -25,10 +27,12 @@ import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Direction.Axis;
import net.minecraft.world.GameRules;
import net.minecraft.world.World;
import net.minecraft.world.WorldAccess;
// TODO: All the magic to make this work the way i want
// TODO: All the magic to make this work the way i
// TODO: make textures differ for lit state, and burnt state
public class WDGunpowderWireBlock extends WDWireBlock{
public static final BooleanProperty LIT;
public static final BooleanProperty BURNT;
@ -100,12 +104,13 @@ public class WDGunpowderWireBlock extends WDWireBlock{
public void light(World world, BlockPos pos, BlockState state){
world.setBlockState(pos, state.with(LIT, true));
scheduleTick(world, pos);
System.out.println(WiredDustTags.GUNPOWDER_IGNITABLE_BLOCKS.toString());
scheduleTick(world, pos, 55);
}
public void scheduleTick(WorldAccess world, BlockPos pos) {
public void scheduleTick(WorldAccess world, BlockPos pos, int length) {
if (!world.isClient() && !world.getBlockTickScheduler().isScheduled(pos, this)) {
world.getBlockTickScheduler().schedule(pos, this, 60);
world.getBlockTickScheduler().schedule(pos, this, length);
}
}
@ -117,26 +122,27 @@ public class WDGunpowderWireBlock extends WDWireBlock{
@Override
public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {
if(!state.get(BURNT)) {
Iterator<Direction> dirItr = Direction.Type.HORIZONTAL.iterator();
Iterator<Direction> dirItr = Direction.Type.HORIZONTAL.iterator(); //TODO: Maybe allow down/up direction?
while(dirItr.hasNext()) {
Direction dir = dirItr.next();
BlockPos offsetPos = pos.offset(dir);
BlockState offsetBlockState = world.getBlockState(offsetPos);
GameRules worldGameRules = world.getGameRules();
if(state.get(super.DIRECTION_TO_WIRE_CONNECTION.get(dir)).isConnected())
if(offsetBlockState.isOf(this))
light(world, offsetPos, offsetBlockState);
else if(offsetBlockState.isOf(Blocks.TNT)) {
light(world, offsetPos, offsetBlockState); // TODO: get up/down
else if(offsetBlockState.isOf(Blocks.TNT) && worldGameRules.getBoolean(WiredDustGamerules.GUNPOWDER_WIRE_IGNITES_TNT)) {
TntBlock.primeTnt(world, offsetPos);
world.setBlockState(offsetPos, Blocks.AIR.getDefaultState());
} else if(offsetBlockState.isOf(Blocks.CAMPFIRE) && !offsetBlockState.get(CampfireBlock.LIT))
} else if(offsetBlockState.isOf(Blocks.CAMPFIRE) && !offsetBlockState.get(CampfireBlock.LIT) && worldGameRules.getBoolean(WiredDustGamerules.GUNPOWDER_WIRE_LIGHTS_CAMPFIRES))
world.setBlockState(offsetPos, offsetBlockState.with(CampfireBlock.LIT, true));
else if(false) // TODO: make flammable blocks array
;
else if(WiredDustTags.GUNPOWDER_IGNITABLE_BLOCKS.contains(offsetBlockState.getBlock()) && world.getBlockState(offsetPos.up()).isAir() && worldGameRules.getBoolean(WiredDustGamerules.GUNPOWDER_WIRE_IGNITES_BLOCKS))
System.out.println("True"); // TODO: FIX THIS
}
world.setBlockState(pos, state.with(BURNT, true));
scheduleTick(world, pos);
scheduleTick(world, pos, 65);
} else {
world.setBlockState(pos, Blocks.AIR.getDefaultState());
}

View File

@ -159,7 +159,7 @@ public class WDWireBlock extends Block{
else if (!NORTH && !SOUTH && WEST && !state.get(WIRE_CONNECTION_EAST).isBroken())
state = state.with(WIRE_CONNECTION_EAST, WDWireConnection.SIDE);
//TODO: FIX THIS.
//TODO: FIX n&s issue
return state;
}

View File

@ -1,8 +1,5 @@
package me.parsell.wireddust.core;
import java.util.HashMap;
import java.util.Map;
import me.parsell.wireddust.WiredDust;
import me.parsell.wireddust.common.WDBlazePowderWireBlock;
import me.parsell.wireddust.common.WDGunpowderWireBlock;
@ -10,14 +7,10 @@ import me.parsell.wireddust.common.WDWireBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block;
import net.minecraft.block.Material;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
public class WiredDustBlocks {
public static Map<ItemStack, Block> WDITEM_TO_BLOCK = new HashMap<ItemStack, Block>();
public static final Block GLOWSTONE_WIRE = new WDWireBlock(FabricBlockSettings.of(Material.SUPPORTED).breakInstantly().noCollision().luminance(9));
public static final Block GUNPOWDER_WIRE = new WDGunpowderWireBlock(FabricBlockSettings.of(Material.SUPPORTED).breakInstantly().noCollision());
public static final Block BLAZE_POWDER_WIRE = new WDBlazePowderWireBlock(FabricBlockSettings.of(Material.SUPPORTED).breakInstantly().noCollision().luminance(2));
@ -29,7 +22,6 @@ public class WiredDustBlocks {
Registry.register(Registry.BLOCK, new Identifier(WiredDust.MODID, "blaze_powder_wire"), BLAZE_POWDER_WIRE);
Registry.register(Registry.BLOCK, new Identifier(WiredDust.MODID, "sugar_wire"), SUGAR_WIRE);
WDITEM_TO_BLOCK.put(new ItemStack(Items.GLOWSTONE_DUST), GLOWSTONE_WIRE);
WDITEM_TO_BLOCK.put(new ItemStack(Items.SUGAR), SUGAR_WIRE);
}
}

View File

@ -0,0 +1,25 @@
package me.parsell.wireddust.core;
import me.parsell.wireddust.WiredDust;
import net.fabricmc.fabric.api.gamerule.v1.GameRuleFactory;
import net.fabricmc.fabric.api.gamerule.v1.GameRuleRegistry;
import net.minecraft.world.GameRules;
import net.minecraft.world.GameRules.Category;
public class WiredDustGamerules {
public static final GameRules.Key<GameRules.BooleanRule> DO_BLAZE_POWDER_WIRE_DAMAGE;
public static final GameRules.Key<GameRules.BooleanRule> GUNPOWDER_WIRE_IGNITES_TNT;
public static final GameRules.Key<GameRules.BooleanRule> GUNPOWDER_WIRE_LIGHTS_CAMPFIRES;
public static final GameRules.Key<GameRules.BooleanRule> GUNPOWDER_WIRE_IGNITES_BLOCKS;
public static void init(){
// placeabo, just ensures that these get registered
}
static {
DO_BLAZE_POWDER_WIRE_DAMAGE = GameRuleRegistry.register("doBlazePowderWireDamage", Category.MISC, GameRuleFactory.createBooleanRule(WiredDust.CONFIG.GR_DO_BLAZE_POWDER_WIRE_DAMAGE_DEFAULT));
GUNPOWDER_WIRE_IGNITES_TNT = GameRuleRegistry.register("gunpowderWireIgnitesTNT", Category.MISC, GameRuleFactory.createBooleanRule(WiredDust.CONFIG.GR_GUNPOWDER_WIRE_IGNITES_TNT_DEFAULT));
GUNPOWDER_WIRE_LIGHTS_CAMPFIRES = GameRuleRegistry.register("gunpowderWireLightsCampfire", Category.MISC, GameRuleFactory.createBooleanRule(WiredDust.CONFIG.GR_GUNPOWDER_WIRE_LIGHTS_CAMPFIRES_DEFAULT));
GUNPOWDER_WIRE_IGNITES_BLOCKS = GameRuleRegistry.register("gunpowderWireIgnitesBlocks", Category.MISC, GameRuleFactory.createBooleanRule(WiredDust.CONFIG.GR_GUNPOWDER_WIRE_IGNITES_BLOCKS));
}
}

View File

@ -2,6 +2,7 @@ package me.parsell.wireddust.core;
import com.mojang.serialization.Lifecycle;
import me.parsell.wireddust.WiredDust;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemGroup;
@ -11,12 +12,14 @@ import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryKey;
public class WiredDustItems {
public static void init(){
Registry.ITEM.set(Registry.ITEM.getRawId(Items.GLOWSTONE_DUST), RegistryKey.of(Registry.ITEM.getKey(), new Identifier("glowstone_dust")), new BlockItem(WiredDustBlocks.GLOWSTONE_WIRE, new FabricItemSettings().group(ItemGroup.MATERIALS)), Lifecycle.stable());
Registry.ITEM.set(Registry.ITEM.getRawId(Items.BLAZE_POWDER), RegistryKey.of(Registry.ITEM.getKey(), new Identifier("blaze_powder")), new BlockItem(WiredDustBlocks.BLAZE_POWDER_WIRE, new FabricItemSettings().group(ItemGroup.BREWING)), Lifecycle.stable());
Registry.ITEM.set(Registry.ITEM.getRawId(Items.GUNPOWDER), RegistryKey.of(Registry.ITEM.getKey(), new Identifier("gunpowder")), new BlockItem(WiredDustBlocks.GUNPOWDER_WIRE, new FabricItemSettings().group(ItemGroup.MATERIALS)), Lifecycle.stable());
Registry.ITEM.set(Registry.ITEM.getRawId(Items.SUGAR), RegistryKey.of(Registry.ITEM.getKey(), new Identifier("sugar")), new BlockItem(WiredDustBlocks.SUGAR_WIRE, new FabricItemSettings().group(ItemGroup.MATERIALS)), Lifecycle.stable());
if(WiredDust.CONFIG.addGlowstoneWire)
Registry.ITEM.set(Registry.ITEM.getRawId(Items.GLOWSTONE_DUST), RegistryKey.of(Registry.ITEM.getKey(), new Identifier("glowstone_dust")), new BlockItem(WiredDustBlocks.GLOWSTONE_WIRE, new FabricItemSettings().group(ItemGroup.MATERIALS)), Lifecycle.stable());
if(WiredDust.CONFIG.addBlazePowderWire)
Registry.ITEM.set(Registry.ITEM.getRawId(Items.BLAZE_POWDER), RegistryKey.of(Registry.ITEM.getKey(), new Identifier("blaze_powder")), new BlockItem(WiredDustBlocks.BLAZE_POWDER_WIRE, new FabricItemSettings().group(ItemGroup.BREWING)), Lifecycle.stable());
if(WiredDust.CONFIG.addGunpowderWire)
Registry.ITEM.set(Registry.ITEM.getRawId(Items.GUNPOWDER), RegistryKey.of(Registry.ITEM.getKey(), new Identifier("gunpowder")), new BlockItem(WiredDustBlocks.GUNPOWDER_WIRE, new FabricItemSettings().group(ItemGroup.MATERIALS)), Lifecycle.stable());
if(WiredDust.CONFIG.addSugarWire)
Registry.ITEM.set(Registry.ITEM.getRawId(Items.SUGAR), RegistryKey.of(Registry.ITEM.getKey(), new Identifier("sugar")), new BlockItem(WiredDustBlocks.SUGAR_WIRE, new FabricItemSettings().group(ItemGroup.MATERIALS)), Lifecycle.stable());
}
}

View File

@ -0,0 +1,20 @@
package me.parsell.wireddust.core;
import net.minecraft.block.Block;
import net.minecraft.tag.Tag;
import net.minecraft.util.Identifier;
import me.parsell.wireddust.WiredDust;
import net.fabricmc.fabric.api.tag.TagRegistry;
public class WiredDustTags {
public static final Tag<Block> GUNPOWDER_IGNITABLE_BLOCKS;
public static void init(){
//empty
}
static {
GUNPOWDER_IGNITABLE_BLOCKS = TagRegistry.block(new Identifier(WiredDust.MODID, "gunpowder_ignitable_blocks")); // TODO: FIX
}
}

View File

@ -1,7 +1,7 @@
{
"itemGroup.wireddust.general": "Wired Dust",
"block.wireddust.glowstone_wire": "Glowstone Wire",
"block.wireddust.sugar_wire": "Sugar Wire",
"block.wireddust.blaze_powder_wire": "Blaze Powder Wire",
"block.wireddust.gunpowder_wire": "Gunpowder Wire"
"block.wireddust.glowstone_wire": "Glowstone",
"block.wireddust.sugar_wire": "Sugar",
"block.wireddust.blaze_powder_wire": "Blaze Powder",
"block.wireddust.gunpowder_wire": "Gunpowder"
}

View File

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"#minecraft:leaves",
"#minecraft:wool",
"minecraft:hay_block"
]
}