mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-28 01:38:34 +01:00
Compare commits
No commits in common. "fb80bf33eff9669dbd3caadfa8e5bf1fc632eba1" and "4cc4b40c4b8416839037fed97cba2b8bd8547710" have entirely different histories.
fb80bf33ef
...
4cc4b40c4b
43 changed files with 286 additions and 648 deletions
|
@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx3G
|
||||||
org.gradle.daemon=false
|
org.gradle.daemon=false
|
||||||
# Actually Additions
|
# Actually Additions
|
||||||
|
|
||||||
mod_version=1.2.5
|
mod_version=1.2.4
|
||||||
|
|
||||||
# Forge
|
# Forge
|
||||||
game_version=1.20.4
|
game_version=1.20.4
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// 1.20.4 2024-03-11T21:40:12.7830455 Registries
|
// 1.20.4 2024-03-11T17:48:44.6414485 Registries
|
||||||
020d2b1f1c21d6c6663ef8126a52e2b9deb0e52e data/actuallyadditions/damage_type/atomicreconstructor.json
|
020d2b1f1c21d6c6663ef8126a52e2b9deb0e52e data/actuallyadditions/damage_type/atomicreconstructor.json
|
||||||
4ba41428fdcf03f52855029153722e22e8702823 data/actuallyadditions/neoforge/biome_modifier/add_black_quartz.json
|
4ba41428fdcf03f52855029153722e22e8702823 data/actuallyadditions/neoforge/biome_modifier/add_black_quartz.json
|
||||||
80765c24aa747df53139d14a9ac3293b4b3eab16 data/actuallyadditions/worldgen/configured_feature/ore_black_quartz.json
|
3c9f4fbfed04f0e75ea7b370aa2f8acc531a63bb data/actuallyadditions/worldgen/configured_feature/ore_black_quartz.json
|
||||||
efb41395b407edbd91712bcb63976de46fed5d04 data/actuallyadditions/worldgen/placed_feature/ore_black_quartz.json
|
fce2111f746f4c6ddef5444d84a5c2b574efaaa0 data/actuallyadditions/worldgen/placed_feature/ore_black_quartz.json
|
||||||
7cf126882346a296f045db75facf741c77b7d3b1 data/actuallyadditions/worldgen/processor_list/engineer_house.json
|
7cf126882346a296f045db75facf741c77b7d3b1 data/actuallyadditions/worldgen/processor_list/engineer_house.json
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
// 1.20.4 2024-03-11T20:19:22.9008098 Sound Definitions
|
// 1.20.4 2024-03-04T22:51:31.6174299 Sound Definitions
|
||||||
e7a33758b55803bd59c68b8024cb8484dd4f060f assets/actuallyadditions/sounds.json
|
5492914eb97f792a830608d663aaf3148987ed3e assets/actuallyadditions/sounds.json
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 1.20.4 2024-03-11T17:51:04.4103588 Recipes
|
// 1.20.4 2024-03-11T02:13:51.6169998 Recipes
|
||||||
4d3128b37a7153882a9324cda49b5069207561c5 data/actuallyadditions/recipes/atomic_reconstructor.json
|
4d3128b37a7153882a9324cda49b5069207561c5 data/actuallyadditions/recipes/atomic_reconstructor.json
|
||||||
b0367f5012651764931e8b8fd0c5bcca4e8614c0 data/actuallyadditions/recipes/battery_box.json
|
b0367f5012651764931e8b8fd0c5bcca4e8614c0 data/actuallyadditions/recipes/battery_box.json
|
||||||
7e05cd54092b998dfdbd2221235dd52576ec79eb data/actuallyadditions/recipes/black_quartz_block.json
|
7e05cd54092b998dfdbd2221235dd52576ec79eb data/actuallyadditions/recipes/black_quartz_block.json
|
||||||
|
@ -49,13 +49,7 @@ ff81da8a0f6632779414c0512100696a11771814 data/actuallyadditions/recipes/hopping_
|
||||||
4acb117a6727554073a78ed81bcd2b0b1af53bec data/actuallyadditions/recipes/laser_relay_item_advanced.json
|
4acb117a6727554073a78ed81bcd2b0b1af53bec data/actuallyadditions/recipes/laser_relay_item_advanced.json
|
||||||
2c37821d291542d4821842501e07bfad38181553 data/actuallyadditions/recipes/lava_factory_casing.json
|
2c37821d291542d4821842501e07bfad38181553 data/actuallyadditions/recipes/lava_factory_casing.json
|
||||||
76f9eb2b859198eec4c50d992c3715633d5109a8 data/actuallyadditions/recipes/lava_factory_controller.json
|
76f9eb2b859198eec4c50d992c3715633d5109a8 data/actuallyadditions/recipes/lava_factory_controller.json
|
||||||
1e3936f80be1540cd3d6ed570c1ed6381227db7d data/actuallyadditions/recipes/leaf_generator.json
|
|
||||||
73696fd4e851f440a9850485fc9ad03fc63442a9 data/actuallyadditions/recipes/oil_generator.json
|
73696fd4e851f440a9850485fc9ad03fc63442a9 data/actuallyadditions/recipes/oil_generator.json
|
||||||
afbee3f7074b7aa88d4bc8941d820d02b827da4b data/actuallyadditions/recipes/phantom_booster.json
|
|
||||||
f0a9c8a0de8fb884cd207c34c4a10e7a4a021153 data/actuallyadditions/recipes/phantom_energyface.json
|
|
||||||
472521d8bb5db8f9165ac642c3309d2d2b48f8e6 data/actuallyadditions/recipes/phantom_itemface.json
|
|
||||||
6d3aa070e0fccbb126c80323423c9482259dd6de data/actuallyadditions/recipes/phantom_liquiface.json
|
|
||||||
253e31ad471e2a8e20bfbe077826a8fac35fcc84 data/actuallyadditions/recipes/phantom_redstoneface.json
|
|
||||||
8c78ebb9351b98ffe368391a391b90385c0b8b7f data/actuallyadditions/recipes/placer.json
|
8c78ebb9351b98ffe368391a391b90385c0b8b7f data/actuallyadditions/recipes/placer.json
|
||||||
184acfb5fd3799b3fbe35150c67b6530581f8bf1 data/actuallyadditions/recipes/powered_furnace.json
|
184acfb5fd3799b3fbe35150c67b6530581f8bf1 data/actuallyadditions/recipes/powered_furnace.json
|
||||||
b81a706a5f635d8a63ffd3034c80838dc10699c9 data/actuallyadditions/recipes/ranged_collector.json
|
b81a706a5f635d8a63ffd3034c80838dc10699c9 data/actuallyadditions/recipes/ranged_collector.json
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
// 1.20.4 2024-03-11T20:41:48.609238 Tags for minecraft:point_of_interest_type mod id actuallyadditions
|
|
||||||
65352c4eaf105efa72687c568c2d5b5f5fd11996 data/minecraft/tags/point_of_interest_type/acquirable_job_site.json
|
|
|
@ -18,10 +18,5 @@
|
||||||
"sounds": [
|
"sounds": [
|
||||||
"actuallyadditions:reconstructor"
|
"actuallyadditions:reconstructor"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"villager.work_engineer": {
|
|
||||||
"sounds": [
|
|
||||||
"actuallyadditions:coffee_machine"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"category": "misc",
|
|
||||||
"key": {
|
|
||||||
"A": {
|
|
||||||
"item": "actuallyadditions:advanced_coil"
|
|
||||||
},
|
|
||||||
"C": {
|
|
||||||
"item": "actuallyadditions:enori_crystal"
|
|
||||||
},
|
|
||||||
"E": {
|
|
||||||
"item": "actuallyadditions:empowered_restonia_crystal_block"
|
|
||||||
},
|
|
||||||
"I": {
|
|
||||||
"item": "actuallyadditions:iron_casing"
|
|
||||||
},
|
|
||||||
"L": {
|
|
||||||
"tag": "minecraft:leaves"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pattern": [
|
|
||||||
"CIC",
|
|
||||||
"ELE",
|
|
||||||
"CAC"
|
|
||||||
],
|
|
||||||
"result": {
|
|
||||||
"item": "actuallyadditions:leaf_generator"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"category": "misc",
|
|
||||||
"key": {
|
|
||||||
"C": {
|
|
||||||
"item": "actuallyadditions:ender_casing"
|
|
||||||
},
|
|
||||||
"D": {
|
|
||||||
"item": "actuallyadditions:diamatine_crystal"
|
|
||||||
},
|
|
||||||
"R": {
|
|
||||||
"item": "actuallyadditions:restonia_crystal"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pattern": [
|
|
||||||
"RDR",
|
|
||||||
"DCD",
|
|
||||||
"RDR"
|
|
||||||
],
|
|
||||||
"result": {
|
|
||||||
"item": "actuallyadditions:phantom_booster"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"category": "misc",
|
|
||||||
"key": {
|
|
||||||
"I": {
|
|
||||||
"item": "actuallyadditions:phantom_itemface"
|
|
||||||
},
|
|
||||||
"R": {
|
|
||||||
"item": "actuallyadditions:empowered_restonia_crystal"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pattern": [
|
|
||||||
" R ",
|
|
||||||
"RIR",
|
|
||||||
" R "
|
|
||||||
],
|
|
||||||
"result": {
|
|
||||||
"item": "actuallyadditions:phantom_energyface"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"category": "misc",
|
|
||||||
"key": {
|
|
||||||
"A": {
|
|
||||||
"item": "actuallyadditions:advanced_coil"
|
|
||||||
},
|
|
||||||
"C": {
|
|
||||||
"tag": "forge:chests/wooden"
|
|
||||||
},
|
|
||||||
"D": {
|
|
||||||
"item": "actuallyadditions:empowered_diamatine_crystal"
|
|
||||||
},
|
|
||||||
"E": {
|
|
||||||
"item": "actuallyadditions:ender_casing"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pattern": [
|
|
||||||
" C ",
|
|
||||||
"DED",
|
|
||||||
" A "
|
|
||||||
],
|
|
||||||
"result": {
|
|
||||||
"item": "actuallyadditions:phantom_itemface"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"category": "misc",
|
|
||||||
"key": {
|
|
||||||
"B": {
|
|
||||||
"item": "minecraft:bucket"
|
|
||||||
},
|
|
||||||
"I": {
|
|
||||||
"item": "actuallyadditions:phantom_itemface"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pattern": [
|
|
||||||
"BIB"
|
|
||||||
],
|
|
||||||
"result": {
|
|
||||||
"item": "actuallyadditions:phantom_liquiface"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"category": "misc",
|
|
||||||
"key": {
|
|
||||||
"D": {
|
|
||||||
"tag": "forge:dusts/redstone"
|
|
||||||
},
|
|
||||||
"I": {
|
|
||||||
"item": "actuallyadditions:phantom_itemface"
|
|
||||||
},
|
|
||||||
"R": {
|
|
||||||
"item": "actuallyadditions:empowered_restonia_crystal"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pattern": [
|
|
||||||
"DRD",
|
|
||||||
"RIR",
|
|
||||||
"DRD"
|
|
||||||
],
|
|
||||||
"result": {
|
|
||||||
"item": "actuallyadditions:phantom_redstoneface"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -12,15 +12,6 @@
|
||||||
"predicate_type": "minecraft:tag_match",
|
"predicate_type": "minecraft:tag_match",
|
||||||
"tag": "minecraft:stone_ore_replaceables"
|
"tag": "minecraft:stone_ore_replaceables"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"state": {
|
|
||||||
"Name": "actuallyadditions:black_quartz_ore"
|
|
||||||
},
|
|
||||||
"target": {
|
|
||||||
"predicate_type": "minecraft:tag_match",
|
|
||||||
"tag": "minecraft:deepslate_ore_replaceables"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
"absolute": 45
|
"absolute": 45
|
||||||
},
|
},
|
||||||
"min_inclusive": {
|
"min_inclusive": {
|
||||||
"absolute": -25
|
"absolute": 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
"values": [
|
|
||||||
"actuallyadditions:engineer"
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -46,7 +46,6 @@ public class ActuallyAdditionsData {
|
||||||
generator.addProvider(true, new ItemRecipeGenerator(packOutput));
|
generator.addProvider(true, new ItemRecipeGenerator(packOutput));
|
||||||
generator.addProvider(true, generatorBlockTags);
|
generator.addProvider(true, generatorBlockTags);
|
||||||
generator.addProvider(true, new ItemTagsGenerator(packOutput, lookupProvider, generatorBlockTags, helper));
|
generator.addProvider(true, new ItemTagsGenerator(packOutput, lookupProvider, generatorBlockTags, helper));
|
||||||
generator.addProvider(true, new PoiTypeTagsGenerator(packOutput, lookupProvider, helper));
|
|
||||||
generator.addProvider(true, new DamageTypeTagsGenerator(packOutput, lookupProvider, helper));
|
generator.addProvider(true, new DamageTypeTagsGenerator(packOutput, lookupProvider, helper));
|
||||||
|
|
||||||
generator.addProvider(true, new BlockStateGenerator(packOutput, helper));
|
generator.addProvider(true, new BlockStateGenerator(packOutput, helper));
|
||||||
|
|
|
@ -399,55 +399,6 @@ public class BlockRecipeGenerator extends RecipeProvider {
|
||||||
.define('A', ActuallyItems.ADVANCED_COIL.get())
|
.define('A', ActuallyItems.ADVANCED_COIL.get())
|
||||||
.define('I', ActuallyBlocks.IRON_CASING.get())
|
.define('I', ActuallyBlocks.IRON_CASING.get())
|
||||||
.save(recipeOutput);
|
.save(recipeOutput);
|
||||||
|
|
||||||
// Leaf-eating Generator
|
|
||||||
Recipe.shaped(ActuallyBlocks.LEAF_GENERATOR.getItem())
|
|
||||||
.pattern("CIC", "ELE", "CAC")
|
|
||||||
.define('C', ActuallyItems.ENORI_CRYSTAL.get())
|
|
||||||
.define('I', ActuallyBlocks.IRON_CASING.get())
|
|
||||||
.define('E', ActuallyBlocks.EMPOWERED_RESTONIA_CRYSTAL.get())
|
|
||||||
.define('L', ItemTags.LEAVES)
|
|
||||||
.define('A', ActuallyItems.ADVANCED_COIL.get())
|
|
||||||
.save(recipeOutput);
|
|
||||||
|
|
||||||
// Phantom Itemface
|
|
||||||
Recipe.shaped(ActuallyBlocks.PHANTOM_ITEMFACE.getItem())
|
|
||||||
.pattern(" C ", "DED", " A ")
|
|
||||||
.define('C', Tags.Items.CHESTS_WOODEN)
|
|
||||||
.define('D', ActuallyItems.EMPOWERED_DIAMATINE_CRYSTAL)
|
|
||||||
.define('E', ActuallyBlocks.ENDER_CASING.get())
|
|
||||||
.define('A', ActuallyItems.ADVANCED_COIL.get())
|
|
||||||
.save(recipeOutput);
|
|
||||||
|
|
||||||
// Phantom Liquiface
|
|
||||||
Recipe.shaped(ActuallyBlocks.PHANTOM_LIQUIFACE.getItem())
|
|
||||||
.pattern("BIB")
|
|
||||||
.define('B', Items.BUCKET)
|
|
||||||
.define('I', ActuallyBlocks.PHANTOM_ITEMFACE.get())
|
|
||||||
.save(recipeOutput);
|
|
||||||
|
|
||||||
// Phantom Energyface
|
|
||||||
Recipe.shaped(ActuallyBlocks.PHANTOM_ENERGYFACE.getItem())
|
|
||||||
.pattern(" R ", "RIR", " R ")
|
|
||||||
.define('R', ActuallyItems.EMPOWERED_RESTONIA_CRYSTAL)
|
|
||||||
.define('I', ActuallyBlocks.PHANTOM_ITEMFACE.get())
|
|
||||||
.save(recipeOutput);
|
|
||||||
|
|
||||||
// Phantom Redstoneface
|
|
||||||
Recipe.shaped(ActuallyBlocks.PHANTOM_REDSTONEFACE.getItem())
|
|
||||||
.pattern("DRD", "RIR", "DRD")
|
|
||||||
.define('D', Tags.Items.DUSTS_REDSTONE)
|
|
||||||
.define('R', ActuallyItems.EMPOWERED_RESTONIA_CRYSTAL)
|
|
||||||
.define('I', ActuallyBlocks.PHANTOM_ITEMFACE.get())
|
|
||||||
.save(recipeOutput);
|
|
||||||
|
|
||||||
// Phantom Booster
|
|
||||||
Recipe.shaped(ActuallyBlocks.PHANTOM_BOOSTER.getItem())
|
|
||||||
.pattern("RDR", "DCD", "RDR")
|
|
||||||
.define('D', ActuallyItems.DIAMATINE_CRYSTAL)
|
|
||||||
.define('R', ActuallyItems.RESTONIA_CRYSTAL)
|
|
||||||
.define('C', ActuallyBlocks.ENDER_CASING.getItem())
|
|
||||||
.save(recipeOutput);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Recipe {
|
public static class Recipe {
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
package de.ellpeck.actuallyadditions.data;
|
|
||||||
|
|
||||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.gen.village.ActuallyPOITypes;
|
|
||||||
import net.minecraft.core.HolderLookup;
|
|
||||||
import net.minecraft.data.PackOutput;
|
|
||||||
import net.minecraft.data.tags.PoiTypeTagsProvider;
|
|
||||||
import net.minecraft.tags.PoiTypeTags;
|
|
||||||
import net.neoforged.neoforge.common.data.ExistingFileHelper;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
public class PoiTypeTagsGenerator extends PoiTypeTagsProvider {
|
|
||||||
public PoiTypeTagsGenerator(PackOutput output, CompletableFuture<HolderLookup.Provider> completableFuture, @Nullable ExistingFileHelper fileHelper) {
|
|
||||||
super(output, completableFuture, ActuallyAdditions.MODID, fileHelper);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addTags(HolderLookup.Provider pProvider) {
|
|
||||||
this.tag(PoiTypeTags.ACQUIRABLE_JOB_SITE)
|
|
||||||
.add(
|
|
||||||
ActuallyPOITypes.ENGINEER.getKey()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -19,6 +19,5 @@ public class SoundsGenerator extends SoundDefinitionsProvider {
|
||||||
add(AASounds.CRUSHER, definition().with(sound(new ResourceLocation(ActuallyAdditions.MODID, "crusher"))));
|
add(AASounds.CRUSHER, definition().with(sound(new ResourceLocation(ActuallyAdditions.MODID, "crusher"))));
|
||||||
add(AASounds.COFFEE_MACHINE, definition().with(sound(new ResourceLocation(ActuallyAdditions.MODID, "coffee_machine"))));
|
add(AASounds.COFFEE_MACHINE, definition().with(sound(new ResourceLocation(ActuallyAdditions.MODID, "coffee_machine"))));
|
||||||
add(AASounds.DUH_DUH_DUH_DUUUH, definition().with(sound(new ResourceLocation(ActuallyAdditions.MODID, "duh_duh_duh_duuuh"))));
|
add(AASounds.DUH_DUH_DUH_DUUUH, definition().with(sound(new ResourceLocation(ActuallyAdditions.MODID, "duh_duh_duh_duuuh"))));
|
||||||
add(AASounds.VILLAGER_WORK_ENGINEER, definition().with(sound(new ResourceLocation(ActuallyAdditions.MODID, "coffee_machine"))));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ public class AASounds {
|
||||||
public static DeferredHolder<SoundEvent, SoundEvent> CRUSHER = SOUNDS.register("crusher", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ActuallyAdditions.MODID, "crusher")));
|
public static DeferredHolder<SoundEvent, SoundEvent> CRUSHER = SOUNDS.register("crusher", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ActuallyAdditions.MODID, "crusher")));
|
||||||
public static DeferredHolder<SoundEvent, SoundEvent> COFFEE_MACHINE = SOUNDS.register("coffee_machine", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ActuallyAdditions.MODID, "coffee_machine")));
|
public static DeferredHolder<SoundEvent, SoundEvent> COFFEE_MACHINE = SOUNDS.register("coffee_machine", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ActuallyAdditions.MODID, "coffee_machine")));
|
||||||
public static DeferredHolder<SoundEvent, SoundEvent> DUH_DUH_DUH_DUUUH = SOUNDS.register("duh_duh_duh_duuuh", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ActuallyAdditions.MODID, "duh_duh_duh_duuuh")));
|
public static DeferredHolder<SoundEvent, SoundEvent> DUH_DUH_DUH_DUUUH = SOUNDS.register("duh_duh_duh_duuuh", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ActuallyAdditions.MODID, "duh_duh_duh_duuuh")));
|
||||||
public static DeferredHolder<SoundEvent, SoundEvent> VILLAGER_WORK_ENGINEER = SOUNDS.register("villager.work_engineer", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ActuallyAdditions.MODID, "villager.work_engineer")));
|
|
||||||
|
|
||||||
|
|
||||||
public static void init(IEventBus bus) {
|
public static void init(IEventBus bus) {
|
||||||
|
|
|
@ -28,9 +28,6 @@ import de.ellpeck.actuallyadditions.mod.event.CommonEvents;
|
||||||
import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
|
import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
|
||||||
import de.ellpeck.actuallyadditions.mod.gen.ActuallyVillages;
|
import de.ellpeck.actuallyadditions.mod.gen.ActuallyVillages;
|
||||||
import de.ellpeck.actuallyadditions.mod.gen.modifier.BoolConfigFeatureBiomeModifier;
|
import de.ellpeck.actuallyadditions.mod.gen.modifier.BoolConfigFeatureBiomeModifier;
|
||||||
import de.ellpeck.actuallyadditions.mod.gen.village.ActuallyPOITypes;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.gen.village.ActuallyVillagers;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.gen.village.InitVillager;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.ActuallyContainers;
|
import de.ellpeck.actuallyadditions.mod.inventory.ActuallyContainers;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
|
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemCoffee;
|
import de.ellpeck.actuallyadditions.mod.items.ItemCoffee;
|
||||||
|
@ -113,8 +110,6 @@ public class ActuallyAdditions {
|
||||||
ActuallyTabs.init(eventBus);
|
ActuallyTabs.init(eventBus);
|
||||||
ActuallyRecipes.init(eventBus);
|
ActuallyRecipes.init(eventBus);
|
||||||
AASounds.init(eventBus);
|
AASounds.init(eventBus);
|
||||||
ActuallyVillagers.init(eventBus);
|
|
||||||
ActuallyPOITypes.init(eventBus);
|
|
||||||
ActuallyAttachments.init(eventBus);
|
ActuallyAttachments.init(eventBus);
|
||||||
ActuallyContainers.CONTAINERS.register(eventBus);
|
ActuallyContainers.CONTAINERS.register(eventBus);
|
||||||
ENTITIES.register(eventBus);
|
ENTITIES.register(eventBus);
|
||||||
|
@ -126,7 +121,6 @@ public class ActuallyAdditions {
|
||||||
|
|
||||||
NeoForge.EVENT_BUS.addListener(this::serverStarted);
|
NeoForge.EVENT_BUS.addListener(this::serverStarted);
|
||||||
NeoForge.EVENT_BUS.addListener(this::serverStopped);
|
NeoForge.EVENT_BUS.addListener(this::serverStopped);
|
||||||
NeoForge.EVENT_BUS.addListener(InitVillager::setupTrades);
|
|
||||||
NeoForge.EVENT_BUS.register(new CommonEvents());
|
NeoForge.EVENT_BUS.register(new CommonEvents());
|
||||||
// NeoForge.EVENT_BUS.register(new DungeonLoot());
|
// NeoForge.EVENT_BUS.register(new DungeonLoot());
|
||||||
NeoForge.EVENT_BUS.addListener(ActuallyAdditions::reloadEvent);
|
NeoForge.EVENT_BUS.addListener(ActuallyAdditions::reloadEvent);
|
||||||
|
|
|
@ -48,6 +48,7 @@ import de.ellpeck.actuallyadditions.mod.tile.TileEntityLavaFactoryController;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityLeafGenerator;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityLeafGenerator;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityLongRangeBreaker;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityLongRangeBreaker;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityOilGenerator;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityOilGenerator;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomBooster;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomBreaker;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomBreaker;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomEnergyface;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomEnergyface;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomItemface;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomItemface;
|
||||||
|
@ -230,8 +231,8 @@ public final class ActuallyBlocks {
|
||||||
(b) -> new AABlockItem(b, defaultBlockItemProperties), TileEntityPhantomRedstoneface::new);
|
(b) -> new AABlockItem(b, defaultBlockItemProperties), TileEntityPhantomRedstoneface::new);
|
||||||
public static final AABlockReg<BlockPhantom, AABlockItem, TileEntityPhantomBreaker> PHANTOM_BREAKER = new AABlockReg<>("phantom_breaker", () -> new BlockPhantom(BlockPhantom.Type.BREAKER),
|
public static final AABlockReg<BlockPhantom, AABlockItem, TileEntityPhantomBreaker> PHANTOM_BREAKER = new AABlockReg<>("phantom_breaker", () -> new BlockPhantom(BlockPhantom.Type.BREAKER),
|
||||||
(b) -> new AABlockItem(b, defaultBlockItemProperties), TileEntityPhantomBreaker::new);
|
(b) -> new AABlockItem(b, defaultBlockItemProperties), TileEntityPhantomBreaker::new);
|
||||||
public static final AABlockReg<BlockPhantomBooster, AABlockItem, ?> PHANTOM_BOOSTER = new AABlockReg<>("phantom_booster", BlockPhantomBooster::new,
|
public static final AABlockReg<BlockPhantomBooster, AABlockItem, TileEntityPhantomBooster> PHANTOM_BOOSTER = new AABlockReg<>("phantom_booster", BlockPhantomBooster::new,
|
||||||
(b) -> new AABlockItem(b, defaultBlockItemProperties));
|
(b) -> new AABlockItem(b, defaultBlockItemProperties), TileEntityPhantomBooster::new);
|
||||||
|
|
||||||
// Misc Tiles
|
// Misc Tiles
|
||||||
public static final AABlockReg<BlockBatteryBox, AABlockItem, TileEntityBatteryBox> BATTERY_BOX = new AABlockReg<>("battery_box", BlockBatteryBox::new,
|
public static final AABlockReg<BlockBatteryBox, AABlockItem, TileEntityBatteryBox> BATTERY_BOX = new AABlockReg<>("battery_box", BlockBatteryBox::new,
|
||||||
|
@ -375,6 +376,7 @@ public final class ActuallyBlocks {
|
||||||
PHANTOM_ENERGYFACE.getTileEntityType(),
|
PHANTOM_ENERGYFACE.getTileEntityType(),
|
||||||
PHANTOM_REDSTONEFACE.getTileEntityType(),
|
PHANTOM_REDSTONEFACE.getTileEntityType(),
|
||||||
PHANTOM_BREAKER.getTileEntityType(),
|
PHANTOM_BREAKER.getTileEntityType(),
|
||||||
|
PHANTOM_BOOSTER.getTileEntityType(),
|
||||||
BATTERY_BOX.getTileEntityType(),
|
BATTERY_BOX.getTileEntityType(),
|
||||||
FIREWORK_BOX.getTileEntityType(),
|
FIREWORK_BOX.getTileEntityType(),
|
||||||
SHOCK_SUPPRESSOR.getTileEntityType(),
|
SHOCK_SUPPRESSOR.getTileEntityType(),
|
||||||
|
|
|
@ -30,6 +30,17 @@ public class BlockGreenhouseGlass extends BlockBase {
|
||||||
super(ActuallyBlocks.defaultPickProps(0.5F, 10.0F).sound(SoundType.GLASS).randomTicks());
|
super(ActuallyBlocks.defaultPickProps(0.5F, 10.0F).sound(SoundType.GLASS).randomTicks());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: [port] figure this out
|
||||||
|
// @Override
|
||||||
|
// @Deprecated
|
||||||
|
// @OnlyIn(Dist.CLIENT)
|
||||||
|
// public boolean shouldSideBeRendered(BlockState state, IBlockAccess world, BlockPos pos, Direction side) {
|
||||||
|
// BlockState otherState = world.getBlockState(pos.offset(side));
|
||||||
|
// Block block = otherState.getBlock();
|
||||||
|
//
|
||||||
|
// return state != otherState || block != this && super.shouldSideBeRendered(state, world, pos, side);
|
||||||
|
// }
|
||||||
@Override
|
@Override
|
||||||
public boolean skipRendering(BlockState state, BlockState adjacentState, Direction side) {
|
public boolean skipRendering(BlockState state, BlockState adjacentState, Direction side) {
|
||||||
return adjacentState.is(this) ? true : super.skipRendering(state, adjacentState, side);
|
return adjacentState.is(this) ? true : super.skipRendering(state, adjacentState, side);
|
||||||
|
|
|
@ -14,17 +14,19 @@ import com.mojang.blaze3d.platform.Window;
|
||||||
import de.ellpeck.actuallyadditions.api.tile.IPhantomTile;
|
import de.ellpeck.actuallyadditions.api.tile.IPhantomTile;
|
||||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||||
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase;
|
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.*;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomBreaker;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomEnergyface;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomItemface;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomLiquiface;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomPlacer;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomRedstoneface;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.Font;
|
|
||||||
import net.minecraft.client.gui.GuiGraphics;
|
import net.minecraft.client.gui.GuiGraphics;
|
||||||
import net.minecraft.client.resources.language.I18n;
|
import net.minecraft.client.resources.language.I18n;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.network.chat.Component;
|
|
||||||
import net.minecraft.network.chat.FormattedText;
|
|
||||||
import net.minecraft.util.FormattedCharSequence;
|
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResult;
|
import net.minecraft.world.InteractionResult;
|
||||||
|
@ -161,30 +163,20 @@ public class BlockPhantom extends BlockContainerBase implements IHudDisplay {
|
||||||
Block block = state.getBlock();
|
Block block = state.getBlock();
|
||||||
Item item = Item.byBlock(block);
|
Item item = Item.byBlock(block);
|
||||||
String name = item.getName(new ItemStack(block)).getString();
|
String name = item.getName(new ItemStack(block)).getString();
|
||||||
drawWordWrap(guiGraphics, minecraft.font, Component.translatable("tooltip.actuallyadditions.phantom.blockInfo.desc", name, phantom.getBoundPosition().getX(), phantom.getBoundPosition().getY(), phantom.getBoundPosition().getZ(), distance), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 - 30, 200, 0xFFFFFF, true);
|
StringUtil.drawSplitString(minecraft.font, StringUtil.localizeFormatted("tooltip." + ActuallyAdditions.MODID + ".phantom.blockInfo.desc", name, phantom.getBoundPosition().getX(), phantom.getBoundPosition().getY(), phantom.getBoundPosition().getZ(), distance), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 - 30, 200, 0xFFFFFF, true);
|
||||||
|
|
||||||
if (phantom.isBoundThingInRange()) {
|
if (phantom.isBoundThingInRange()) {
|
||||||
//StringUtil.drawSplitString(minecraft.font, ChatFormatting.DARK_GREEN + I18n.get("tooltip.actuallyadditions.phantom.connectedRange.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 25, 200, 0xFFFFFF, true);
|
StringUtil.drawSplitString(minecraft.font, ChatFormatting.DARK_GREEN + I18n.get("tooltip." + ActuallyAdditions.MODID + ".phantom.connectedRange.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 25, 200, 0xFFFFFF, true);
|
||||||
drawWordWrap(guiGraphics, minecraft.font, Component.translatable("tooltip.actuallyadditions.phantom.connectedRange.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 25, 200, 0xFFFFFF, true);
|
|
||||||
} else {
|
} else {
|
||||||
//StringUtil.drawSplitString(minecraft.font, ChatFormatting.DARK_RED + I18n.get("tooltip.actuallyadditions.phantom.connectedNoRange.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 25, 200, 0xFFFFFF, true);
|
StringUtil.drawSplitString(minecraft.font, ChatFormatting.DARK_RED + I18n.get("tooltip." + ActuallyAdditions.MODID + ".phantom.connectedNoRange.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 25, 200, 0xFFFFFF, true);
|
||||||
drawWordWrap(guiGraphics, minecraft.font, Component.translatable("tooltip.actuallyadditions.phantom.connectedNoRange.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 25, 200, 0xFFFFFF, true);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
guiGraphics.drawString(minecraft.font, ChatFormatting.RED + I18n.get("tooltip.actuallyadditions.phantom.notConnected.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 25, ChatFormatting.WHITE.getColor());
|
guiGraphics.drawString(minecraft.font, ChatFormatting.RED + I18n.get("tooltip." + ActuallyAdditions.MODID + ".phantom.notConnected.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 25, ChatFormatting.WHITE.getColor());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
|
||||||
public static void drawWordWrap(GuiGraphics gg, Font font, FormattedText text, int x, int y, int width, int color, boolean shadow) {
|
|
||||||
for (FormattedCharSequence line : font.split(text, width)) {
|
|
||||||
gg.drawString(font, line, x, y, color, shadow);
|
|
||||||
y += font.lineHeight;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum Type {
|
public enum Type {
|
||||||
ITEMFACE,
|
ITEMFACE,
|
||||||
PLACER,
|
PLACER,
|
||||||
|
|
|
@ -10,21 +10,33 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.blocks;
|
package de.ellpeck.actuallyadditions.mod.blocks;
|
||||||
|
|
||||||
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockBase;
|
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomBooster;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.world.level.BlockGetter;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntityTicker;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
|
|
||||||
public class BlockPhantomBooster extends BlockBase {
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
public class BlockPhantomBooster extends BlockContainerBase {
|
||||||
|
|
||||||
public BlockPhantomBooster() {
|
public BlockPhantomBooster() {
|
||||||
super(ActuallyBlocks.defaultPickProps());
|
super(ActuallyBlocks.defaultPickProps());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* @Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
|
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
|
||||||
return new TileEntityPhantomBooster(pos, state);
|
return new TileEntityPhantomBooster(pos, state);
|
||||||
}*/
|
}
|
||||||
|
|
||||||
/* @Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState blockState, BlockEntityType<T> entityType) {
|
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState blockState, BlockEntityType<T> entityType) {
|
||||||
return level.isClientSide? TileEntityPhantomBooster::clientTick : TileEntityPhantomBooster::serverTick;
|
return level.isClientSide? TileEntityPhantomBooster::clientTick : TileEntityPhantomBooster::serverTick;
|
||||||
|
@ -33,5 +45,5 @@ public class BlockPhantomBooster extends BlockBase {
|
||||||
@Override
|
@Override
|
||||||
public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
|
public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
|
||||||
return VoxelShapes.BOOSTER_SHAPE;
|
return VoxelShapes.BOOSTER_SHAPE;
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,9 +42,6 @@ public class CommonConfig {
|
||||||
public static ModConfigSpec.IntValue OIL_GENERATOR_TRANSFER;
|
public static ModConfigSpec.IntValue OIL_GENERATOR_TRANSFER;
|
||||||
public static ModConfigSpec.IntValue MINER_LENS_ENERGY;
|
public static ModConfigSpec.IntValue MINER_LENS_ENERGY;
|
||||||
public static ModConfigSpec.BooleanValue LASER_RELAY_LOSS;
|
public static ModConfigSpec.BooleanValue LASER_RELAY_LOSS;
|
||||||
public static ModConfigSpec.IntValue LEAF_GENERATOR_COOLDOWN;
|
|
||||||
public static ModConfigSpec.IntValue LEAF_GENERATOR_CF_PER_LEAF;
|
|
||||||
public static ModConfigSpec.IntValue LEAF_GENERATOR_AREA;
|
|
||||||
|
|
||||||
public static void build() {
|
public static void build() {
|
||||||
BUILDER.comment("Machine Settings").push("machineSettings");
|
BUILDER.comment("Machine Settings").push("machineSettings");
|
||||||
|
@ -54,9 +51,6 @@ public class CommonConfig {
|
||||||
OIL_GENERATOR_TRANSFER = BUILDER.comment("The amount of power the oil generator can transfer per tick.").defineInRange("oilGeneratorTransfer", 500, 100, Integer.MAX_VALUE);
|
OIL_GENERATOR_TRANSFER = BUILDER.comment("The amount of power the oil generator can transfer per tick.").defineInRange("oilGeneratorTransfer", 500, 100, Integer.MAX_VALUE);
|
||||||
MINER_LENS_ENERGY = BUILDER.comment("The energy use of the Atomic Reconstructor's Mining Lens.").defineInRange("minerLensEnergy", 60000, 1, Integer.MAX_VALUE);
|
MINER_LENS_ENERGY = BUILDER.comment("The energy use of the Atomic Reconstructor's Mining Lens.").defineInRange("minerLensEnergy", 60000, 1, Integer.MAX_VALUE);
|
||||||
LASER_RELAY_LOSS = BUILDER.comment("If Energy Laser Relays should have energy loss.").define("laserRelayLoss", true);
|
LASER_RELAY_LOSS = BUILDER.comment("If Energy Laser Relays should have energy loss.").define("laserRelayLoss", true);
|
||||||
LEAF_GENERATOR_COOLDOWN = BUILDER.comment("The cooldown between two generation cycles of the Leaf Generator, in ticks").defineInRange("leafGeneratorCooldown", 5, 1, Integer.MAX_VALUE);
|
|
||||||
LEAF_GENERATOR_CF_PER_LEAF = BUILDER.comment("The Leaf Generator's Energy Production in CF/Leaf").defineInRange("leafGeneratorCPPerLeaf", 300, 1, Integer.MAX_VALUE);
|
|
||||||
LEAF_GENERATOR_AREA = BUILDER.comment("The size of the Leaf Generator's harvesting area. Default is 7x7x7, must be an odd number.").defineInRange("leafGeneratorArea", 7, 1, Integer.MAX_VALUE);
|
|
||||||
|
|
||||||
BUILDER.pop();
|
BUILDER.pop();
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,14 +15,14 @@ import java.util.List;
|
||||||
|
|
||||||
public class ActuallyConfiguredFeatures {
|
public class ActuallyConfiguredFeatures {
|
||||||
public static final ResourceKey<ConfiguredFeature<?, ?>> ORE_BLACK_QUARTZ = FeatureUtils.createKey("actuallyadditions:ore_black_quartz");
|
public static final ResourceKey<ConfiguredFeature<?, ?>> ORE_BLACK_QUARTZ = FeatureUtils.createKey("actuallyadditions:ore_black_quartz");
|
||||||
|
// public static final ResourceKey<ConfiguredFeature<?, ?>> ORE_BLACK_QUARTZ_BURIED = FeatureUtils.createKey("actuallyadditions:ore_black_quartz_buried");
|
||||||
|
|
||||||
public static void bootstrap(BootstapContext<ConfiguredFeature<?, ?>> context) {
|
public static void bootstrap(BootstapContext<ConfiguredFeature<?, ?>> context) {
|
||||||
RuleTest stoneRuleTest = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES);
|
RuleTest stoneRuleTest = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES);
|
||||||
RuleTest deepslateRuleTest = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES);
|
|
||||||
List<OreConfiguration.TargetBlockState> list = List.of(
|
List<OreConfiguration.TargetBlockState> list = List.of(
|
||||||
OreConfiguration.target(stoneRuleTest, ActuallyBlocks.BLACK_QUARTZ_ORE.get().defaultBlockState()),
|
OreConfiguration.target(stoneRuleTest, ActuallyBlocks.BLACK_QUARTZ_ORE.get().defaultBlockState())
|
||||||
OreConfiguration.target(deepslateRuleTest, ActuallyBlocks.BLACK_QUARTZ_ORE.get().defaultBlockState())
|
|
||||||
);
|
);
|
||||||
FeatureUtils.register(context, ORE_BLACK_QUARTZ, Feature.ORE, new OreConfiguration(list, 6));
|
FeatureUtils.register(context, ORE_BLACK_QUARTZ, Feature.ORE, new OreConfiguration(list, 6));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,12 +18,13 @@ import java.util.List;
|
||||||
|
|
||||||
public class ActuallyPlacedFeatures {
|
public class ActuallyPlacedFeatures {
|
||||||
public static final ResourceKey<PlacedFeature> PLACED_ORE_BLACK_QUARTZ = PlacementUtils.createKey("actuallyadditions:ore_black_quartz");
|
public static final ResourceKey<PlacedFeature> PLACED_ORE_BLACK_QUARTZ = PlacementUtils.createKey("actuallyadditions:ore_black_quartz");
|
||||||
|
// public static final ResourceKey<PlacedFeature> PLACED_ORE_BLACK_QUARTZ_BURIED = PlacementUtils.createKey("actuallyadditions:ore_black_quartz_buried");
|
||||||
|
|
||||||
public static void bootstrap(BootstapContext<PlacedFeature> context) {
|
public static void bootstrap(BootstapContext<PlacedFeature> context) {
|
||||||
HolderGetter<ConfiguredFeature<?, ?>> holdergetter = context.lookup(Registries.CONFIGURED_FEATURE);
|
HolderGetter<ConfiguredFeature<?, ?>> holdergetter = context.lookup(Registries.CONFIGURED_FEATURE);
|
||||||
|
|
||||||
PlacementUtils.register(context, PLACED_ORE_BLACK_QUARTZ, holdergetter.getOrThrow(ActuallyConfiguredFeatures.ORE_BLACK_QUARTZ),
|
PlacementUtils.register(context, PLACED_ORE_BLACK_QUARTZ, holdergetter.getOrThrow(ActuallyConfiguredFeatures.ORE_BLACK_QUARTZ),
|
||||||
commonOrePlacement(8, HeightRangePlacement.triangle(VerticalAnchor.absolute(-25), VerticalAnchor.absolute(45))));
|
commonOrePlacement(8, HeightRangePlacement.triangle(VerticalAnchor.absolute(0), VerticalAnchor.absolute(45))));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<PlacementModifier> orePlacement(PlacementModifier modifier, PlacementModifier modifier1) {
|
private static List<PlacementModifier> orePlacement(PlacementModifier modifier, PlacementModifier modifier1) {
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
package de.ellpeck.actuallyadditions.mod.gen.village;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
|
|
||||||
import net.minecraft.core.registries.BuiltInRegistries;
|
|
||||||
import net.minecraft.world.entity.ai.village.poi.PoiType;
|
|
||||||
import net.neoforged.bus.api.IEventBus;
|
|
||||||
import net.neoforged.neoforge.registries.DeferredHolder;
|
|
||||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
|
||||||
|
|
||||||
public class ActuallyPOITypes {
|
|
||||||
public static final DeferredRegister<PoiType> POI_TYPES = DeferredRegister.create(BuiltInRegistries.POINT_OF_INTEREST_TYPE, ActuallyAdditions.MODID);
|
|
||||||
|
|
||||||
public static DeferredHolder<PoiType, PoiType> ENGINEER = POI_TYPES.register("engineer", () -> new PoiType(ImmutableSet.copyOf(ActuallyBlocks.COFFEE_MACHINE.get().getStateDefinition().getPossibleStates()), 1, 1));
|
|
||||||
|
|
||||||
public static void init(IEventBus bus) {
|
|
||||||
POI_TYPES.register(bus);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
package de.ellpeck.actuallyadditions.mod.gen.village;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.AASounds;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
|
||||||
import net.minecraft.core.registries.BuiltInRegistries;
|
|
||||||
import net.minecraft.world.entity.npc.VillagerProfession;
|
|
||||||
import net.neoforged.bus.api.IEventBus;
|
|
||||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
public class ActuallyVillagers {
|
|
||||||
public static final DeferredRegister<VillagerProfession> VILLAGER_PROFESSIONS = DeferredRegister.create(BuiltInRegistries.VILLAGER_PROFESSION, ActuallyAdditions.MODID);
|
|
||||||
public static final Supplier<VillagerProfession> ENGINEER = VILLAGER_PROFESSIONS.register("engineer", () -> new VillagerProfession("engineer", holder -> holder.value().equals(ActuallyPOITypes.ENGINEER.get()), holder -> holder.value().equals(ActuallyPOITypes.ENGINEER.get()), ImmutableSet.of(), ImmutableSet.of(), AASounds.VILLAGER_WORK_ENGINEER.get()));
|
|
||||||
|
|
||||||
public static void init(IEventBus bus) {
|
|
||||||
VILLAGER_PROFESSIONS.register(bus);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,86 +1,53 @@
|
||||||
/*
|
///*
|
||||||
* This file ("BasicTradeList.java") is part of the Actually Additions mod for Minecraft.
|
// * This file ("BasicTradeList.java") is part of the Actually Additions mod for Minecraft.
|
||||||
* It is created and owned by Ellpeck and distributed
|
// * It is created and owned by Ellpeck and distributed
|
||||||
* under the Actually Additions License to be found at
|
// * under the Actually Additions License to be found at
|
||||||
* http://ellpeck.de/actaddlicense
|
// * http://ellpeck.de/actaddlicense
|
||||||
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
// * View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
||||||
*
|
// *
|
||||||
* © 2015-2017 Ellpeck
|
// * © 2015-2017 Ellpeck
|
||||||
*/
|
// */
|
||||||
|
//
|
||||||
package de.ellpeck.actuallyadditions.mod.gen.village;
|
//package de.ellpeck.actuallyadditions.mod.gen.village;
|
||||||
|
//
|
||||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
//import java.util.Random;
|
||||||
import net.minecraft.util.RandomSource;
|
//
|
||||||
import net.minecraft.util.Tuple;
|
//import net.minecraft.entity.IMerchant;
|
||||||
import net.minecraft.world.entity.Entity;
|
//import net.minecraft.entity.passive.EntityVillager.ITradeList;
|
||||||
import net.minecraft.world.entity.npc.VillagerTrades;
|
//import net.minecraft.entity.passive.EntityVillager.PriceInfo;
|
||||||
import net.minecraft.world.item.ItemStack;
|
//import net.minecraft.init.Items;
|
||||||
import net.minecraft.world.item.Items;
|
//import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.world.item.trading.MerchantOffer;
|
//import net.minecraft.village.MerchantRecipe;
|
||||||
import org.jetbrains.annotations.Nullable;
|
//import net.minecraft.village.MerchantRecipeList;
|
||||||
|
//
|
||||||
public class BasicTradeList implements VillagerTrades.ItemListing {
|
//public class BasicTradeList implements ITradeList {
|
||||||
|
//
|
||||||
private final ItemStack input;
|
// private final ItemStack input;
|
||||||
private final PriceRange inputAmount;
|
// private final PriceInfo inputAmount;
|
||||||
private final ItemStack stack;
|
// private final ItemStack stack;
|
||||||
private final PriceRange outputAmount;
|
// private final PriceInfo outputAmount;
|
||||||
private int maxUses = 3;
|
//
|
||||||
private int villagerXp = 15;
|
// public BasicTradeList(ItemStack input, PriceInfo inputAmount, ItemStack stack, PriceInfo outputAmount) {
|
||||||
private float priceMultiplier = 0.05F;
|
// this.input = input;
|
||||||
|
// this.inputAmount = inputAmount;
|
||||||
public BasicTradeList(ItemStack input, PriceRange inputAmount, ItemStack stack, PriceRange outputAmount) {
|
// this.stack = stack;
|
||||||
this.input = input;
|
// this.outputAmount = outputAmount;
|
||||||
this.inputAmount = inputAmount;
|
// }
|
||||||
this.stack = stack;
|
//
|
||||||
this.outputAmount = outputAmount;
|
// public BasicTradeList(PriceInfo emeraldInput, ItemStack stack, PriceInfo outputAmount) {
|
||||||
}
|
// this(new ItemStack(Items.EMERALD), emeraldInput, stack, outputAmount);
|
||||||
|
// }
|
||||||
public BasicTradeList(PriceRange emeraldInput, ItemStack stack, PriceRange outputAmount) {
|
//
|
||||||
this(new ItemStack(Items.EMERALD), emeraldInput, stack, outputAmount);
|
// public BasicTradeList(ItemStack input, PriceInfo inputAmount, PriceInfo emeraldOutput) {
|
||||||
}
|
// this(input, inputAmount, new ItemStack(Items.EMERALD), emeraldOutput);
|
||||||
|
// }
|
||||||
public BasicTradeList(ItemStack input, PriceRange inputAmount, PriceRange emeraldOutput) {
|
//
|
||||||
this(input, inputAmount, new ItemStack(Items.EMERALD), emeraldOutput);
|
// @Override
|
||||||
}
|
// public void addMerchantRecipe(IMerchant merchant, MerchantRecipeList recipeList, Random random) {
|
||||||
|
// ItemStack in = this.input.copy();
|
||||||
public BasicTradeList withMaxUses(int maxUses) {
|
// in.setCount(this.inputAmount.getPrice(random));
|
||||||
this.maxUses = maxUses;
|
// ItemStack out = this.stack.copy();
|
||||||
return this;
|
// out.setCount(this.outputAmount.getPrice(random));
|
||||||
}
|
// recipeList.add(new MerchantRecipe(in, out));
|
||||||
|
// }
|
||||||
public BasicTradeList withVillagerXp(int villagerXp) {
|
//}
|
||||||
this.villagerXp = villagerXp;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BasicTradeList withPriceMultiplier(float priceMultiplier) {
|
|
||||||
this.priceMultiplier = priceMultiplier;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public MerchantOffer getOffer(Entity trader, RandomSource random) {
|
|
||||||
ItemStack in = this.input.copy();
|
|
||||||
in.setCount(this.inputAmount.getPrice(random));
|
|
||||||
ItemStack out = this.stack.copy();
|
|
||||||
out.setCount(this.outputAmount.getPrice(random));
|
|
||||||
return new MerchantOffer(in, out, this.maxUses, this.villagerXp, this.priceMultiplier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class PriceRange extends Tuple<Integer, Integer> {
|
|
||||||
public PriceRange(int min, int max) {
|
|
||||||
super(Integer.valueOf(min), Integer.valueOf(max));
|
|
||||||
|
|
||||||
if (max < min) {
|
|
||||||
ActuallyAdditions.LOGGER.warn("PriceRange({}, {}) invalid, {} smaller than {}", Integer.valueOf(min), Integer.valueOf(max), Integer.valueOf(max), Integer.valueOf(min));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getPrice(RandomSource rand) {
|
|
||||||
return this.getA() >= this.getB() ? this.getA() : this.getA() + rand.nextInt(this.getB() - this.getA() + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -10,28 +10,8 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.gen.village;
|
package de.ellpeck.actuallyadditions.mod.gen.village;
|
||||||
|
|
||||||
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
|
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
|
||||||
import net.minecraft.world.entity.npc.VillagerTrades;
|
|
||||||
import net.minecraft.world.item.ItemStack;
|
|
||||||
import net.neoforged.neoforge.event.village.VillagerTradesEvent;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
// TODO: [port] ADD BACK
|
// TODO: [port] ADD BACK
|
||||||
public final class InitVillager {
|
public final class InitVillager {
|
||||||
public static void setupTrades(VillagerTradesEvent event) {
|
|
||||||
if (event.getType() == ActuallyVillagers.ENGINEER.get()) {
|
|
||||||
Int2ObjectMap<List<VillagerTrades.ItemListing>> trades = event.getTrades();
|
|
||||||
|
|
||||||
trades.put(1, List.of(new BasicTradeList(new BasicTradeList.PriceRange(1, 2), new ItemStack(ActuallyBlocks.BLACK_QUARTZ_ORE.get()), new BasicTradeList.PriceRange(2, 3)), new BasicTradeList(new BasicTradeList.PriceRange(1, 2), new ItemStack(ActuallyItems.BLACK_QUARTZ.get()), new BasicTradeList.PriceRange(6, 8)), new BasicTradeList(new BasicTradeList.PriceRange(1, 3), new ItemStack(ActuallyItems.LASER_WRENCH.get()), new BasicTradeList.PriceRange(1, 1))));
|
|
||||||
trades.put(2, List.of(new BasicTradeList(new ItemStack(ActuallyItems.COFFEE_BEANS.get()), new BasicTradeList.PriceRange(20, 30), new BasicTradeList.PriceRange(1, 2)), new BasicTradeList(new BasicTradeList.PriceRange(3, 5), new ItemStack(ActuallyBlocks.ITEM_INTERFACE.get()), new BasicTradeList.PriceRange(1, 1)), new BasicTradeList(new BasicTradeList.PriceRange(10, 20), new ItemStack(ActuallyBlocks.LASER_RELAY.get()), new BasicTradeList.PriceRange(1, 2))));
|
|
||||||
trades.put(3, List.of(new BasicTradeList(new ItemStack(ActuallyBlocks.TINY_TORCH.get()), new BasicTradeList.PriceRange(30, 40), new BasicTradeList.PriceRange(1, 2)), new BasicTradeList(new BasicTradeList.PriceRange(1, 2), new ItemStack(ActuallyBlocks.WOOD_CASING.get()), new BasicTradeList.PriceRange(1, 2))));
|
|
||||||
trades.put(4, List.of(new BasicTradeList(new BasicTradeList.PriceRange(3, 5), new ItemStack(ActuallyBlocks.IRON_CASING.get()), new BasicTradeList.PriceRange(1, 2)), new BasicTradeList(new ItemStack(ActuallyBlocks.EMPOWERER.get()), new BasicTradeList.PriceRange(1, 1), new BasicTradeList.PriceRange(15, 20)), new BasicTradeList(new BasicTradeList.PriceRange(30, 40), new ItemStack(ActuallyBlocks.LASER_RELAY_EXTREME.get()), new BasicTradeList.PriceRange(1, 1))));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// public static VillagerProfession jamProfession;
|
// public static VillagerProfession jamProfession;
|
||||||
// public static VillagerProfession engineerProfession;
|
// public static VillagerProfession engineerProfession;
|
||||||
|
|
|
@ -17,7 +17,6 @@ import net.minecraft.world.InteractionResult;
|
||||||
import net.minecraft.world.InteractionResultHolder;
|
import net.minecraft.world.InteractionResultHolder;
|
||||||
import net.minecraft.world.SimpleMenuProvider;
|
import net.minecraft.world.SimpleMenuProvider;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.inventory.ContainerLevelAccess;
|
|
||||||
import net.minecraft.world.inventory.CraftingMenu;
|
import net.minecraft.world.inventory.CraftingMenu;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
@ -35,12 +34,7 @@ public class ItemCrafterOnAStick extends ItemBase {
|
||||||
@Override
|
@Override
|
||||||
public InteractionResultHolder<ItemStack> use(Level world, @Nonnull Player player, @Nonnull InteractionHand hand) {
|
public InteractionResultHolder<ItemStack> use(Level world, @Nonnull Player player, @Nonnull InteractionHand hand) {
|
||||||
if (!world.isClientSide) {
|
if (!world.isClientSide) {
|
||||||
player.openMenu(new SimpleMenuProvider((windowId, playerInventory, playerEntity) -> new CraftingMenu(windowId, playerInventory, ContainerLevelAccess.create(world, player.blockPosition())){
|
player.openMenu(new SimpleMenuProvider((windowId, playerInventory, playerEntity) -> new CraftingMenu(windowId, playerInventory), CONTAINER_TITLE));
|
||||||
@Override
|
|
||||||
public boolean stillValid(Player playerIn) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}, CONTAINER_TITLE));
|
|
||||||
}
|
}
|
||||||
return new InteractionResultHolder<>(InteractionResult.SUCCESS, player.getItemInHand(hand));
|
return new InteractionResultHolder<>(InteractionResult.SUCCESS, player.getItemInHand(hand));
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items;
|
||||||
import de.ellpeck.actuallyadditions.mod.config.CommonConfig;
|
import de.ellpeck.actuallyadditions.mod.config.CommonConfig;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
|
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.Util;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
|
@ -26,16 +27,14 @@ import net.minecraft.world.entity.item.ItemEntity;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Items;
|
import net.minecraft.world.item.Items;
|
||||||
import net.minecraft.world.level.ClipContext;
|
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||||
import net.minecraft.world.level.material.Fluids;
|
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.HitResult;
|
import net.minecraft.world.phys.HitResult;
|
||||||
import net.neoforged.bus.api.SubscribeEvent;
|
import net.neoforged.bus.api.SubscribeEvent;
|
||||||
import net.neoforged.neoforge.common.NeoForge;
|
|
||||||
import net.neoforged.neoforge.event.EventHooks;
|
import net.neoforged.neoforge.event.EventHooks;
|
||||||
import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
|
import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
|
||||||
|
|
||||||
|
@ -43,26 +42,28 @@ public class ItemWaterBowl extends ItemBase {
|
||||||
|
|
||||||
public ItemWaterBowl() {
|
public ItemWaterBowl() {
|
||||||
super(ActuallyItems.defaultProps().stacksTo(1));
|
super(ActuallyItems.defaultProps().stacksTo(1));
|
||||||
NeoForge.EVENT_BUS.register(this);
|
//MinecraftForge.EVENT_BUS.register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onPlayerInteractEvent(PlayerInteractEvent.RightClickItem event) {
|
public void onPlayerInteractEvent(PlayerInteractEvent.RightClickItem event) {
|
||||||
if (event.getLevel() != null && CommonConfig.Other.WATER_BOWL.get()) {
|
if (event.getLevel() != null) {
|
||||||
if (!event.getItemStack().isEmpty() && event.getItemStack().is(Items.BOWL)) {
|
if (CommonConfig.Other.WATER_BOWL.get()) {
|
||||||
BlockHitResult trace = getPlayerPOVHitResult(
|
if (!event.getItemStack().isEmpty() && event.getItemStack().getItem() == Items.BOWL) {
|
||||||
event.getLevel(), event.getEntity(), ClipContext.Fluid.SOURCE_ONLY //Using pick will also return flowing water
|
HitResult rayTrace = event.getEntity().pick(Util.getReachDistance(event.getEntity()), 1f, true);
|
||||||
);
|
if (rayTrace.getType() != HitResult.Type.BLOCK) {
|
||||||
if (trace.getType() != HitResult.Type.BLOCK) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BlockHitResult trace = (BlockHitResult) rayTrace;
|
||||||
InteractionResultHolder<ItemStack> result = EventHooks.onBucketUse(event.getEntity(), event.getLevel(), event.getItemStack(), trace);
|
InteractionResultHolder<ItemStack> result = EventHooks.onBucketUse(event.getEntity(), event.getLevel(), event.getItemStack(), trace);
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
if (event.getEntity().mayUseItemAt(trace.getBlockPos().relative(trace.getDirection()), trace.getDirection(), event.getItemStack())) {
|
if (event.getEntity().mayUseItemAt(trace.getBlockPos().relative(trace.getDirection()), trace.getDirection(), event.getItemStack())) {
|
||||||
BlockState state = event.getLevel().getBlockState(trace.getBlockPos());
|
BlockState state = event.getLevel().getBlockState(trace.getBlockPos());
|
||||||
|
Block block = state.getBlock();
|
||||||
|
|
||||||
if (state.getFluidState().is(Fluids.WATER) && state.getValue(BlockStateProperties.LEVEL) == 0) {
|
// TODO: Validate fluid check
|
||||||
|
if ((block == Blocks.WATER) && state.getValue(BlockStateProperties.LEVEL) == 0) {
|
||||||
event.getEntity().playSound(SoundEvents.BUCKET_FILL, 1.0F, 1.0F);
|
event.getEntity().playSound(SoundEvents.BUCKET_FILL, 1.0F, 1.0F);
|
||||||
|
|
||||||
if (!event.getLevel().isClientSide) {
|
if (!event.getLevel().isClientSide) {
|
||||||
|
@ -84,6 +85,7 @@ public class ItemWaterBowl extends ItemBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InteractionResultHolder<ItemStack> use(Level world, Player player, InteractionHand hand) {
|
public InteractionResultHolder<ItemStack> use(Level world, Player player, InteractionHand hand) {
|
||||||
|
|
|
@ -10,10 +10,6 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.particle;
|
package de.ellpeck.actuallyadditions.mod.particle;
|
||||||
|
|
||||||
import com.mojang.blaze3d.platform.GlStateManager;
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
|
||||||
import com.mojang.blaze3d.vertex.BufferBuilder;
|
|
||||||
import com.mojang.blaze3d.vertex.Tesselator;
|
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
|
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
|
||||||
import net.minecraft.client.Camera;
|
import net.minecraft.client.Camera;
|
||||||
|
@ -22,35 +18,9 @@ import net.minecraft.client.particle.Particle;
|
||||||
import net.minecraft.client.particle.ParticleProvider;
|
import net.minecraft.client.particle.ParticleProvider;
|
||||||
import net.minecraft.client.particle.ParticleRenderType;
|
import net.minecraft.client.particle.ParticleRenderType;
|
||||||
import net.minecraft.client.particle.SpriteSet;
|
import net.minecraft.client.particle.SpriteSet;
|
||||||
import net.minecraft.client.renderer.texture.TextureManager;
|
|
||||||
import net.minecraft.core.particles.ParticleOptions;
|
import net.minecraft.core.particles.ParticleOptions;
|
||||||
import net.minecraft.util.FastColor;
|
|
||||||
|
|
||||||
public class ParticleBeam extends Particle {
|
public class ParticleBeam extends Particle {
|
||||||
public static final ParticleRenderType LASER_RENDER = new ParticleRenderType() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void begin(BufferBuilder buffer, TextureManager textureManager) {
|
|
||||||
RenderSystem.disableCull();
|
|
||||||
RenderSystem.enableBlend();
|
|
||||||
RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.SRC_ALPHA);
|
|
||||||
RenderSystem.enableDepthTest();
|
|
||||||
RenderSystem.depthFunc(515);
|
|
||||||
RenderSystem.depthMask(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void end(Tesselator tesselator) {
|
|
||||||
RenderSystem.enableCull();
|
|
||||||
RenderSystem.disableBlend();
|
|
||||||
RenderSystem.defaultBlendFunc();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "actuallyadditions:laser_particle";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private final double endX;
|
private final double endX;
|
||||||
private final double endY;
|
private final double endY;
|
||||||
|
@ -74,15 +44,15 @@ public class ParticleBeam extends Particle {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(VertexConsumer buffer, Camera camera, float partialTicks) {
|
public void render(VertexConsumer buffer, Camera renderInfo, float partialTicks) {
|
||||||
float ageRatio = (float) this.age / (float) this.lifetime;
|
float ageRatio = (float) this.age / (float) this.lifetime;
|
||||||
float currAlpha = this.alpha - ageRatio * this.alpha;
|
float currAlpha = this.alpha - ageRatio * this.alpha;
|
||||||
AssetUtil.renderLaserParticle(buffer, camera, this.x + 0.5, this.y + 0.5, this.z + 0.5, this.endX + 0.5, this.endY + 0.5, this.endZ + 0.5, (float) this.rotationTime, currAlpha, this.size, this.color);
|
AssetUtil.renderLaser(this.x + 0.5, this.y + 0.5, this.z + 0.5, this.endX + 0.5, this.endY + 0.5, this.endZ + 0.5, this.rotationTime, currAlpha, this.size, this.color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ParticleRenderType getRenderType() {
|
public ParticleRenderType getRenderType() {
|
||||||
return LASER_RENDER;
|
return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -101,17 +71,5 @@ public class ParticleBeam extends Particle {
|
||||||
int maxAge, double rotationTime, float size) {
|
int maxAge, double rotationTime, float size) {
|
||||||
return new BeamParticleData(endX, endY, endZ, color, alpha, maxAge, rotationTime, size);
|
return new BeamParticleData(endX, endY, endZ, color, alpha, maxAge, rotationTime, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ParticleOptions createData(double endX, double endY, double endZ, int color, float alpha,
|
|
||||||
int maxAge, double rotationTime, float size) {
|
|
||||||
return new BeamParticleData(endX, endY, endZ, colorFromInt(color), alpha, maxAge, rotationTime, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static float[] colorFromInt(int color) {
|
|
||||||
float red = (float)(FastColor.ARGB32.red(color) / 255.0);
|
|
||||||
float green = (float)(FastColor.ARGB32.green(color) / 255.0);
|
|
||||||
float blue = (float)(FastColor.ARGB32.blue(color) / 255.0);
|
|
||||||
return new float[] {red, green, blue};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,11 @@
|
||||||
package de.ellpeck.actuallyadditions.mod.tile;
|
package de.ellpeck.actuallyadditions.mod.tile;
|
||||||
|
|
||||||
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
|
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
|
||||||
import de.ellpeck.actuallyadditions.mod.config.CommonConfig;
|
import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntValues;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
|
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.tags.BlockTags;
|
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
|
@ -25,9 +24,9 @@ import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.neoforged.neoforge.energy.IEnergyStorage;
|
import net.neoforged.neoforge.energy.IEnergyStorage;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class TileEntityLeafGenerator extends TileEntityBase implements ISharingEnergyProvider, IEnergyDisplay {
|
public class TileEntityLeafGenerator extends TileEntityBase implements ISharingEnergyProvider, IEnergyDisplay {
|
||||||
|
|
||||||
|
@ -63,19 +62,25 @@ public class TileEntityLeafGenerator extends TileEntityBase implements ISharingE
|
||||||
|
|
||||||
if (!tile.isRedstonePowered) {
|
if (!tile.isRedstonePowered) {
|
||||||
|
|
||||||
if (tile.nextUseCounter >= CommonConfig.Machines.LEAF_GENERATOR_COOLDOWN.get()) {
|
if (tile.nextUseCounter >= ConfigIntValues.LEAF_GENERATOR_COOLDOWN.getValue()) {
|
||||||
tile.nextUseCounter = 0;
|
tile.nextUseCounter = 0;
|
||||||
|
|
||||||
int energyProduced = CommonConfig.Machines.LEAF_GENERATOR_CF_PER_LEAF.get();
|
int energyProduced = ConfigIntValues.LEAF_GENERATOR_CF_PER_LEAF.getValue();
|
||||||
if (energyProduced > 0 && energyProduced <= tile.storage.getMaxEnergyStored() - tile.storage.getEnergyStored()) {
|
if (energyProduced > 0 && energyProduced <= tile.storage.getMaxEnergyStored() - tile.storage.getEnergyStored()) {
|
||||||
int range = CommonConfig.Machines.LEAF_GENERATOR_AREA.get();
|
List<BlockPos> breakPositions = new ArrayList<>();
|
||||||
List<BlockPos> breakPositions = BlockPos.betweenClosedStream(
|
|
||||||
pos.offset(-range, -range, -range),
|
int range = ConfigIntValues.LEAF_GENERATOR_AREA.getValue();
|
||||||
pos.offset(range, range, range)).map(BlockPos::immutable).collect(Collectors.toList());
|
for (int reachX = -range; reachX < range + 1; reachX++) {
|
||||||
breakPositions.removeIf(blockPos -> {
|
for (int reachZ = -range; reachZ < range + 1; reachZ++) {
|
||||||
BlockState offsetState = level.getBlockState(blockPos);
|
for (int reachY = -range; reachY < range + 1; reachY++) {
|
||||||
return !(offsetState.getBlock() instanceof LeavesBlock || offsetState.is(BlockTags.LEAVES));
|
BlockPos offsetPos = pos.offset(reachX, reachY, reachZ);
|
||||||
});
|
Block block = level.getBlockState(offsetPos).getBlock();
|
||||||
|
if (block instanceof LeavesBlock) { // TODO: [port] validate tile is a good way of checking if something is a leaf
|
||||||
|
breakPositions.add(offsetPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!breakPositions.isEmpty()) {
|
if (!breakPositions.isEmpty()) {
|
||||||
Collections.shuffle(breakPositions);
|
Collections.shuffle(breakPositions);
|
||||||
|
|
|
@ -6,8 +6,7 @@
|
||||||
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
||||||
*
|
*
|
||||||
* © 2015-2017 Ellpeck
|
* © 2015-2017 Ellpeck
|
||||||
*//*
|
*/
|
||||||
|
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.tile;
|
package de.ellpeck.actuallyadditions.mod.tile;
|
||||||
|
|
||||||
|
@ -35,4 +34,3 @@ public class TileEntityPhantomBooster extends TileEntityBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
|
@ -16,14 +16,12 @@ import de.ellpeck.actuallyadditions.mod.blocks.BlockPhantom;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.neoforged.api.distmarker.Dist;
|
import net.neoforged.api.distmarker.Dist;
|
||||||
import net.neoforged.api.distmarker.OnlyIn;
|
import net.neoforged.api.distmarker.OnlyIn;
|
||||||
import net.neoforged.neoforge.capabilities.ICapabilityInvalidationListener;
|
|
||||||
|
|
||||||
public abstract class TileEntityPhantomface extends TileEntityInventoryBase implements IPhantomTile {
|
public abstract class TileEntityPhantomface extends TileEntityInventoryBase implements IPhantomTile {
|
||||||
public static final int RANGE = 16;
|
public static final int RANGE = 16;
|
||||||
|
@ -34,7 +32,6 @@ public abstract class TileEntityPhantomface extends TileEntityInventoryBase impl
|
||||||
private BlockPos boundPosBefore;
|
private BlockPos boundPosBefore;
|
||||||
private Block boundBlockBefore;
|
private Block boundBlockBefore;
|
||||||
private int lastStrength;
|
private int lastStrength;
|
||||||
private CapListener capListener = new CapListener(this);
|
|
||||||
|
|
||||||
public TileEntityPhantomface(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
public TileEntityPhantomface(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||||
super(type, pos, state, 0);
|
super(type, pos, state, 0);
|
||||||
|
@ -51,7 +48,6 @@ public abstract class TileEntityPhantomface extends TileEntityInventoryBase impl
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return newRange;
|
return newRange;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,13 +90,6 @@ public abstract class TileEntityPhantomface extends TileEntityInventoryBase impl
|
||||||
|
|
||||||
if (this.doesNeedUpdateSend()) {
|
if (this.doesNeedUpdateSend()) {
|
||||||
this.onUpdateSent();
|
this.onUpdateSent();
|
||||||
|
|
||||||
if (level instanceof ServerLevel serverLevel) {
|
|
||||||
capListener.disable();
|
|
||||||
capListener = new CapListener(this);
|
|
||||||
if (hasBoundPosition())
|
|
||||||
serverLevel.registerCapabilityListener(boundPosition, capListener);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int strength = this.getComparatorStrength();
|
int strength = this.getComparatorStrength();
|
||||||
|
@ -133,6 +122,7 @@ public abstract class TileEntityPhantomface extends TileEntityInventoryBase impl
|
||||||
if (this.boundPosition != null) {
|
if (this.boundPosition != null) {
|
||||||
this.level.updateNeighborsAt(this.worldPosition, this.level.getBlockState(this.boundPosition).getBlock());
|
this.level.updateNeighborsAt(this.worldPosition, this.level.getBlockState(this.boundPosition).getBlock());
|
||||||
}
|
}
|
||||||
|
|
||||||
this.sendUpdate();
|
this.sendUpdate();
|
||||||
this.setChanged();
|
this.setChanged();
|
||||||
}
|
}
|
||||||
|
@ -201,25 +191,4 @@ public abstract class TileEntityPhantomface extends TileEntityInventoryBase impl
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CapListener implements ICapabilityInvalidationListener {
|
|
||||||
private boolean valid = true;
|
|
||||||
private final TileEntityPhantomface tile;
|
|
||||||
|
|
||||||
public CapListener(TileEntityPhantomface tile) {
|
|
||||||
this.tile = tile;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void disable() {
|
|
||||||
valid = false;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public boolean onInvalidate() {
|
|
||||||
if (valid && !tile.isRemoved()) {
|
|
||||||
tile.invalidateCapabilities();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,25 +10,22 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.util;
|
package de.ellpeck.actuallyadditions.mod.util;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
|
import com.mojang.blaze3d.vertex.BufferBuilder;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.Tesselator;
|
import com.mojang.blaze3d.vertex.Tesselator;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
|
||||||
import com.mojang.math.Axis;
|
import com.mojang.math.Axis;
|
||||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||||
import de.ellpeck.actuallyadditions.mod.blocks.render.RenderTypes;
|
import de.ellpeck.actuallyadditions.mod.blocks.render.RenderTypes;
|
||||||
import de.ellpeck.actuallyadditions.mod.network.PacketHandler;
|
import de.ellpeck.actuallyadditions.mod.network.PacketHandler;
|
||||||
import de.ellpeck.actuallyadditions.mod.network.PacketServerToClient;
|
import de.ellpeck.actuallyadditions.mod.network.PacketServerToClient;
|
||||||
import de.ellpeck.actuallyadditions.mod.particle.ParticleBeam;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityAtomicReconstructor;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityAtomicReconstructor;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
|
||||||
import net.minecraft.client.Camera;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.Font;
|
import net.minecraft.client.gui.Font;
|
||||||
import net.minecraft.client.gui.GuiGraphics;
|
import net.minecraft.client.gui.GuiGraphics;
|
||||||
import net.minecraft.client.renderer.GameRenderer;
|
|
||||||
import net.minecraft.client.renderer.LightTexture;
|
import net.minecraft.client.renderer.LightTexture;
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.entity.ItemRenderer;
|
import net.minecraft.client.renderer.entity.ItemRenderer;
|
||||||
|
@ -245,13 +242,14 @@ public final class AssetUtil {
|
||||||
public static void spawnLaserWithTimeClient(double startX, double startY, double startZ, double endX, double endY, double endZ, int color, int maxAge, double rotationTime, float size, float alpha) {
|
public static void spawnLaserWithTimeClient(double startX, double startY, double startZ, double endX, double endY, double endZ, int color, int maxAge, double rotationTime, float size, float alpha) {
|
||||||
Minecraft mc = Minecraft.getInstance();
|
Minecraft mc = Minecraft.getInstance();
|
||||||
BlockEntity tile = mc.level.getBlockEntity(BlockPos.containing(startX, startY, startZ));
|
BlockEntity tile = mc.level.getBlockEntity(BlockPos.containing(startX, startY, startZ));
|
||||||
if (tile instanceof TileEntityAtomicReconstructor) {
|
if(tile instanceof TileEntityAtomicReconstructor)
|
||||||
((TileEntityAtomicReconstructor) tile).resetBeam(maxAge, color);
|
((TileEntityAtomicReconstructor) tile).resetBeam(maxAge, color);
|
||||||
} else {
|
|
||||||
if (mc.player != null && mc.player.distanceToSqr(startX, startY, startZ) <= 64 || mc.player.distanceToSqr(endX, endY, endZ) <= 64) {
|
|
||||||
mc.level.addParticle(ParticleBeam.Factory.createData(endX, endY, endZ, color, alpha, maxAge, rotationTime, size), startX, startY, startZ, 0, 0, 0);
|
/* if (mc.player.distanceToSqr(startX, startY, startZ) <= 64 || mc.player.distanceToSqr(endX, endY, endZ) <= 64) {
|
||||||
}
|
Particle fx = new ParticleBeam(mc.level, startX, startY, startZ, endX, endY, endZ, color, maxAge, rotationTime, size, alpha);
|
||||||
}
|
mc.level.addParticle((IParticleData) fx, startX, startY, startZ, 0, 0, 0);
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
/* @OnlyIn(Dist.CLIENT)
|
/* @OnlyIn(Dist.CLIENT)
|
||||||
public static void renderLaser(MatrixStack matrixStack, IRenderTypeBuffer buffer, float x, float y, float z, float tx, float ty, float tz, float rotation, int color, float beamWidth) {
|
public static void renderLaser(MatrixStack matrixStack, IRenderTypeBuffer buffer, float x, float y, float z, float tx, float ty, float tz, float rotation, int color, float beamWidth) {
|
||||||
|
@ -334,10 +332,11 @@ public final class AssetUtil {
|
||||||
//Thanks to feldim2425 for this.
|
//Thanks to feldim2425 for this.
|
||||||
//I can't do rendering code. Ever.
|
//I can't do rendering code. Ever.
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
public static void renderLaserParticle(VertexConsumer builder, Camera camera, double firstX, double firstY, double firstZ, double secondX, double secondY, double secondZ, float rotationTime, float a, float beamWidth, float[] color) {
|
public static void renderLaser(double firstX, double firstY, double firstZ, double secondX, double secondY, double secondZ, double rotationTime, float alpha, double beamWidth, float[] color) {
|
||||||
|
Tesselator tessy = Tesselator.getInstance();
|
||||||
|
BufferBuilder render = tessy.getBuilder();
|
||||||
Level world = Minecraft.getInstance().level;
|
Level world = Minecraft.getInstance().level;
|
||||||
|
|
||||||
Vec3 cam = camera.getPosition();
|
|
||||||
float r = color[0];
|
float r = color[0];
|
||||||
float g = color[1];
|
float g = color[1];
|
||||||
float b = color[2];
|
float b = color[2];
|
||||||
|
@ -346,60 +345,107 @@ public final class AssetUtil {
|
||||||
Vec3 vec2 = new Vec3(secondX, secondY, secondZ);
|
Vec3 vec2 = new Vec3(secondX, secondY, secondZ);
|
||||||
Vec3 combinedVec = vec2.subtract(vec1);
|
Vec3 combinedVec = vec2.subtract(vec1);
|
||||||
|
|
||||||
int lightmap = LightTexture.pack(MAX_LIGHT_X, MAX_LIGHT_Y);
|
double rot = rotationTime > 0
|
||||||
|
? 360D * (world.getGameTime() % rotationTime / rotationTime)
|
||||||
|
: 0;
|
||||||
|
double pitch = Math.atan2(combinedVec.y, Math.sqrt(combinedVec.x * combinedVec.x + combinedVec.z * combinedVec.z));
|
||||||
|
double yaw = Math.atan2(-combinedVec.z, combinedVec.x);
|
||||||
|
|
||||||
double roll = rotationTime > 0 ? 360D * (world.getGameTime() % rotationTime / rotationTime) : 0;
|
double length = combinedVec.length();
|
||||||
double pitch = Math.toDegrees(Math.atan2(combinedVec.y, Math.sqrt(combinedVec.x * combinedVec.x + combinedVec.z * combinedVec.z)));
|
|
||||||
double yaw = Math.toDegrees(Math.atan2(-combinedVec.z, combinedVec.x)) - 90;
|
|
||||||
|
|
||||||
float length = (float) combinedVec.length();
|
// GlStateManager._pushMatrix();
|
||||||
|
|
||||||
PoseStack matrixStack = new PoseStack();
|
/* GlStateManager._disableLighting();
|
||||||
matrixStack.pushPose();
|
GlStateManager._enableBlend();
|
||||||
|
GlStateManager._blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE);
|
||||||
|
int func = GL11.glGetInteger(GL11.GL_ALPHA_TEST_FUNC);
|
||||||
|
float ref = GL11.glGetFloat(GL11.GL_ALPHA_TEST_REF);
|
||||||
|
GlStateManager._alphaFunc(GL11.GL_ALWAYS, 0);
|
||||||
|
GlStateManager.translate(firstX - TileEntityRendererDispatcher.staticPlayerX, firstY - TileEntityRendererDispatcher.staticPlayerY, firstZ - TileEntityRendererDispatcher.staticPlayerZ);
|
||||||
|
GlStateManager.rotate((float) (180 * yaw / Math.PI), 0, 1, 0);
|
||||||
|
GlStateManager.rotate((float) (180 * pitch / Math.PI), 0, 0, 1);
|
||||||
|
GlStateManager.rotate((float) rot, 1, 0, 0);*/
|
||||||
|
|
||||||
matrixStack.translate(firstX - cam.x, firstY - cam.y, firstZ - cam.z);
|
/*if(r != r2 || g != g2 || b != b2){
|
||||||
|
render.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR);
|
||||||
|
Minecraft.getInstance().renderEngine.bindTexture(ClientUtil.LIGHT_BEAM_GRADIENT);
|
||||||
|
|
||||||
matrixStack.mulPose(Axis.YP.rotationDegrees((float)yaw));
|
render.pos(length, -beamWidth, beamWidth).tex(0, 0).color(r, g, b, alpha).endVertex();
|
||||||
matrixStack.mulPose(Axis.XP.rotationDegrees((float)pitch));
|
render.pos(length, beamWidth, beamWidth).tex(0, 1).color(r, g, b, alpha).endVertex();
|
||||||
matrixStack.mulPose(Axis.ZP.rotationDegrees((float)roll));
|
render.pos(0, beamWidth, beamWidth).tex(1, 1).color(r, g, b, alpha).endVertex();
|
||||||
|
render.pos(0, -beamWidth, beamWidth).tex(1, 0).color(r, g, b, alpha).endVertex();
|
||||||
|
|
||||||
Matrix4f matrix = matrixStack.last().pose();
|
render.pos(length, -beamWidth, beamWidth).tex(1, 0).color(r2, g2, b2, alpha).endVertex();
|
||||||
|
render.pos(length, beamWidth, beamWidth).tex(1, 1).color(r2, g2, b2, alpha).endVertex();
|
||||||
|
render.pos(0, beamWidth, beamWidth).tex(0, 1).color(r2, g2, b2, alpha).endVertex();
|
||||||
|
render.pos(0, -beamWidth, beamWidth).tex(0, 0).color(r2, g2, b2, alpha).endVertex();
|
||||||
|
|
||||||
RenderSystem.setShader(GameRenderer::getPositionColorLightmapShader);
|
render.pos(length, beamWidth, -beamWidth).tex(0, 0).color(r, g, b, alpha).endVertex();
|
||||||
Tesselator.getInstance().getBuilder().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR_LIGHTMAP);
|
render.pos(length, -beamWidth, -beamWidth).tex(0, 1).color(r, g, b, alpha).endVertex();
|
||||||
|
render.pos(0, -beamWidth, -beamWidth).tex(1, 1).color(r, g, b, alpha).endVertex();
|
||||||
|
render.pos(0, beamWidth, -beamWidth).tex(1, 0).color(r, g, b, alpha).endVertex();
|
||||||
|
|
||||||
TextureAtlasSprite sprite = Minecraft.getInstance().getTextureAtlas(TextureAtlas.LOCATION_BLOCKS).apply(FORGE_WHITE);
|
render.pos(length, beamWidth, -beamWidth).tex(1, 0).color(r2, g2, b2, alpha).endVertex();
|
||||||
float minU = sprite.getU0();
|
render.pos(length, -beamWidth, -beamWidth).tex(1, 1).color(r2, g2, b2, alpha).endVertex();
|
||||||
float maxU = sprite.getU1();
|
render.pos(0, -beamWidth, -beamWidth).tex(0, 1).color(r2, g2, b2, alpha).endVertex();
|
||||||
float minV = sprite.getV0();
|
render.pos(0, beamWidth, -beamWidth).tex(0, 0).color(r2, g2, b2, alpha).endVertex();
|
||||||
float maxV = sprite.getV1();
|
|
||||||
|
|
||||||
//Draw laser tube faces
|
render.pos(length, beamWidth, beamWidth).tex(0, 0).color(r, g, b, alpha).endVertex();
|
||||||
for (int i = 1; i < 4; i++) {
|
render.pos(length, beamWidth, -beamWidth).tex(0, 1).color(r, g, b, alpha).endVertex();
|
||||||
float width = beamWidth * (i / 4.0f);
|
render.pos(0, beamWidth, -beamWidth).tex(1, 1).color(r, g, b, alpha).endVertex();
|
||||||
//top
|
render.pos(0, beamWidth, beamWidth).tex(1, 0).color(r, g, b, alpha).endVertex();
|
||||||
builder.vertex(matrix, -width, width, 0.0f).color(r, g, b, a).uv(minU, maxV).uv2(lightmap).endVertex();
|
|
||||||
builder.vertex(matrix, width, width, 0.0f).color(r, g, b, a).uv(maxU, maxV).uv2(lightmap).endVertex();
|
render.pos(length, beamWidth, beamWidth).tex(1, 0).color(r2, g2, b2, alpha).endVertex();
|
||||||
builder.vertex(matrix, width, width, -length).color(r, g, b, a).uv(maxU, minV).uv2(lightmap).endVertex();
|
render.pos(length, beamWidth, -beamWidth).tex(1, 1).color(r2, g2, b2, alpha).endVertex();
|
||||||
builder.vertex(matrix, -width, width, -length).color(r, g, b, a).uv(minU, minV).uv2(lightmap).endVertex();
|
render.pos(0, beamWidth, -beamWidth).tex(0, 1).color(r2, g2, b2, alpha).endVertex();
|
||||||
//bottom
|
render.pos(0, beamWidth, beamWidth).tex(0, 0).color(r2, g2, b2, alpha).endVertex();
|
||||||
builder.vertex(matrix, -width, -width, 0.0f).color(r, g, b, a).uv(minU, maxV).uv2(lightmap).endVertex();
|
|
||||||
builder.vertex(matrix, -width, -width, -length).color(r, g, b, a).uv(minU, minV).uv2(lightmap).endVertex();
|
render.pos(length, -beamWidth, -beamWidth).tex(0, 0).color(r, g, b, alpha).endVertex();
|
||||||
builder.vertex(matrix, width, -width, -length).color(r, g, b, a).uv(maxU, minV).uv2(lightmap).endVertex();
|
render.pos(length, -beamWidth, beamWidth).tex(0, 1).color(r, g, b, alpha).endVertex();
|
||||||
builder.vertex(matrix, width, -width, 0.0f).color(r, g, b, a).uv(maxU, maxV).uv2(lightmap).endVertex();
|
render.pos(0, -beamWidth, beamWidth).tex(1, 1).color(r, g, b, alpha).endVertex();
|
||||||
//left
|
render.pos(0, -beamWidth, -beamWidth).tex(1, 0).color(r, g, b, alpha).endVertex();
|
||||||
builder.vertex(matrix, -width, width, 0.0f).color(r, g, b, a).uv(maxU, maxV).uv2(lightmap).endVertex();
|
|
||||||
builder.vertex(matrix, -width, -width, 0.0f).color(r, g, b, a).uv(maxU, maxV).uv2(lightmap).endVertex();
|
render.pos(length, -beamWidth, -beamWidth).tex(1, 0).color(r2, g2, b2, alpha).endVertex();
|
||||||
builder.vertex(matrix, -width, -width, -length).color(r, g, b, a).uv(minU, minV).uv2(lightmap).endVertex();
|
render.pos(length, -beamWidth, beamWidth).tex(1, 1).color(r2, g2, b2, alpha).endVertex();
|
||||||
builder.vertex(matrix, -width, width, -length).color(r, g, b, a).uv(minU, minV).uv2(lightmap).endVertex();
|
render.pos(0, -beamWidth, beamWidth).tex(0, 1).color(r2, g2, b2, alpha).endVertex();
|
||||||
//right
|
render.pos(0, -beamWidth, -beamWidth).tex(0, 0).color(r2, g2, b2, alpha).endVertex();
|
||||||
builder.vertex(matrix, width, width, 0.0f).color(r, g, b, a).uv(maxU, maxV).uv2(lightmap).endVertex();
|
tessy.draw();
|
||||||
builder.vertex(matrix, width, -width, 0.0f).color(r, g, b, a).uv(maxU, maxV).uv2(lightmap).endVertex();
|
|
||||||
builder.vertex(matrix, width, -width, -length).color(r, g, b, a).uv(minU, minV).uv2(lightmap).endVertex();
|
|
||||||
builder.vertex(matrix, width, width, -length).color(r, g, b, a).uv(minU, minV).uv2(lightmap).endVertex();
|
|
||||||
}
|
}
|
||||||
matrixStack.popPose();
|
else{*/
|
||||||
Tesselator.getInstance().end();
|
//GlStateManager.disableTexture2D();
|
||||||
|
//render.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_LMAP_COLOR);
|
||||||
|
for (double i = 0; i < 4; i++) {
|
||||||
|
double width = beamWidth * (i / 4.0);
|
||||||
|
render.vertex(length, width, width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(0, width, width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(0, -width, width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(length, -width, width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
|
||||||
|
render.vertex(length, -width, -width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(0, -width, -width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(0, width, -width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(length, width, -width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
|
||||||
|
render.vertex(length, width, -width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(0, width, -width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(0, width, width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(length, width, width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
|
||||||
|
render.vertex(length, -width, width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(0, -width, width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(0, -width, -width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
render.vertex(length, -width, -width).uv(0, 0).uv2(MAX_LIGHT_X, MAX_LIGHT_Y).color(r, g, b, alpha).endVertex();
|
||||||
|
}
|
||||||
|
tessy.end();
|
||||||
|
|
||||||
|
//GlStateManager.enableTexture2D();
|
||||||
|
//}
|
||||||
|
|
||||||
|
//GlStateManager._alphaFunc(func, ref);
|
||||||
|
//GlStateManager._blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA);
|
||||||
|
GlStateManager._disableBlend();
|
||||||
|
// GlStateManager._enableLighting();
|
||||||
|
// GlStateManager._popMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
|
|
@ -29,7 +29,6 @@ public final class StringUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Move to official
|
// TODO: Move to official
|
||||||
@Deprecated
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
public static void drawSplitString(Font renderer, String strg, int x, int y, int width, int color, boolean shadow) {
|
public static void drawSplitString(Font renderer, String strg, int x, int y, int width, int color, boolean shadow) {
|
||||||
// ResourcePackList <- holds the correct way
|
// ResourcePackList <- holds the correct way
|
||||||
|
|
|
@ -6,5 +6,3 @@ public net.minecraft.world.item.crafting.ShapedRecipe pattern
|
||||||
public net.minecraft.world.inventory.InventoryMenu TEXTURE_EMPTY_SLOTS
|
public net.minecraft.world.inventory.InventoryMenu TEXTURE_EMPTY_SLOTS
|
||||||
public net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool templates
|
public net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool templates
|
||||||
public-f net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool rawTemplates
|
public-f net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool rawTemplates
|
||||||
public net.minecraft.world.entity.npc.VillagerTrades$ItemsForEmeralds
|
|
||||||
public net.minecraft.world.entity.npc.VillagerTrades$EmeraldForItems
|
|
|
@ -26,7 +26,7 @@
|
||||||
"_comment": "Entities",
|
"_comment": "Entities",
|
||||||
"entity.Villager.actuallyadditions.jammer": "Jam Guy",
|
"entity.Villager.actuallyadditions.jammer": "Jam Guy",
|
||||||
"entity.Villager.actuallyadditions.crystallizer": "Crystallizer",
|
"entity.Villager.actuallyadditions.crystallizer": "Crystallizer",
|
||||||
"entity.minecraft.villager.actuallyadditions.engineer": "Engineer",
|
"entity.Villager.actuallyadditions.engineer": "Engineer",
|
||||||
"_comment": "Banners",
|
"_comment": "Banners",
|
||||||
"item.banner.actuallyadditionsBook.black": "Black Actually Additions Manual Pattern",
|
"item.banner.actuallyadditionsBook.black": "Black Actually Additions Manual Pattern",
|
||||||
"item.banner.actuallyadditionsBook.red": "Red Actually Additions Manual Pattern",
|
"item.banner.actuallyadditionsBook.red": "Red Actually Additions Manual Pattern",
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
"death.actuallyadditions.atomicreconstructor.4": "%s shouldn't have ate that Reconstructor!",
|
"death.actuallyadditions.atomicreconstructor.4": "%s shouldn't have ate that Reconstructor!",
|
||||||
"death.actuallyadditions.atomicreconstructor.5": "%s should have used some re-construction foam.",
|
"death.actuallyadditions.atomicreconstructor.5": "%s should have used some re-construction foam.",
|
||||||
"_comment": "Blocks",
|
"_comment": "Blocks",
|
||||||
"block.actuallyadditions.black_quartz_ore": "Black Quartz Ore",
|
"block.actuallyadditions.black_quartz_ore": "Black Quartz Ore (wip)",
|
||||||
"block.actuallyadditions.black_quartz_block": "Block of Black Quartz",
|
"block.actuallyadditions.black_quartz_block": "Block of Black Quartz",
|
||||||
"block.actuallyadditions.chiseled_black_quartz_block": "Chiseled Black Quartz",
|
"block.actuallyadditions.chiseled_black_quartz_block": "Chiseled Black Quartz",
|
||||||
"block.actuallyadditions.black_quartz_pillar_block": "Pillar of Black Quartz",
|
"block.actuallyadditions.black_quartz_pillar_block": "Pillar of Black Quartz",
|
||||||
|
@ -112,8 +112,8 @@
|
||||||
"block.actuallyadditions.fishing_net": "Fishing Net (wip)",
|
"block.actuallyadditions.fishing_net": "Fishing Net (wip)",
|
||||||
"block.actuallyadditions.heat_collector": "Heat Collector (wip)",
|
"block.actuallyadditions.heat_collector": "Heat Collector (wip)",
|
||||||
"block.actuallyadditions.item_repairer": "Item Repairer (wip)",
|
"block.actuallyadditions.item_repairer": "Item Repairer (wip)",
|
||||||
"block.actuallyadditions.wood_casing": "Wood Casing",
|
"block.actuallyadditions.wood_casing": "Wood Casing (wip)",
|
||||||
"block.actuallyadditions.greenhouse_glass": "Greenhouse Glass",
|
"block.actuallyadditions.greenhouse_glass": "Greenhouse Glass (wip)",
|
||||||
"block.actuallyadditions.energizer": "Energizer",
|
"block.actuallyadditions.energizer": "Energizer",
|
||||||
"block.actuallyadditions.enervator": "Enervator",
|
"block.actuallyadditions.enervator": "Enervator",
|
||||||
"block.actuallyadditions.rice": "Rice Plant",
|
"block.actuallyadditions.rice": "Rice Plant",
|
||||||
|
@ -135,18 +135,18 @@
|
||||||
"block.actuallyadditions.lamp_pink": "Pink Lamp",
|
"block.actuallyadditions.lamp_pink": "Pink Lamp",
|
||||||
"block.actuallyadditions.lamp_cyan": "Cyan Lamp",
|
"block.actuallyadditions.lamp_cyan": "Cyan Lamp",
|
||||||
"block.actuallyadditions.lamp_purple": "Purple Lamp",
|
"block.actuallyadditions.lamp_purple": "Purple Lamp",
|
||||||
"block.actuallyadditions.phantom_itemface": "Phantom Itemface",
|
"block.actuallyadditions.phantom_itemface": "Phantom Itemface (wip)",
|
||||||
"block.actuallyadditions.player_interface": "Player Interface (wip)",
|
"block.actuallyadditions.player_interface": "Player Interface (wip)",
|
||||||
"block.actuallyadditions.phantom_energyface": "Phantom Energyface",
|
"block.actuallyadditions.phantom_energyface": "Phantom Energyface (wip)",
|
||||||
"block.actuallyadditions.phantom_redstoneface": "Phantom Redstoneface",
|
"block.actuallyadditions.phantom_redstoneface": "Phantom Redstoneface (wip)",
|
||||||
"block.actuallyadditions.phantom_liquiface": "Phantom Liquiface",
|
"block.actuallyadditions.phantom_liquiface": "Phantom Liquiface (wip)",
|
||||||
"block.actuallyadditions.phantom_placer": "Phantom Placer (wip)",
|
"block.actuallyadditions.phantom_placer": "Phantom Placer (wip)",
|
||||||
"block.actuallyadditions.phantom_breaker": "Phantom Breaker (wip)",
|
"block.actuallyadditions.phantom_breaker": "Phantom Breaker (wip)",
|
||||||
"block.actuallyadditions.lava_factory_controller": "Lava Factory Controller",
|
"block.actuallyadditions.lava_factory_controller": "Lava Factory Controller",
|
||||||
"block.actuallyadditions.lava_factory_casing": "Lava Casing",
|
"block.actuallyadditions.lava_factory_casing": "Lava Casing",
|
||||||
"block.actuallyadditions.fluid_placer": "Fluid Placer",
|
"block.actuallyadditions.fluid_placer": "Fluid Placer",
|
||||||
"block.actuallyadditions.fluid_collector": "Fluid Collector",
|
"block.actuallyadditions.fluid_collector": "Fluid Collector",
|
||||||
"block.actuallyadditions.phantom_booster": "Phantom Booster",
|
"block.actuallyadditions.phantom_booster": "Phantom Booster (wip)",
|
||||||
"block.actuallyadditions.coffee": "Coffee Plant",
|
"block.actuallyadditions.coffee": "Coffee Plant",
|
||||||
"block.actuallyadditions.ethetic_green_block": "Ethetic Green Quartz",
|
"block.actuallyadditions.ethetic_green_block": "Ethetic Green Quartz",
|
||||||
"block.actuallyadditions.ethetic_white_block": "Ethetic Quartz",
|
"block.actuallyadditions.ethetic_white_block": "Ethetic Quartz",
|
||||||
|
@ -170,7 +170,7 @@
|
||||||
"block.actuallyadditions.flax": "Flax Plant",
|
"block.actuallyadditions.flax": "Flax Plant",
|
||||||
"block.actuallyadditions.coffee_machine": "Coffee Maker",
|
"block.actuallyadditions.coffee_machine": "Coffee Maker",
|
||||||
"block.actuallyadditions.xp_solidifier": "Experience Solidifier",
|
"block.actuallyadditions.xp_solidifier": "Experience Solidifier",
|
||||||
"block.actuallyadditions.leaf_generator": "Leaf-Eating Generator",
|
"block.actuallyadditions.leaf_generator": "Leaf-Eating Generator (wip)",
|
||||||
"block.actuallyadditions.long_range_breaker": "Long-Range Breaker (wip)",
|
"block.actuallyadditions.long_range_breaker": "Long-Range Breaker (wip)",
|
||||||
"block.actuallyadditions.ranged_collector": "Ranged Collector",
|
"block.actuallyadditions.ranged_collector": "Ranged Collector",
|
||||||
"block.actuallyadditions.laser_relay": "Energy Laser Relay (wip)",
|
"block.actuallyadditions.laser_relay": "Energy Laser Relay (wip)",
|
||||||
|
@ -299,11 +299,11 @@
|
||||||
"item.actuallyadditions.gold_aiot": "Golden AIOT (wip)",
|
"item.actuallyadditions.gold_aiot": "Golden AIOT (wip)",
|
||||||
"item.actuallyadditions.diamond_aiot": "Diamond AIOT (wip)",
|
"item.actuallyadditions.diamond_aiot": "Diamond AIOT (wip)",
|
||||||
"item.actuallyadditions.netherite_aiot": "Netherite AIOT (wip)",
|
"item.actuallyadditions.netherite_aiot": "Netherite AIOT (wip)",
|
||||||
"item.actuallyadditions.phantom_connector": "Phantom Connector",
|
"item.actuallyadditions.phantom_connector": "Phantom Connector (wip)",
|
||||||
"item.actuallyadditions.empty_cup": "Empty Cup",
|
"item.actuallyadditions.empty_cup": "Empty Cup",
|
||||||
"item.actuallyadditions.coffee_cup": "Cup with Coffee",
|
"item.actuallyadditions.coffee_cup": "Cup with Coffee",
|
||||||
"item.actuallyadditions.coffee_seeds": "Coffee Seeds",
|
"item.actuallyadditions.coffee_seeds": "Coffee Seeds",
|
||||||
"item.actuallyadditions.coffee_beans": "Coffee Beans",
|
"item.actuallyadditions.coffee_beans": "Coffee Beans (wip)",
|
||||||
"item.actuallyadditions.canola_seeds": "Canola Seeds",
|
"item.actuallyadditions.canola_seeds": "Canola Seeds",
|
||||||
"item.actuallyadditions.canola": "Canola",
|
"item.actuallyadditions.canola": "Canola",
|
||||||
"item.actuallyadditions.resonant_rice": "Resonant Rice",
|
"item.actuallyadditions.resonant_rice": "Resonant Rice",
|
||||||
|
@ -328,7 +328,7 @@
|
||||||
"item.actuallyadditions.advanced_coil": "Advanced Coil",
|
"item.actuallyadditions.advanced_coil": "Advanced Coil",
|
||||||
"item.actuallyadditions.potion_ring": "Ring of (wip)",
|
"item.actuallyadditions.potion_ring": "Ring of (wip)",
|
||||||
"item.actuallyadditions.potion_ring_advanced": "Advanced Ring of (wip)",
|
"item.actuallyadditions.potion_ring_advanced": "Advanced Ring of (wip)",
|
||||||
"item.actuallyadditions.solidified_experience": "Solidified Experience",
|
"item.actuallyadditions.solidified_experience": "Solidified Experience (wip)",
|
||||||
"item.actuallyadditions.dust_iron": "Crushed Iron (wip)",
|
"item.actuallyadditions.dust_iron": "Crushed Iron (wip)",
|
||||||
"item.actuallyadditions.dust_gold": "Crushed Gold (wip)",
|
"item.actuallyadditions.dust_gold": "Crushed Gold (wip)",
|
||||||
"item.actuallyadditions.dust_diamond": "Crushed Diamond (wip)",
|
"item.actuallyadditions.dust_diamond": "Crushed Diamond (wip)",
|
||||||
|
@ -371,7 +371,7 @@
|
||||||
"item.actuallyadditions.spawner_changer": "Spawner Changer (wip)",
|
"item.actuallyadditions.spawner_changer": "Spawner Changer (wip)",
|
||||||
"item.actuallyadditions.spawner_shard": "Spawner Shards (wip)",
|
"item.actuallyadditions.spawner_shard": "Spawner Shards (wip)",
|
||||||
"item.actuallyadditions.minecart_firework_box": "Firework Box Cart (wip)",
|
"item.actuallyadditions.minecart_firework_box": "Firework Box Cart (wip)",
|
||||||
"item.actuallyadditions.water_bowl": "Bowl of Water",
|
"item.actuallyadditions.water_bowl": "Bowl of Water (wip)",
|
||||||
"item.actuallyadditions.filter": "Item Filter",
|
"item.actuallyadditions.filter": "Item Filter",
|
||||||
"item.actuallyadditions.biomass": "Biomass (wip)",
|
"item.actuallyadditions.biomass": "Biomass (wip)",
|
||||||
"item.actuallyadditions.biocoal": "Bio Coal (wip)",
|
"item.actuallyadditions.biocoal": "Bio Coal (wip)",
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 3.6 KiB |
Loading…
Reference in a new issue