Compare commits
2 Commits
c735b06779
...
d7aaa4f06f
Author | SHA1 | Date |
---|---|---|
|
d7aaa4f06f | |
|
579a9f0f45 |
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"#minecraft:leaves",
|
||||
"#minecraft:wool",
|
||||
"minecraft:hay_block"
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue