diff --git a/assets/zap_planks.xcf b/assets/zap_planks.xcf new file mode 100644 index 00000000..dc4a15cd Binary files /dev/null and b/assets/zap_planks.xcf differ diff --git a/build.gradle b/build.gradle index b3d2c2b2..a31e3671 100644 --- a/build.gradle +++ b/build.gradle @@ -44,6 +44,8 @@ repositories { maven { name 'minelp-snapshot'; url 'https://repo.minelittlepony-mod.com/maven/snapshot' } maven { name 'minelp-releases'; url 'https://repo.minelittlepony-mod.com/maven/release' } maven { name 'TerraformersMC'; url 'https://maven.terraformersmc.com/' } + maven { name 'Modrinth'; url 'https://api.modrinth.com/maven' } + maven { name 'JitPack'; url 'https://jitpack.io'; content { includeGroup "com.github.Virtuoel" } } } dependencies { @@ -72,17 +74,17 @@ dependencies { modImplementation "com.terraformersmc.terraform-api:terraform-wood-api-v1:${project.terraformer_api_version}" include "com.terraformersmc.terraform-api:terraform-wood-api-v1:${project.terraformer_api_version}" + modCompileOnly "maven.modrinth:farmers-delight-fabric:${project.farmers_delight_version}", { exclude group: "net.fabricmc.fabric-api" } + modCompileOnly "maven.modrinth:iris:${project.iris_version}", { exclude group: "net.fabricmc.fabric-api" } + modCompileOnly "maven.modrinth:sodium:${project.sodium_version}", { exclude group: "net.fabricmc.fabric-api" } + modCompileOnly "maven.modrinth:pehkui:${project.pehkui_version}", { exclude group: "net.fabricmc.fabric-api" } + modCompileOnly "com.github.Virtuoel:KanosConfig:0.4.1", { exclude group: "net.fabricmc.fabric-api" } + if (project.tmi_type == 'emi') { modCompileOnly "dev.emi:emi-fabric:${project.emi_version}" } else { modCompileOnly "dev.emi:emi-fabric-dummy:${project.emi_version}" } - - if (project.tmi_type == 'rei') { - // TODO: - } else { - // TODO: - } } processResources { diff --git a/gradle.properties b/gradle.properties index d0bb613b..31bb681e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -28,6 +28,12 @@ org.gradle.daemon=false trinkets_version=3.7.1 terraformer_api_version=7.0.0-beta.1 +# Testing + farmers_delight_version=1.4.3 + pehkui_version=3.7.8+1.14.4-1.20.1 + iris_version=1.6.8+1.20.1 + sodium_version=mc1.20.1-0.5.2 + # TMI Testing tmi_type=emi emi_version=1.0.19+1.20.1 diff --git a/src/main/java/com/minelittlepony/unicopia/block/BlockConstructionUtils.java b/src/main/java/com/minelittlepony/unicopia/block/BlockConstructionUtils.java index 963d38a2..8d4742d2 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/BlockConstructionUtils.java +++ b/src/main/java/com/minelittlepony/unicopia/block/BlockConstructionUtils.java @@ -15,7 +15,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; -interface BlockConstructionUtils { +public interface BlockConstructionUtils { static ButtonBlock woodenButton() { return woodenButton(BlockSoundGroup.WOOD, BlockSetType.OAK); } diff --git a/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java b/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java index 7611e7b1..88a019c3 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java +++ b/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java @@ -21,6 +21,15 @@ import com.minelittlepony.unicopia.block.cloud.SoggyCloudBlock; import com.minelittlepony.unicopia.block.cloud.SoggyCloudSlabBlock; import com.minelittlepony.unicopia.block.cloud.SoggyCloudStairsBlock; import com.minelittlepony.unicopia.block.cloud.UnstableCloudBlock; +import com.minelittlepony.unicopia.block.zap.BaseZapAppleLeavesBlock; +import com.minelittlepony.unicopia.block.zap.ElectrifiedFenceBlock; +import com.minelittlepony.unicopia.block.zap.ElectrifiedFenceGateBlock; +import com.minelittlepony.unicopia.block.zap.ZapAppleLeavesBlock; +import com.minelittlepony.unicopia.block.zap.ZapAppleLeavesPlaceholderBlock; +import com.minelittlepony.unicopia.block.zap.ZapAppleLogBlock; +import com.minelittlepony.unicopia.block.zap.ZapBlock; +import com.minelittlepony.unicopia.block.zap.ZapSlabBlock; +import com.minelittlepony.unicopia.block.zap.ZapStairsBlock; import com.minelittlepony.unicopia.entity.effect.UEffects; import com.minelittlepony.unicopia.item.UItems; import com.minelittlepony.unicopia.item.cloud.CloudBlockItem; @@ -28,6 +37,7 @@ import com.minelittlepony.unicopia.item.group.ItemGroupRegistry; import com.minelittlepony.unicopia.server.world.UTreeGen; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.registry.FlammableBlockRegistry; +import net.fabricmc.fabric.api.registry.OxidizableBlocksRegistry; import net.fabricmc.fabric.api.registry.StrippableBlockRegistry; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.block.*; @@ -59,31 +69,47 @@ public interface UBlocks { Block FROSTED_OBSIDIAN = register("frosted_obsidian", new FrostedObsidianBlock(FabricBlockSettings.copy(Blocks.OBSIDIAN).ticksRandomly())); - Block ZAP_LOG = register("zap_log", new ZapAppleLogBlock(Blocks.OAK_LOG, MapColor.GRAY, MapColor.DEEPSLATE_GRAY), ItemGroups.BUILDING_BLOCKS); - Block ZAP_WOOD = register("zap_wood", new ZapAppleLogBlock(Blocks.OAK_WOOD, MapColor.DEEPSLATE_GRAY, MapColor.DEEPSLATE_GRAY), ItemGroups.BUILDING_BLOCKS); + Block ZAP_LOG = register("zap_log", new ZapAppleLogBlock(Blocks.OAK_LOG.getDefaultState(), UMapColors.ZAP_LOG_END, UMapColors.ZAP_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); + Block ZAP_WOOD = register("zap_wood", new ZapAppleLogBlock(Blocks.OAK_WOOD.getDefaultState(), UMapColors.ZAP_LOG_SIDE, UMapColors.ZAP_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); + Block STRIPPED_ZAP_LOG = register("stripped_zap_log", new ZapAppleLogBlock(Blocks.STRIPPED_OAK_LOG.getDefaultState(), UMapColors.ZAP_LOG_END, UMapColors.STRIPPED_ZAP_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); + Block STRIPPED_ZAP_WOOD = register("stripped_zap_wood", new ZapAppleLogBlock(Blocks.STRIPPED_OAK_WOOD.getDefaultState(), UMapColors.STRIPPED_ZAP_LOG_SIDE, UMapColors.STRIPPED_ZAP_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); - Block STRIPPED_ZAP_LOG = register("stripped_zap_log", new ZapAppleLogBlock(Blocks.STRIPPED_OAK_LOG, MapColor.LIGHT_GRAY, MapColor.GRAY), ItemGroups.BUILDING_BLOCKS); - Block STRIPPED_ZAP_WOOD = register("stripped_zap_wood", new ZapAppleLogBlock(Blocks.STRIPPED_OAK_WOOD, MapColor.GRAY, MapColor.GRAY), ItemGroups.BUILDING_BLOCKS); + Block WAXED_ZAP_LOG = register("waxed_zap_log", BlockConstructionUtils.createLogBlock(UMapColors.ZAP_LOG_END, UMapColors.ZAP_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); + Block WAXED_ZAP_WOOD = register("waxed_zap_wood", BlockConstructionUtils.createLogBlock(UMapColors.ZAP_LOG_SIDE, UMapColors.ZAP_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); + Block WAXED_STRIPPED_ZAP_LOG = register("waxed_stripped_zap_log", BlockConstructionUtils.createLogBlock(UMapColors.ZAP_LOG_END, UMapColors.STRIPPED_ZAP_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); + Block WAXED_STRIPPED_ZAP_WOOD = register("waxed_stripped_zap_wood", BlockConstructionUtils.createLogBlock(UMapColors.STRIPPED_ZAP_LOG_SIDE, UMapColors.STRIPPED_ZAP_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); + + Block ZAP_PLANKS = register("zap_planks", new ZapBlock(Settings.create().mapColor(UMapColors.ZAP_PLANKS).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); + Block ZAP_STAIRS = register("zap_stairs", new ZapStairsBlock(ZAP_PLANKS.getDefaultState(), Settings.copy(ZAP_PLANKS).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); + Block ZAP_SLAB = register("zap_slab", new ZapSlabBlock(Settings.create().mapColor(ZAP_PLANKS.getDefaultMapColor()).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); + Block ZAP_FENCE = register("zap_fence", new ElectrifiedFenceBlock(Settings.create().mapColor(ZAP_PLANKS.getDefaultMapColor()).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); + Block ZAP_FENCE_GATE = register("zap_fence_gate", new ElectrifiedFenceGateBlock(Settings.create().mapColor(ZAP_PLANKS.getDefaultMapColor()).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL), UWoodTypes.ZAP), ItemGroups.BUILDING_BLOCKS); + + Block WAXED_ZAP_PLANKS = register("waxed_zap_planks", new Block(Settings.create().mapColor(UMapColors.ZAP_PLANKS).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); + Block WAXED_ZAP_STAIRS = register("waxed_zap_stairs", new StairsBlock(WAXED_ZAP_PLANKS.getDefaultState(), Settings.copy(WAXED_ZAP_PLANKS).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); + Block WAXED_ZAP_SLAB = register("waxed_zap_slab", new SlabBlock(Settings.create().mapColor(WAXED_ZAP_PLANKS.getDefaultMapColor()).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); + Block WAXED_ZAP_FENCE = register("waxed_zap_fence", new FenceBlock(Settings.create().mapColor(WAXED_ZAP_PLANKS.getDefaultMapColor()).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); + Block WAXED_ZAP_FENCE_GATE = register("waxed_zap_fence_gate", new FenceGateBlock(Settings.create().mapColor(WAXED_ZAP_PLANKS.getDefaultMapColor()).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL), UWoodTypes.ZAP), ItemGroups.BUILDING_BLOCKS); Block ZAP_LEAVES = register("zap_leaves", new ZapAppleLeavesBlock(), ItemGroups.NATURAL); Block FLOWERING_ZAP_LEAVES = register("flowering_zap_leaves", new BaseZapAppleLeavesBlock(), ItemGroups.NATURAL); Block ZAP_LEAVES_PLACEHOLDER = register("zap_leaves_placeholder", new ZapAppleLeavesPlaceholderBlock()); Block ZAP_BULB = register("zap_bulb", new FruitBlock(Settings.create().mapColor(MapColor.GRAY).strength(500, 1200).sounds(BlockSoundGroup.AZALEA_LEAVES), Direction.DOWN, ZAP_LEAVES, FruitBlock.DEFAULT_SHAPE, false)); - Block ZAP_APPLE = register("zap_apple", new FruitBlock(Settings.create().mapColor(MapColor.GRAY).sounds(BlockSoundGroup.AZALEA_LEAVES), Direction.DOWN, ZAP_LEAVES, FruitBlock.DEFAULT_SHAPE, false)); + Block ZAP_APPLE = register("zap_apple", new FruitBlock(Settings.create().mapColor(MapColor.YELLOW).sounds(BlockSoundGroup.AZALEA_LEAVES), Direction.DOWN, ZAP_LEAVES, FruitBlock.DEFAULT_SHAPE, false)); - Block PALM_LOG = register("palm_log", BlockConstructionUtils.createLogBlock(MapColor.OFF_WHITE, MapColor.SPRUCE_BROWN), ItemGroups.BUILDING_BLOCKS); - Block PALM_WOOD = register("palm_wood", BlockConstructionUtils.createWoodBlock(MapColor.OFF_WHITE), ItemGroups.BUILDING_BLOCKS); - Block STRIPPED_PALM_LOG = register("stripped_palm_log", BlockConstructionUtils.createLogBlock(MapColor.OFF_WHITE, MapColor.OFF_WHITE), ItemGroups.BUILDING_BLOCKS); - Block STRIPPED_PALM_WOOD = register("stripped_palm_wood", BlockConstructionUtils.createWoodBlock(MapColor.OFF_WHITE), ItemGroups.BUILDING_BLOCKS); + Block PALM_LOG = register("palm_log", BlockConstructionUtils.createLogBlock(UMapColors.PALM_LOG_END, UMapColors.PALM_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); + Block PALM_WOOD = register("palm_wood", BlockConstructionUtils.createWoodBlock(UMapColors.PALM_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); + Block STRIPPED_PALM_LOG = register("stripped_palm_log", BlockConstructionUtils.createLogBlock(UMapColors.PALM_LOG_END, UMapColors.STRIPPED_PALM_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); + Block STRIPPED_PALM_WOOD = register("stripped_palm_wood", BlockConstructionUtils.createWoodBlock(UMapColors.STRIPPED_PALM_LOG_SIDE), ItemGroups.BUILDING_BLOCKS); - Block PALM_PLANKS = register("palm_planks", new Block(Settings.create().mapColor(MapColor.OFF_WHITE).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); + Block PALM_PLANKS = register("palm_planks", new Block(Settings.create().mapColor(UMapColors.PALM_PLANKS).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); Block PALM_STAIRS = register("palm_stairs", new StairsBlock(PALM_PLANKS.getDefaultState(), Settings.copy(PALM_PLANKS).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); Block PALM_SLAB = register("palm_slab", new SlabBlock(Settings.create().mapColor(PALM_PLANKS.getDefaultMapColor()).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); Block PALM_FENCE = register("palm_fence", new FenceBlock(Settings.create().mapColor(PALM_PLANKS.getDefaultMapColor()).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL)), ItemGroups.BUILDING_BLOCKS); Block PALM_FENCE_GATE = register("palm_fence_gate", new FenceGateBlock(Settings.create().mapColor(PALM_PLANKS.getDefaultMapColor()).strength(2, 3).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.NORMAL), UWoodTypes.PALM), ItemGroups.BUILDING_BLOCKS); Block PALM_DOOR = register("palm_door", new DoorBlock(Settings.create().mapColor(PALM_PLANKS.getDefaultMapColor()).instrument(Instrument.BASS).strength(3.0f).nonOpaque().burnable().pistonBehavior(PistonBehavior.DESTROY), UWoodTypes.PALM.setType()), ItemGroups.FUNCTIONAL); Block PALM_TRAPDOOR = register("palm_trapdoor", new TrapdoorBlock(Settings.create().mapColor(PALM_PLANKS.getDefaultMapColor()).instrument(Instrument.BASS).strength(3).nonOpaque().allowsSpawning(BlockConstructionUtils::never).burnable(), UWoodTypes.PALM.setType()), ItemGroups.FUNCTIONAL); - Block PALM_PRESSURE_PLATE = register("palm_pressure_plate", new PressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, Settings.create().mapColor(PALM_PLANKS.getDefaultMapColor()).noCollision().strength(0.5f).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.DESTROY), BlockSetType.OAK), ItemGroups.BUILDING_BLOCKS); + Block PALM_PRESSURE_PLATE = register("palm_pressure_plate", new PressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, Settings.create().mapColor(PALM_PLANKS.getDefaultMapColor()).noCollision().strength(0.5f).sounds(BlockSoundGroup.WOOD).pistonBehavior(PistonBehavior.DESTROY), UWoodTypes.PALM.setType()), ItemGroups.BUILDING_BLOCKS); Block PALM_BUTTON = register("palm_button", BlockConstructionUtils.woodenButton(), ItemGroups.BUILDING_BLOCKS); Block PALM_SIGN = register("palm_sign", new SignBlock(Settings.create().mapColor(PALM_PLANKS.getDefaultMapColor()).solid().instrument(Instrument.BASS).noCollision().strength(1).burnable().sounds(BlockSoundGroup.WOOD), UWoodTypes.PALM), ItemGroups.FUNCTIONAL); Block PALM_WALL_SIGN = register("palm_wall_sign", new WallSignBlock(Settings.create().mapColor(PALM_PLANKS.getDefaultMapColor()).solid().instrument(Instrument.BASS).noCollision().strength(1).dropsLike(PALM_SIGN).burnable(), UWoodTypes.PALM)); @@ -268,6 +294,15 @@ public interface UBlocks { StrippableBlockRegistry.register(PALM_LOG, STRIPPED_PALM_LOG); StrippableBlockRegistry.register(ZAP_WOOD, STRIPPED_ZAP_WOOD); StrippableBlockRegistry.register(PALM_WOOD, STRIPPED_PALM_WOOD); + OxidizableBlocksRegistry.registerWaxableBlockPair(ZAP_LOG, WAXED_ZAP_LOG); + OxidizableBlocksRegistry.registerWaxableBlockPair(ZAP_WOOD, WAXED_ZAP_WOOD); + OxidizableBlocksRegistry.registerWaxableBlockPair(STRIPPED_ZAP_LOG, WAXED_STRIPPED_ZAP_LOG); + OxidizableBlocksRegistry.registerWaxableBlockPair(STRIPPED_ZAP_WOOD, WAXED_STRIPPED_ZAP_WOOD); + OxidizableBlocksRegistry.registerWaxableBlockPair(ZAP_PLANKS, WAXED_ZAP_PLANKS); + OxidizableBlocksRegistry.registerWaxableBlockPair(ZAP_STAIRS, WAXED_ZAP_STAIRS); + OxidizableBlocksRegistry.registerWaxableBlockPair(ZAP_SLAB, WAXED_ZAP_SLAB); + OxidizableBlocksRegistry.registerWaxableBlockPair(ZAP_FENCE, WAXED_ZAP_FENCE); + OxidizableBlocksRegistry.registerWaxableBlockPair(ZAP_FENCE_GATE, WAXED_ZAP_FENCE_GATE); Collections.addAll(TRANSLUCENT_BLOCKS, WEATHER_VANE, CHITIN_SPIKES, PLUNDER_VINE, PLUNDER_VINE_BUD, CLAM_SHELL, SCALLOP_SHELL, TURRET_SHELL, CURING_JOKE, SPECTRAL_FIRE); TintedBlock.REGISTRY.add(PALM_LEAVES); @@ -276,14 +311,22 @@ public interface UBlocks { FlammableBlockRegistry.getDefaultInstance().add(SOUR_APPLE_LEAVES, 30, 60); FlammableBlockRegistry.getDefaultInstance().add(GOLDEN_OAK_LEAVES, 60, 120); FlammableBlockRegistry.getDefaultInstance().add(MANGO_LEAVES, 30, 60); - FlammableBlockRegistry.getDefaultInstance().add(PALM_LEAVES, 30, 60); - FlammableBlockRegistry.getDefaultInstance().add(PALM_LOG, 5, 5); - FlammableBlockRegistry.getDefaultInstance().add(PALM_WOOD, 5, 5); + FlammableBlockRegistry.getDefaultInstance().add(GOLDEN_OAK_LOG, 15, 15); + + FlammableBlockRegistry.getDefaultInstance().add(PALM_PLANKS, 5, 20); + FlammableBlockRegistry.getDefaultInstance().add(PALM_SLAB, 5, 20); + FlammableBlockRegistry.getDefaultInstance().add(PALM_FENCE_GATE, 5, 20); + FlammableBlockRegistry.getDefaultInstance().add(PALM_FENCE, 5, 20); + FlammableBlockRegistry.getDefaultInstance().add(PALM_STAIRS, 5, 20); + FlammableBlockRegistry.getDefaultInstance().add(PALM_LOG, 5, 5); FlammableBlockRegistry.getDefaultInstance().add(STRIPPED_PALM_LOG, 5, 5); FlammableBlockRegistry.getDefaultInstance().add(STRIPPED_PALM_WOOD, 5, 5); - FlammableBlockRegistry.getDefaultInstance().add(PALM_PLANKS, 5, 20); + FlammableBlockRegistry.getDefaultInstance().add(PALM_WOOD, 5, 5); + FlammableBlockRegistry.getDefaultInstance().add(PALM_LEAVES, 30, 60); + FlammableBlockRegistry.getDefaultInstance().add(BANANAS, 5, 20); + FlammableBlockRegistry.getDefaultInstance().add(CURING_JOKE, 60, 100); UBlockEntities.bootstrap(); EdibleBlock.bootstrap(); diff --git a/src/main/java/com/minelittlepony/unicopia/block/UMapColors.java b/src/main/java/com/minelittlepony/unicopia/block/UMapColors.java new file mode 100644 index 00000000..019176e4 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/block/UMapColors.java @@ -0,0 +1,15 @@ +package com.minelittlepony.unicopia.block; + +import net.minecraft.block.MapColor; + +public interface UMapColors { + MapColor ZAP_LEAVES = MapColor.MAGENTA; + MapColor ZAP_PLANKS = MapColor.MAGENTA; + MapColor ZAP_LOG_SIDE = MapColor.PURPLE; + MapColor ZAP_LOG_END = MapColor.MAGENTA; + MapColor STRIPPED_ZAP_LOG_SIDE = MapColor.PURPLE; + MapColor PALM_PLANKS = MapColor.OFF_WHITE; + MapColor PALM_LOG_END = MapColor.OFF_WHITE; + MapColor PALM_LOG_SIDE = MapColor.SPRUCE_BROWN; + MapColor STRIPPED_PALM_LOG_SIDE = MapColor.OFF_WHITE; +} diff --git a/src/main/java/com/minelittlepony/unicopia/block/UWoodTypes.java b/src/main/java/com/minelittlepony/unicopia/block/UWoodTypes.java index 5f76ed97..21c3217e 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/UWoodTypes.java +++ b/src/main/java/com/minelittlepony/unicopia/block/UWoodTypes.java @@ -15,6 +15,7 @@ import net.minecraft.util.Identifier; public interface UWoodTypes { WoodType PALM = register("palm"); + WoodType ZAP = register("zap"); WoodType GOLDEN_OAK = register("golden_oak"); RegistryKey PALM_BOAT_TYPE = TerraformBoatTypeRegistry.createKey(Unicopia.id("palm")); diff --git a/src/main/java/com/minelittlepony/unicopia/block/ZapBlock.java b/src/main/java/com/minelittlepony/unicopia/block/ZapBlock.java deleted file mode 100644 index c38f0b7a..00000000 --- a/src/main/java/com/minelittlepony/unicopia/block/ZapBlock.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.minelittlepony.unicopia.block; - -import com.minelittlepony.unicopia.entity.player.Pony; -import com.minelittlepony.unicopia.particle.LightningBoltParticleEffect; -import com.minelittlepony.unicopia.particle.ParticleUtils; -import net.minecraft.block.*; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LightningEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemPlacementContext; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.state.StateManager; -import net.minecraft.state.property.BooleanProperty; -import net.minecraft.util.math.*; -import net.minecraft.world.BlockView; -import net.minecraft.world.World; -import net.minecraft.world.event.GameEvent; - -public class ZapBlock extends Block { - public static final BooleanProperty NATURAL = BooleanProperty.of("natural"); - - private final Block artificialModelBlock; - - ZapBlock(Settings settings, Block artificialModelBlock) { - super(settings.strength(500, 1200)); - setDefaultState(getDefaultState().with(NATURAL, true)); - this.artificialModelBlock = artificialModelBlock; - } - - @Override - protected void appendProperties(StateManager.Builder builder) { - super.appendProperties(builder); - builder.add(NATURAL); - } - - @Override - public BlockState getPlacementState(ItemPlacementContext ctx) { - return getDefaultState().with(NATURAL, false); - } - - @Deprecated - @Override - public void onBlockBreakStart(BlockState state, World world, BlockPos pos, PlayerEntity player) { - triggerLightning(state, world, pos, player); - } - - @Deprecated - @Override - public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { - if (!state.get(NATURAL)) { - return artificialModelBlock.calcBlockBreakingDelta(artificialModelBlock.getDefaultState(), player, world, pos); - } - - float delta = super.calcBlockBreakingDelta(state, player, world, pos); - - if (Pony.of(player).getCompositeRace().canUseEarth()) { - delta *= 50; - } - - return MathHelper.clamp(delta, 0, 0.9F); - } - - - public static void triggerLightning(BlockState state, World world, BlockPos pos, PlayerEntity player) { - if (world instanceof ServerWorld serverWorld) { - Vec3d center = Vec3d.ofCenter(pos); - LightningEntity lightning = EntityType.LIGHTNING_BOLT.create(world); - world.getOtherEntities(null, Box.from(center).expand(7)).forEach(other -> { - float dist = (float)other.getPos().distanceTo(center); - if (dist < 4) { - other.onStruckByLightning(serverWorld, lightning); - } else { - float damage = 3 / dist; - if (damage > 1) { - other.damage(world.getDamageSources().lightningBolt(), damage); - } - } - }); - } - world.emitGameEvent(GameEvent.LIGHTNING_STRIKE, pos, GameEvent.Emitter.of(state)); - ParticleUtils.spawnParticle(world, LightningBoltParticleEffect.DEFAULT, Vec3d.ofCenter(pos), Vec3d.ZERO); - } -} diff --git a/src/main/java/com/minelittlepony/unicopia/block/BaseZapAppleLeavesBlock.java b/src/main/java/com/minelittlepony/unicopia/block/zap/BaseZapAppleLeavesBlock.java similarity index 87% rename from src/main/java/com/minelittlepony/unicopia/block/BaseZapAppleLeavesBlock.java rename to src/main/java/com/minelittlepony/unicopia/block/zap/BaseZapAppleLeavesBlock.java index 902b5a11..94e82888 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/BaseZapAppleLeavesBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/zap/BaseZapAppleLeavesBlock.java @@ -1,7 +1,10 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.block.zap; import org.jetbrains.annotations.Nullable; +import com.minelittlepony.unicopia.block.BlockConstructionUtils; +import com.minelittlepony.unicopia.block.TintedBlock; +import com.minelittlepony.unicopia.block.UMapColors; import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.server.world.ZapAppleStageStore; @@ -13,11 +16,11 @@ import net.minecraft.util.math.*; import net.minecraft.util.math.random.Random; import net.minecraft.world.*; -public class BaseZapAppleLeavesBlock extends LeavesBlock implements TintedBlock, ZapStagedBlock { +public class BaseZapAppleLeavesBlock extends LeavesBlock implements TintedBlock, ZapStagedBlock, ElectrifiedBlock { - BaseZapAppleLeavesBlock() { + public BaseZapAppleLeavesBlock() { super(Settings.create() - .mapColor(MapColor.PURPLE) + .mapColor(UMapColors.ZAP_LEAVES) .strength(500, 1200) .ticksRandomly() .sounds(BlockSoundGroup.AZALEA_LEAVES) @@ -77,7 +80,7 @@ public class BaseZapAppleLeavesBlock extends LeavesBlock implements TintedBlock, @Override public void onBlockBreakStart(BlockState state, World world, BlockPos pos, PlayerEntity player) { - ZapBlock.triggerLightning(state, world, pos, player); + triggerLightning(state, world, pos); } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/block/zap/ElectrifiedBlock.java b/src/main/java/com/minelittlepony/unicopia/block/zap/ElectrifiedBlock.java new file mode 100644 index 00000000..bba75e5b --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/block/zap/ElectrifiedBlock.java @@ -0,0 +1,83 @@ +package com.minelittlepony.unicopia.block.zap; + +import java.util.Optional; + +import com.minelittlepony.unicopia.entity.player.Pony; +import com.minelittlepony.unicopia.particle.LightningBoltParticleEffect; +import com.minelittlepony.unicopia.particle.ParticleUtils; + +import net.minecraft.block.BlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.LightningEntity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.World; +import net.minecraft.world.event.GameEvent; + +public interface ElectrifiedBlock { + + default void spawnElectricalParticles(World world, BlockPos pos, Random random) { + world.addParticle(new LightningBoltParticleEffect(true, 10, 1, 0.6F, Optional.empty()), + pos.getX() + 0.5, + pos.getY() + 0.5, + pos.getZ() + 0.5, + 0, 0, 0 + ); + } + + default float getBlockBreakingDelta(float delta, PlayerEntity player) { + if (Pony.of(player).getCompositeRace().canUseEarth()) { + delta *= 50; + } + + return MathHelper.clamp(delta, 0, 0.9F); + } + + default void triggerLightning(BlockState state, World world, BlockPos pos) { + Vec3d center = pos.toCenterPos(); + if (world instanceof ServerWorld serverWorld) { + LightningEntity lightning = EntityType.LIGHTNING_BOLT.create(world); + world.getOtherEntities(null, Box.from(center).expand(7)).forEach(entity -> { + shockEntity(serverWorld, center, lightning, entity); + }); + } + world.emitGameEvent(GameEvent.LIGHTNING_STRIKE, pos, GameEvent.Emitter.of(state)); + ParticleUtils.spawnParticle(world, LightningBoltParticleEffect.DEFAULT, center, Vec3d.ZERO); + } + + default void triggerLightning(BlockState state, World world, BlockPos pos, LivingEntity entity, boolean knockBack) { + Vec3d center = pos.toCenterPos(); + if (world instanceof ServerWorld serverWorld) { + shockEntity(serverWorld, center, EntityType.LIGHTNING_BOLT.create(world), entity); + } + if (knockBack) { + Vec3d offset = center.subtract(entity.getPos()); + entity.takeKnockback(0.8, offset.x, offset.z); + } + world.emitGameEvent(GameEvent.LIGHTNING_STRIKE, pos, GameEvent.Emitter.of(state)); + ParticleUtils.spawnParticle(world, LightningBoltParticleEffect.DEFAULT, center, Vec3d.ZERO); + } + + private static void shockEntity(ServerWorld serverWorld, Vec3d center, LightningEntity lightning, Entity entity) { + if (entity instanceof ItemEntity) { + return; + } + float dist = (float)entity.getPos().distanceTo(center); + if (dist < 4) { + entity.onStruckByLightning(serverWorld, EntityType.LIGHTNING_BOLT.create(serverWorld)); + } else { + float damage = 3 / dist; + if (damage > 1) { + entity.damage(entity.getDamageSources().lightningBolt(), damage); + } + } + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/block/zap/ElectrifiedFenceBlock.java b/src/main/java/com/minelittlepony/unicopia/block/zap/ElectrifiedFenceBlock.java new file mode 100644 index 00000000..0130ea35 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/block/zap/ElectrifiedFenceBlock.java @@ -0,0 +1,43 @@ +package com.minelittlepony.unicopia.block.zap; + +import net.minecraft.block.BlockState; +import net.minecraft.block.FenceBlock; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; + +public class ElectrifiedFenceBlock extends FenceBlock implements ElectrifiedBlock { + + public ElectrifiedFenceBlock(Settings settings) { + super(settings); + } + + @Override + public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { + super.randomDisplayTick(state, world, pos, random); + spawnElectricalParticles(world, pos, random); + } + + @Deprecated + @Override + public void onBlockBreakStart(BlockState state, World world, BlockPos pos, PlayerEntity player) { + triggerLightning(state, world, pos); + } + + @Deprecated + @Override + public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { + return getBlockBreakingDelta(super.calcBlockBreakingDelta(state, player, world, pos), player); + } + + @Override + public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) { + if (entity instanceof LivingEntity l && l.hurtTime == 0 && l.canTakeDamage()) { + triggerLightning(state, world, pos, l, true); + } + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/block/zap/ElectrifiedFenceGateBlock.java b/src/main/java/com/minelittlepony/unicopia/block/zap/ElectrifiedFenceGateBlock.java new file mode 100644 index 00000000..89de9990 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/block/zap/ElectrifiedFenceGateBlock.java @@ -0,0 +1,45 @@ +package com.minelittlepony.unicopia.block.zap; + +import net.minecraft.block.BlockState; +import net.minecraft.block.FenceGateBlock; +import net.minecraft.block.WoodType; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; + +public class ElectrifiedFenceGateBlock extends FenceGateBlock implements ElectrifiedBlock { + public ElectrifiedFenceGateBlock(Settings settings, WoodType type) { + super(settings, type); + } + + @Override + public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { + super.randomDisplayTick(state, world, pos, random); + if (!state.get(OPEN)) { + spawnElectricalParticles(world, pos, random); + } + } + + @Deprecated + @Override + public void onBlockBreakStart(BlockState state, World world, BlockPos pos, PlayerEntity player) { + triggerLightning(state, world, pos); + } + + @Deprecated + @Override + public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { + return getBlockBreakingDelta(super.calcBlockBreakingDelta(state, player, world, pos), player); + } + + @Override + public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) { + if (!state.get(OPEN) && entity instanceof LivingEntity l && l.hurtTime == 0 && l.canTakeDamage()) { + triggerLightning(state, world, pos, l, true); + } + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/block/ZapAppleLeavesBlock.java b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapAppleLeavesBlock.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/block/ZapAppleLeavesBlock.java rename to src/main/java/com/minelittlepony/unicopia/block/zap/ZapAppleLeavesBlock.java index e94f3475..1fcfc3a6 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/ZapAppleLeavesBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapAppleLeavesBlock.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.block.zap; import com.minelittlepony.unicopia.server.world.ZapAppleStageStore; @@ -10,7 +10,7 @@ import net.minecraft.state.property.*; public class ZapAppleLeavesBlock extends BaseZapAppleLeavesBlock { public static final EnumProperty STAGE = EnumProperty.of("stage", ZapAppleStageStore.Stage.class); - ZapAppleLeavesBlock() { + public ZapAppleLeavesBlock() { setDefaultState(getDefaultState().with(STAGE, ZapAppleStageStore.Stage.GREENING)); } diff --git a/src/main/java/com/minelittlepony/unicopia/block/ZapAppleLeavesPlaceholderBlock.java b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapAppleLeavesPlaceholderBlock.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/block/ZapAppleLeavesPlaceholderBlock.java rename to src/main/java/com/minelittlepony/unicopia/block/zap/ZapAppleLeavesPlaceholderBlock.java index 40fa9fc2..181bfc88 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/ZapAppleLeavesPlaceholderBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapAppleLeavesPlaceholderBlock.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.block.zap; import com.minelittlepony.unicopia.server.world.ZapAppleStageStore; import com.minelittlepony.unicopia.server.world.ZapAppleStageStore.Stage; @@ -11,7 +11,7 @@ import net.minecraft.world.World; public class ZapAppleLeavesPlaceholderBlock extends AirBlock implements ZapStagedBlock { - ZapAppleLeavesPlaceholderBlock() { + public ZapAppleLeavesPlaceholderBlock() { super(Settings.create().replaceable().noCollision().dropsNothing().air()); } diff --git a/src/main/java/com/minelittlepony/unicopia/block/ZapAppleLogBlock.java b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapAppleLogBlock.java similarity index 64% rename from src/main/java/com/minelittlepony/unicopia/block/ZapAppleLogBlock.java rename to src/main/java/com/minelittlepony/unicopia/block/zap/ZapAppleLogBlock.java index 64aa32c4..fbe53ea9 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/ZapAppleLogBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapAppleLogBlock.java @@ -1,6 +1,4 @@ -package com.minelittlepony.unicopia.block; - -import com.minelittlepony.unicopia.entity.player.Pony; +package com.minelittlepony.unicopia.block.zap; import net.minecraft.block.*; import net.minecraft.block.enums.Instrument; @@ -13,12 +11,12 @@ import net.minecraft.util.math.*; import net.minecraft.world.BlockView; import net.minecraft.world.World; -public class ZapAppleLogBlock extends PillarBlock { - public static final BooleanProperty NATURAL = ZapBlock.NATURAL; +public class ZapAppleLogBlock extends PillarBlock implements ElectrifiedBlock { + public static final BooleanProperty NATURAL = BooleanProperty.of("natural"); - private final Block artifialModelBlock; + private final BlockState artifialModelBlock; - ZapAppleLogBlock(Block artifialModelBlock, MapColor topMapColor, MapColor sideMapColor) { + public ZapAppleLogBlock(BlockState artifialModelBlock, MapColor topMapColor, MapColor sideMapColor) { super(AbstractBlock.Settings.create().mapColor( state -> state.get(PillarBlock.AXIS) == Direction.Axis.Y ? topMapColor : sideMapColor ) @@ -38,28 +36,22 @@ public class ZapAppleLogBlock extends PillarBlock { @Override public BlockState getPlacementState(ItemPlacementContext ctx) { - return getDefaultState().with(NATURAL, false); + return super.getPlacementState(ctx).with(NATURAL, false); } @Deprecated @Override public void onBlockBreakStart(BlockState state, World world, BlockPos pos, PlayerEntity player) { - ZapBlock.triggerLightning(state, world, pos, player); + triggerLightning(state, world, pos); } @Deprecated @Override public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { if (!state.get(NATURAL)) { - return artifialModelBlock.calcBlockBreakingDelta(artifialModelBlock.getDefaultState(), player, world, pos); + return artifialModelBlock.calcBlockBreakingDelta(player, world, pos); } - float delta = super.calcBlockBreakingDelta(state, player, world, pos); - - if (Pony.of(player).getCompositeRace().canUseEarth()) { - delta *= 50; - } - - return MathHelper.clamp(delta, 0, 0.9F); + return getBlockBreakingDelta(super.calcBlockBreakingDelta(state, player, world, pos), player); } } diff --git a/src/main/java/com/minelittlepony/unicopia/block/zap/ZapBlock.java b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapBlock.java new file mode 100644 index 00000000..8208bfdc --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapBlock.java @@ -0,0 +1,25 @@ +package com.minelittlepony.unicopia.block.zap; + +import net.minecraft.block.*; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.math.*; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; + +public class ZapBlock extends Block implements ElectrifiedBlock { + public ZapBlock(Settings settings) { + super(settings); + } + + @Deprecated + @Override + public void onBlockBreakStart(BlockState state, World world, BlockPos pos, PlayerEntity player) { + triggerLightning(state, world, pos); + } + + @Deprecated + @Override + public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { + return getBlockBreakingDelta(super.calcBlockBreakingDelta(state, player, world, pos), player); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/block/zap/ZapSlabBlock.java b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapSlabBlock.java new file mode 100644 index 00000000..99a8f7d1 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapSlabBlock.java @@ -0,0 +1,26 @@ +package com.minelittlepony.unicopia.block.zap; + +import net.minecraft.block.BlockState; +import net.minecraft.block.SlabBlock; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; + +public class ZapSlabBlock extends SlabBlock implements ElectrifiedBlock { + public ZapSlabBlock(Settings settings) { + super(settings); + } + + @Deprecated + @Override + public void onBlockBreakStart(BlockState state, World world, BlockPos pos, PlayerEntity player) { + triggerLightning(state, world, pos); + } + + @Deprecated + @Override + public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { + return getBlockBreakingDelta(super.calcBlockBreakingDelta(state, player, world, pos), player); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/block/ZapStagedBlock.java b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapStagedBlock.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/block/ZapStagedBlock.java rename to src/main/java/com/minelittlepony/unicopia/block/zap/ZapStagedBlock.java index 5e3f41d4..72ce0d28 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/ZapStagedBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapStagedBlock.java @@ -1,5 +1,6 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.block.zap; +import com.minelittlepony.unicopia.block.UBlocks; import com.minelittlepony.unicopia.server.world.ZapAppleStageStore; import net.minecraft.block.Block; diff --git a/src/main/java/com/minelittlepony/unicopia/block/zap/ZapStairsBlock.java b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapStairsBlock.java new file mode 100644 index 00000000..8d13fadd --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/block/zap/ZapStairsBlock.java @@ -0,0 +1,22 @@ +package com.minelittlepony.unicopia.block.zap; + +import net.minecraft.block.BlockState; +import net.minecraft.block.StairsBlock; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.BlockView; + +public class ZapStairsBlock extends StairsBlock { + private final BlockState baseBlock; + + public ZapStairsBlock(BlockState baseBlockState, Settings settings) { + super(baseBlockState, settings); + this.baseBlock = baseBlockState; + } + + @Deprecated + @Override + public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { + return baseBlock.calcBlockBreakingDelta(player, world, pos); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/compat/emi/Main.java b/src/main/java/com/minelittlepony/unicopia/compat/emi/Main.java index d4e5c9ed..9523cce2 100644 --- a/src/main/java/com/minelittlepony/unicopia/compat/emi/Main.java +++ b/src/main/java/com/minelittlepony/unicopia/compat/emi/Main.java @@ -27,7 +27,6 @@ import dev.emi.emi.api.render.EmiTexture; import dev.emi.emi.api.stack.Comparison; import dev.emi.emi.api.stack.EmiStack; import dev.emi.emi.recipe.EmiStonecuttingRecipe; -import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; @@ -121,11 +120,11 @@ public class Main implements EmiPlugin { GROWING_CATEGORY, recipe.getId(), new Schematic.Builder() - .fill(0, 0, 0, 6, 0, 6, Block.getBlockFromItem(recipe.getCatalyst().getItem()).getDefaultState()) + .fill(0, 0, 0, 6, 0, 6, recipe.getCatalystState()) .set(3, 0, 3, Blocks.FARMLAND.getDefaultState()) - .set(3, 1, 3, Block.getBlockFromItem(recipe.getTargetAsItem().getItem()).getDefaultState()) + .set(3, 1, 3, recipe.getTargetState()) .build(), - List.of(EmiStack.of(recipe.getTargetAsItem()), EmiStack.of(recipe.getCatalyst(), TransformCropsRecipe.AREA)), + List.of(EmiStack.of(recipe.getTarget()), EmiStack.of(recipe.getCatalyst(), TransformCropsRecipe.AREA)), EmiStack.of(recipe.getOutput()), Unicopia.id("textures/gui/ability/grow.png") )); diff --git a/src/main/java/com/minelittlepony/unicopia/item/TransformCropsRecipe.java b/src/main/java/com/minelittlepony/unicopia/item/TransformCropsRecipe.java index 284665ce..edc9924a 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/TransformCropsRecipe.java +++ b/src/main/java/com/minelittlepony/unicopia/item/TransformCropsRecipe.java @@ -48,7 +48,15 @@ public class TransformCropsRecipe implements Recipe