Config update & introduction of flammable tag

This commit is contained in:
Justin Parsell 2021-11-27 03:07:09 -05:00
parent 579a9f0f45
commit d7aaa4f06f
9 changed files with 70 additions and 46 deletions

View File

@ -1,14 +1,12 @@
package me.parsell.wireddust; package me.parsell.wireddust;
import me.parsell.wireddust.core.WiredDustBlocks; import me.parsell.wireddust.core.WiredDustBlocks;
import me.parsell.wireddust.core.WiredDustGamerules;
import me.parsell.wireddust.core.WiredDustItems; import me.parsell.wireddust.core.WiredDustItems;
import me.parsell.wireddust.core.WiredDustTags;
import me.shedaniel.autoconfig.AutoConfig; import me.shedaniel.autoconfig.AutoConfig;
import me.shedaniel.autoconfig.serializer.GsonConfigSerializer; import me.shedaniel.autoconfig.serializer.GsonConfigSerializer;
import net.fabricmc.api.ModInitializer; 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 class WiredDust implements ModInitializer {
public static final String MODID = "wireddust"; public static final String MODID = "wireddust";
@ -21,6 +19,8 @@ public class WiredDust implements ModInitializer {
WiredDustBlocks.init(); WiredDustBlocks.init();
WiredDustItems.init(); WiredDustItems.init();
WiredDustGamerules.init();
WiredDustTags.init();
// Make sure player is not in spectator mode // Make sure player is not in spectator mode

View File

@ -5,18 +5,15 @@ import me.shedaniel.autoconfig.annotation.Config;
@Config(name = "WiredDust") @Config(name = "WiredDust")
public class WiredDustConfig implements ConfigData{ public class WiredDustConfig implements ConfigData{
public boolean useVanillaItems = true;
public boolean addSugarWire = true; public boolean addSugarWire = true;
public boolean addGlowstoneWire = true; public boolean addGlowstoneWire = true;
public boolean addBlazePowderWire = true; public boolean addBlazePowderWire = true;
//public boolean doBlazePowderDamage = true; // GR public boolean GR_DO_BLAZE_POWDER_WIRE_DAMAGE_DEFAULT = true;
public boolean addGunpowderWire = true; public boolean addGunpowderWire = true;
public boolean gunpowderWireIgnitesExtremelyFlammableBlocks = true; //GR: Campfire, leaves public boolean GR_GUNPOWDER_WIRE_IGNITES_TNT_DEFAULT = true;
public boolean gunpowderWireIgnitesFlammableBlocks = false; //GR: wool, hay public boolean GR_GUNPOWDER_WIRE_LIGHTS_CAMPFIRES_DEFAULT = true;
//public boolean gunpowderWireIgnitesTNT = true; //GR: tnt duh public boolean GR_GUNPOWDER_WIRE_IGNITES_BLOCKS = true;
//TODO Consider gamerules for additional functionality instead of mod config
} }

View File

@ -43,7 +43,7 @@ public class WDBlazePowderWireBlock extends WDWireBlock{
// determine what particle I should show // determine what particle I should show
ParticleEffect blaze_powder_particle = ParticleTypes.FLAME; 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; 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); 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

@ -4,6 +4,7 @@ import java.util.Iterator;
import java.util.Random; import java.util.Random;
import me.parsell.wireddust.core.WiredDustGamerules; import me.parsell.wireddust.core.WiredDustGamerules;
import me.parsell.wireddust.core.WiredDustTags;
import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -26,6 +27,7 @@ import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Direction.Axis; import net.minecraft.util.math.Direction.Axis;
import net.minecraft.world.GameRules;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldAccess;
@ -102,12 +104,13 @@ public class WDGunpowderWireBlock extends WDWireBlock{
public void light(World world, BlockPos pos, BlockState state){ public void light(World world, BlockPos pos, BlockState state){
world.setBlockState(pos, state.with(LIT, true)); 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)) { if (!world.isClient() && !world.getBlockTickScheduler().isScheduled(pos, this)) {
world.getBlockTickScheduler().schedule(pos, this, 60); world.getBlockTickScheduler().schedule(pos, this, length);
} }
} }
@ -119,26 +122,27 @@ public class WDGunpowderWireBlock extends WDWireBlock{
@Override @Override
public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random random) { public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {
if(!state.get(BURNT)) { 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()) { while(dirItr.hasNext()) {
Direction dir = dirItr.next(); Direction dir = dirItr.next();
BlockPos offsetPos = pos.offset(dir); BlockPos offsetPos = pos.offset(dir);
BlockState offsetBlockState = world.getBlockState(offsetPos); BlockState offsetBlockState = world.getBlockState(offsetPos);
GameRules worldGameRules = world.getGameRules();
if(state.get(super.DIRECTION_TO_WIRE_CONNECTION.get(dir)).isConnected()) if(state.get(super.DIRECTION_TO_WIRE_CONNECTION.get(dir)).isConnected())
if(offsetBlockState.isOf(this)) if(offsetBlockState.isOf(this))
light(world, offsetPos, offsetBlockState); light(world, offsetPos, offsetBlockState); // TODO: get up/down
else if(offsetBlockState.isOf(Blocks.TNT) && world.getGameRules().getBoolean(WiredDustGamerules.GUNPOWDER_WIRE_IGNITES_TNT)) { else if(offsetBlockState.isOf(Blocks.TNT) && worldGameRules.getBoolean(WiredDustGamerules.GUNPOWDER_WIRE_IGNITES_TNT)) {
TntBlock.primeTnt(world, offsetPos); TntBlock.primeTnt(world, offsetPos);
world.setBlockState(offsetPos, Blocks.AIR.getDefaultState()); 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)); 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)); world.setBlockState(pos, state.with(BURNT, true));
scheduleTick(world, pos); scheduleTick(world, pos, 65);
} else { } else {
world.setBlockState(pos, Blocks.AIR.getDefaultState()); world.setBlockState(pos, Blocks.AIR.getDefaultState());
} }

View File

@ -1,8 +1,5 @@
package me.parsell.wireddust.core; package me.parsell.wireddust.core;
import java.util.HashMap;
import java.util.Map;
import me.parsell.wireddust.WiredDust; import me.parsell.wireddust.WiredDust;
import me.parsell.wireddust.common.WDBlazePowderWireBlock; import me.parsell.wireddust.common.WDBlazePowderWireBlock;
import me.parsell.wireddust.common.WDGunpowderWireBlock; 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.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.Material; import net.minecraft.block.Material;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
public class WiredDustBlocks { 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 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 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)); 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, "blaze_powder_wire"), BLAZE_POWDER_WIRE);
Registry.register(Registry.BLOCK, new Identifier(WiredDust.MODID, "sugar_wire"), SUGAR_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

@ -1,5 +1,6 @@
package me.parsell.wireddust.core; 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.GameRuleFactory;
import net.fabricmc.fabric.api.gamerule.v1.GameRuleRegistry; import net.fabricmc.fabric.api.gamerule.v1.GameRuleRegistry;
import net.minecraft.world.GameRules; import net.minecraft.world.GameRules;
@ -8,13 +9,17 @@ import net.minecraft.world.GameRules.Category;
public class WiredDustGamerules { public class WiredDustGamerules {
public static final GameRules.Key<GameRules.BooleanRule> DO_BLAZE_POWDER_WIRE_DAMAGE; 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_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 void init(){ public static void init(){
// placeabo, just ensures that static gets ran here // placeabo, just ensures that these get registered
} }
static { static {
DO_BLAZE_POWDER_WIRE_DAMAGE = GameRuleRegistry.register("doBlazePowderWireDamage", Category.MISC, GameRuleFactory.createBooleanRule(true)); 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(true)); 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

@ -13,15 +13,13 @@ import net.minecraft.util.registry.RegistryKey;
public class WiredDustItems { public class WiredDustItems {
public static void init(){ public static void init(){
if(WiredDust.CONFIG.useVanillaItems) { if(WiredDust.CONFIG.addGlowstoneWire)
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());
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)
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());
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)
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());
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)
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());
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

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