Merge branch '1.21' into new-container-api
This commit is contained in:
commit
45651d81b5
@ -44,6 +44,26 @@ fun addChestLootTables(loot: LootTables) {
|
||||
}
|
||||
}
|
||||
|
||||
loot.builder(LootContextParamSets.VAULT, modLootTable("laboratory_vault")){
|
||||
lootPool {
|
||||
item(MItems.MATTER_DUST) {
|
||||
chanceCondition(0.1)
|
||||
setWeight(4)
|
||||
apply(MatterDustItem.Randomizer(UniformDecimal(Decimal(100), Decimal(2_500))))
|
||||
}
|
||||
item(Items.IRON_INGOT) {
|
||||
setCount(minimal = 1, maximal = 3)
|
||||
setWeight(3)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
loot.builder(LootContextParamSets.VAULT, modLootTable("laboratory_ominous_vault")){
|
||||
|
||||
|
||||
}
|
||||
|
||||
loot.builder(LootContextParamSets.CHEST, modLootTable("frigate_cargo")) {
|
||||
lootPool {
|
||||
item(Items.IRON_INGOT) {
|
||||
|
@ -78,7 +78,7 @@ public class LoaderModel {
|
||||
this.animate(entity.getIdleState(), LoaderAnimation.ATTACK, ageInTicks, 1.0F);
|
||||
}
|
||||
|
||||
this.animateWalk(LoaderAnimation.MOVE, limbSwing, limbSwingAmount, 1.0F, 2.5F);
|
||||
this.animateWalk(LoaderAnimation.MOVE, limbSwing, limbSwingAmount, 0.8F, 2.5F);
|
||||
this.animate(entity.getIdleState(), LoaderAnimation.IDLE, ageInTicks, 1.0F);
|
||||
|
||||
}
|
||||
|
@ -5,6 +5,8 @@ import net.minecraft.client.Minecraft
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.HolderLookup
|
||||
import net.minecraft.core.SectionPos
|
||||
import net.minecraft.core.particles.DustParticleOptions
|
||||
import net.minecraft.core.particles.ParticleTypes
|
||||
import net.minecraft.nbt.CompoundTag
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
@ -211,6 +213,31 @@ class BlackHoleBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : Mattery
|
||||
val distance = item.position().distanceTo(center)
|
||||
setDeltaMovement(item, center, distance)
|
||||
}
|
||||
|
||||
//no way null malware reference
|
||||
val tempLevel = level
|
||||
if (tempLevel?.otmRandom!!.nextFloat() < 0.8f) {
|
||||
|
||||
val size = gravitationStrength.pow(0.5)
|
||||
val eventHorizonRadius = size / 2
|
||||
|
||||
val spawnRadius = 4 + eventHorizonRadius * (1.2 + tempLevel.otmRandom.nextDouble() * 0.6)
|
||||
|
||||
val theta = tempLevel.otmRandom.nextDouble() * Math.PI * 2
|
||||
val phi = tempLevel.otmRandom.nextDouble() * Math.PI - Math.PI / 2
|
||||
|
||||
//мугек я не ощущаю центр
|
||||
//хз нужно настроить
|
||||
val x = blockPos.x + 0.5 + spawnRadius * Math.cos(theta) * Math.cos(phi)
|
||||
val y = blockPos.y + 0.5 + spawnRadius * Math.sin(phi)
|
||||
val z = blockPos.z + 0.5 + spawnRadius * Math.sin(theta) * Math.cos(phi)
|
||||
|
||||
val motionX = (blockPos.x + 0.5 - x) * 0.05
|
||||
val motionY = (blockPos.y - 1.5 - y) * 0.05
|
||||
val motionZ = (blockPos.z + 0.5 - z) * 0.05
|
||||
|
||||
tempLevel.addParticle(ParticleTypes.SMOKE, x, y, z, motionX, motionY, motionZ)
|
||||
}
|
||||
}
|
||||
|
||||
private val sphericalPositionsCache = ArrayList<BlockPos>()
|
||||
|
@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.block.entity.cable
|
||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap
|
||||
import it.unimi.dsi.fastutil.objects.ReferenceArraySet
|
||||
import it.unimi.dsi.fastutil.objects.ReferenceLinkedOpenHashSet
|
||||
import net.minecraft.core.Direction
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import ru.dbotthepony.mc.otm.SERVER_IS_LIVE
|
||||
import ru.dbotthepony.mc.otm.UNIVERSE_TICKS
|
||||
@ -74,16 +75,20 @@ private class LinkedPriorityQueue<T : Comparable<T>> {
|
||||
}
|
||||
|
||||
class EnergyCableGraph : GraphNodeList<EnergyCableBlockEntity.Node, EnergyCableGraph>() {
|
||||
private val livelyNodes = HashSet<EnergyCableBlockEntity.Node>()
|
||||
private val livelyNodesList = ArrayList<EnergyCableBlockEntity.Node>()
|
||||
private val livelyNodes = HashSet<Pair<EnergyCableBlockEntity.Node, RelativeSide>>()
|
||||
private val livelyNodesList = ArrayList<Pair<EnergyCableBlockEntity.Node, RelativeSide>>()
|
||||
|
||||
fun addLivelyNode(node: EnergyCableBlockEntity.Node) {
|
||||
when (contains(node)) {
|
||||
ContainsStatus.ABOUT_TO_BE_REMOVED, ContainsStatus.ABOUT_TO_BE_ADDED -> { } // do nothing
|
||||
ContainsStatus.DOES_NOT_BELONG -> throw IllegalArgumentException("$node does not belong to $this")
|
||||
ContainsStatus.CONTAINS -> {
|
||||
if (livelyNodes.add(node)) {
|
||||
livelyNodesList.add(node)
|
||||
for (dir in RelativeSide.entries) {
|
||||
val pair = node to dir
|
||||
|
||||
if (livelyNodes.add(pair)) {
|
||||
livelyNodesList.add(pair)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -584,8 +589,12 @@ class EnergyCableGraph : GraphNodeList<EnergyCableBlockEntity.Node, EnergyCableG
|
||||
}
|
||||
|
||||
override fun onNodeRemoved(node: EnergyCableBlockEntity.Node) {
|
||||
if (livelyNodes.remove(node)) {
|
||||
check(livelyNodesList.remove(node))
|
||||
for (dir in RelativeSide.entries) {
|
||||
val pair = node to dir
|
||||
|
||||
if (livelyNodes.remove(pair)) {
|
||||
check(livelyNodesList.remove(pair))
|
||||
}
|
||||
}
|
||||
|
||||
val touchedSegments = HashSet<Segment>()
|
||||
@ -608,8 +617,11 @@ class EnergyCableGraph : GraphNodeList<EnergyCableBlockEntity.Node, EnergyCableG
|
||||
}
|
||||
|
||||
override fun onNodeAdded(node: EnergyCableBlockEntity.Node) {
|
||||
check(livelyNodes.add(node))
|
||||
livelyNodesList.add(node)
|
||||
for (dir in RelativeSide.entries) {
|
||||
val pair = node to dir
|
||||
check(livelyNodes.add(pair))
|
||||
livelyNodesList.add(pair)
|
||||
}
|
||||
|
||||
notifyThroughputsChanged()
|
||||
}
|
||||
@ -622,98 +634,97 @@ class EnergyCableGraph : GraphNodeList<EnergyCableBlockEntity.Node, EnergyCableG
|
||||
var residue = howMuch.coerceAtMost(fromNode.energyThroughput)
|
||||
val snapshot = Reference2ObjectOpenHashMap<Segment, Decimal>()
|
||||
|
||||
for (node in itr) {
|
||||
var hit = false
|
||||
for (pair in itr) {
|
||||
val (node, relSide) = pair
|
||||
val side = node.sides[relSide]!!
|
||||
|
||||
for (side in node.sides.values) {
|
||||
if (!side.isEnabled)
|
||||
continue
|
||||
else if (fromNode === node && side.side === fromSide) {
|
||||
hit = true
|
||||
continue
|
||||
}
|
||||
|
||||
val it = side.neighbour.get() ?: continue
|
||||
if (it is EnergyCableBlockEntity.CableSide) continue
|
||||
|
||||
val paths = getPath(fromNode, node, it.receiveEnergy(residue, true), !simulate)
|
||||
hit = true
|
||||
|
||||
if (paths.size == 1) {
|
||||
// Single path, fast scenario
|
||||
val path = paths[0]
|
||||
val pathTransferred = path.transfer(residue, simulate, snapshot)
|
||||
if (pathTransferred <= Decimal.ZERO) continue
|
||||
val thisReceived = it.receiveEnergy(pathTransferred, simulate)
|
||||
|
||||
// If cable transferred more than machine accepted, then "refund" energy
|
||||
// so cables record actual value transferred through them
|
||||
if (thisReceived != pathTransferred) {
|
||||
path.refund(pathTransferred - thisReceived, simulate, snapshot)
|
||||
|
||||
if (!simulate && thisReceived != Decimal.ZERO) {
|
||||
path.triggerBlockstateUpdates()
|
||||
}
|
||||
} else if (!simulate) {
|
||||
path.triggerBlockstateUpdates()
|
||||
}
|
||||
|
||||
received += thisReceived
|
||||
residue -= thisReceived
|
||||
if (!residue.isPositive) return received
|
||||
} else if (paths.size >= 2) {
|
||||
// Multiple paths, a bit more complicated
|
||||
// Determine how much machine is likely to accept
|
||||
val potentiallyAccepted = it.receiveEnergy(residue, true)
|
||||
|
||||
// Won't accept anything
|
||||
if (potentiallyAccepted <= Decimal.ZERO) continue
|
||||
|
||||
// Now determine combined available throughput
|
||||
// Make a copy of snapshot, so we can freely write into it
|
||||
val copy = snapshot.clone()
|
||||
var calcResidue = potentiallyAccepted
|
||||
|
||||
// TODO: Currently, all transfers cause Braess's paradox, because of greedy selection of "fastest" cable
|
||||
// Need to implement heuristics to better distribute load across different paths/segments
|
||||
for (path in paths) {
|
||||
val passed = path.transfer(calcResidue, true, copy)
|
||||
calcResidue -= passed
|
||||
if (calcResidue <= Decimal.ZERO) break
|
||||
}
|
||||
|
||||
if (calcResidue == potentiallyAccepted) {
|
||||
// мда
|
||||
continue
|
||||
}
|
||||
|
||||
var thisReceived = it.receiveEnergy(potentiallyAccepted - calcResidue, simulate)
|
||||
received += thisReceived
|
||||
residue -= thisReceived
|
||||
|
||||
for (path in paths) {
|
||||
val passed = path.transfer(thisReceived, simulate, snapshot)
|
||||
|
||||
if (!simulate)
|
||||
path.triggerBlockstateUpdates()
|
||||
|
||||
thisReceived -= passed
|
||||
if (thisReceived <= Decimal.ZERO) break
|
||||
}
|
||||
|
||||
if (!residue.isPositive) return received
|
||||
//check(thisReceived <= Decimal.ZERO) { "Путом, алло, Путом, какого чёрта Путом? Путом почему ты заблокировал логику, а Путом?" }
|
||||
|
||||
if (thisReceived > Decimal.ZERO) {
|
||||
LOGGER.warn("Cable path from $fromNode to $node doesn't follow common sense, disabling.")
|
||||
paths.forEach { it.shortCircuit = true }
|
||||
}
|
||||
}
|
||||
if (!side.isEnabled) {
|
||||
itr.remove()
|
||||
check(livelyNodes.remove(pair)) { "Lively nodes Set does not contain $pair" }
|
||||
continue
|
||||
} else if (fromNode === node && side.side === fromSide) {
|
||||
continue
|
||||
}
|
||||
|
||||
if (!hit) {
|
||||
val it = side.neighbour.get()
|
||||
|
||||
if (it == null || it is EnergyCableBlockEntity.CableSide) {
|
||||
itr.remove()
|
||||
check(livelyNodes.remove(node)) { "Lively nodes Set does not contain $node" }
|
||||
check(livelyNodes.remove(pair)) { "Lively nodes Set does not contain $pair" }
|
||||
continue
|
||||
}
|
||||
|
||||
val paths = getPath(fromNode, node, it.receiveEnergy(residue, true), !simulate)
|
||||
|
||||
if (paths.size == 1) {
|
||||
// Single path, fast scenario
|
||||
val path = paths[0]
|
||||
val pathTransferred = path.transfer(residue, simulate, snapshot)
|
||||
if (pathTransferred <= Decimal.ZERO) continue
|
||||
val thisReceived = it.receiveEnergy(pathTransferred, simulate)
|
||||
|
||||
// If cable transferred more than machine accepted, then "refund" energy
|
||||
// so cables record actual value transferred through them
|
||||
if (thisReceived != pathTransferred) {
|
||||
path.refund(pathTransferred - thisReceived, simulate, snapshot)
|
||||
|
||||
if (!simulate && thisReceived != Decimal.ZERO) {
|
||||
path.triggerBlockstateUpdates()
|
||||
}
|
||||
} else if (!simulate) {
|
||||
path.triggerBlockstateUpdates()
|
||||
}
|
||||
|
||||
received += thisReceived
|
||||
residue -= thisReceived
|
||||
if (!residue.isPositive) return received
|
||||
} else if (paths.size >= 2) {
|
||||
// Multiple paths, a bit more complicated
|
||||
// Determine how much machine is likely to accept
|
||||
val potentiallyAccepted = it.receiveEnergy(residue, true)
|
||||
|
||||
// Won't accept anything
|
||||
if (potentiallyAccepted <= Decimal.ZERO) continue
|
||||
|
||||
// Now determine combined available throughput
|
||||
// Make a copy of snapshot, so we can freely write into it
|
||||
val copy = snapshot.clone()
|
||||
var calcResidue = potentiallyAccepted
|
||||
|
||||
// TODO: Currently, all transfers cause Braess's paradox, because of greedy selection of "fastest" cable
|
||||
// Need to implement heuristics to better distribute load across different paths/segments
|
||||
for (path in paths) {
|
||||
val passed = path.transfer(calcResidue, true, copy)
|
||||
calcResidue -= passed
|
||||
if (calcResidue <= Decimal.ZERO) break
|
||||
}
|
||||
|
||||
if (calcResidue == potentiallyAccepted) {
|
||||
// мда
|
||||
continue
|
||||
}
|
||||
|
||||
var thisReceived = it.receiveEnergy(potentiallyAccepted - calcResidue, simulate)
|
||||
received += thisReceived
|
||||
residue -= thisReceived
|
||||
|
||||
for (path in paths) {
|
||||
val passed = path.transfer(thisReceived, simulate, snapshot)
|
||||
|
||||
if (!simulate)
|
||||
path.triggerBlockstateUpdates()
|
||||
|
||||
thisReceived -= passed
|
||||
if (thisReceived <= Decimal.ZERO) break
|
||||
}
|
||||
|
||||
if (!residue.isPositive) return received
|
||||
//check(thisReceived <= Decimal.ZERO) { "Путом, алло, Путом, какого чёрта Путом? Путом почему ты заблокировал логику, а Путом?" }
|
||||
|
||||
if (thisReceived > Decimal.ZERO) {
|
||||
LOGGER.warn("Cable path from $fromNode to $node doesn't follow common sense, disabling.")
|
||||
paths.forEach { it.shortCircuit = true }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -331,8 +331,8 @@ object MNames {
|
||||
const val LOADER = "loader"
|
||||
|
||||
const val ANDROID_MELEE = "android_melee"
|
||||
const val ANDROID_RANGED = "android_melee"
|
||||
const val ANDROID_OVERSEER = "android_melee"
|
||||
const val ANDROID_RANGED = "android_ranged"
|
||||
const val ANDROID_OVERSEER = "android_overseer"
|
||||
|
||||
const val PHANTOM_ATTRACTOR = "phantom_attractor"
|
||||
const val JUMP_BOOST = "jump_boost"
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2,6 +2,7 @@
|
||||
"replace": false,
|
||||
"values": [
|
||||
"#c:is_desert",
|
||||
"minecraft:plains"
|
||||
"minecraft:plains",
|
||||
"minecraft:taiga"
|
||||
]
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
{
|
||||
"processors": [
|
||||
{
|
||||
"processor_type": "minecraft:rule",
|
||||
"rules": [
|
||||
{
|
||||
"input_predicate": {
|
||||
"block": "overdrive_that_matters:tritanium_block_light_gray",
|
||||
"predicate_type": "minecraft:random_block_match",
|
||||
"probability": 0.2
|
||||
},
|
||||
"location_predicate": {
|
||||
"predicate_type": "minecraft:always_true"
|
||||
},
|
||||
"output_state": {
|
||||
"Name": "overdrive_that_matters:decorative_crate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"input_predicate": {
|
||||
"block": "overdrive_that_matters:metal_mesh",
|
||||
"predicate_type": "minecraft:random_block_match",
|
||||
"probability": 0.1
|
||||
},
|
||||
"location_predicate": {
|
||||
"predicate_type": "minecraft:always_true"
|
||||
},
|
||||
"output_state": {
|
||||
"Name": "minecraft:air"
|
||||
}
|
||||
},
|
||||
{
|
||||
"input_predicate": {
|
||||
"block": "overdrive_that_matters:floor_tiles_stairs_white",
|
||||
"predicate_type": "minecraft:random_block_match",
|
||||
"probability": 0.1
|
||||
},
|
||||
"location_predicate": {
|
||||
"predicate_type": "minecraft:always_true"
|
||||
},
|
||||
"output_state": {
|
||||
"Name": "overdrive_that_matters:floor_tiles_slab_white"
|
||||
}
|
||||
},
|
||||
{
|
||||
"input_predicate": {
|
||||
"block": "overdrive_that_matters:reinforced_redstone_lamp_inverted",
|
||||
"predicate_type": "minecraft:random_block_match",
|
||||
"probability": 0.3
|
||||
},
|
||||
"location_predicate": {
|
||||
"predicate_type": "minecraft:always_true"
|
||||
},
|
||||
"output_state": {
|
||||
"Name": "overdrive_that_matters:reinforced_redstone_lamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,18 +1,24 @@
|
||||
{
|
||||
"type": "minecraft:jigsaw",
|
||||
"biomes": "#overdrive_that_matters:laboratory",
|
||||
"max_distance_from_center": 100,
|
||||
"max_distance_from_center": 112,
|
||||
"liquid_settings": "ignore_waterlogging",
|
||||
"size": 7,
|
||||
"size": 10,
|
||||
"start_height": {
|
||||
"absolute": -13
|
||||
"type": "minecraft:uniform",
|
||||
"max_inclusive": {
|
||||
"absolute": 30
|
||||
},
|
||||
"min_inclusive": {
|
||||
"absolute": -13
|
||||
}
|
||||
},
|
||||
"spawn_overrides": {
|
||||
"monster": {
|
||||
"bounding_box": "piece",
|
||||
"spawns": [
|
||||
{
|
||||
"type": "minecraft:pillager",
|
||||
"type": "overdrive_that_matters:android_melee",
|
||||
"weight": 1,
|
||||
"minCount": 1,
|
||||
"maxCount": 2
|
||||
@ -21,7 +27,7 @@
|
||||
}
|
||||
},
|
||||
"start_jigsaw_name": "overdrive_that_matters:laboratory_anchor",
|
||||
"start_pool": "overdrive_that_matters:laboratory/center",
|
||||
"start_pool": "overdrive_that_matters:laboratory/entrance",
|
||||
"step": "underground_decoration",
|
||||
"terrain_adaption": "encapsulate",
|
||||
"use_expansion_hack": false
|
||||
|
@ -3,7 +3,7 @@
|
||||
"type": "minecraft:random_spread",
|
||||
"salt": 20803232,
|
||||
"separation": 8,
|
||||
"spacing": 24
|
||||
"spacing": 12
|
||||
},
|
||||
"structures": [
|
||||
{
|
||||
|
@ -1,24 +0,0 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:center",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/center/lab_arena_0",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/center/lab_arena_1",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "minecraft:empty"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:crossroads",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/crossroads/vertical_a",
|
||||
"processors": "overdrive_that_matters:laboratory_weathering",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "overdrive_that_matters:laboratory/fallback_pool"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:entrance",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/entrance/entrance_a",
|
||||
"processors": "overdrive_that_matters:laboratory_weathering",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "minecraft:empty"
|
||||
}
|
@ -4,7 +4,16 @@
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/dead_end",
|
||||
"location": "overdrive_that_matters:laboratory/hall_fallback",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/hall_fallback_core",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
|
@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:fluff",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/fluff/chair",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/fluff/office",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/fluff/refinery",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/fluff/server",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/fluff/storage",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "minecraft:empty"
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:bridges",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/halls/bridges/bridge",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/halls/bridges/bridge_broken",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/halls/bridges/bridge_repair",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/halls/bridges/bridge_wood",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 2
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:empty_pool_element"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "minecraft:empty"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:center",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/halls/center/center_a",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "minecraft:empty"
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:bridges",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/halls/decor/camp_a",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/halls/decor/junk_array",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/halls/decor/stockpile",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "minecraft:empty"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:hall1",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/halls/hall1/hall_overgrown",
|
||||
"processors": "overdrive_that_matters:laboratory_weathering",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "overdrive_that_matters:laboratory/fallback_pool"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:hall2",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/halls/hall1/hall_overgrown",
|
||||
"processors": "overdrive_that_matters:laboratory_weathering",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 4
|
||||
}
|
||||
],
|
||||
"fallback": "overdrive_that_matters:laboratory/fallback_pool"
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:intersections",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/intersections/stairs_a",
|
||||
"processors": "overdrive_that_matters:laboratory_weathering",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/intersections/stairs_b",
|
||||
"processors": "overdrive_that_matters:laboratory_weathering",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/intersections/turn_a",
|
||||
"processors": "overdrive_that_matters:laboratory_weathering",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/intersections/lava",
|
||||
"processors": "overdrive_that_matters:laboratory_weathering",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "overdrive_that_matters:laboratory/fallback_pool"
|
||||
}
|
@ -1,78 +0,0 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:main",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/main/corridor_0",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 4
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/main/corridor_1",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 4
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/main/corridor_turn_0",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 4
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/main/corrior_t_0",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/main/corridor_room_0",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 3
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/main/corridor_stairs_0",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 2
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/main/generator_room_0",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 2
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/main/portal_room_0",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "overdrive_that_matters:laboratory/fallback_pool"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:reward",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/reward/reward",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "minecraft:empty"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:reward_ominous_wall",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/reward/reward_ominous_wall",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "minecraft:empty"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:reward_wall",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/reward/reward_wall",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "minecraft:empty"
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:rooms",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/rooms/office_a",
|
||||
"processors": "overdrive_that_matters:laboratory_weathering",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/rooms/office_b",
|
||||
"processors": "overdrive_that_matters:laboratory_weathering",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "overdrive_that_matters:laboratory/fallback_pool"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:s_heavy",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/spawner/s_loader",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "minecraft:empty"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "overdrive_that_matters:s_heavy",
|
||||
"elements": [
|
||||
{
|
||||
"element": {
|
||||
"element_type": "minecraft:single_pool_element",
|
||||
"location": "overdrive_that_matters:laboratory/spawner/s_android_melee",
|
||||
"processors": "minecraft:empty",
|
||||
"projection": "rigid"
|
||||
},
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"fallback": "minecraft:empty"
|
||||
}
|
Loading…
Reference in New Issue
Block a user