Fixed Conduit and Beacon Activation on Vanilla Servers (#6438)

This commit is contained in:
DaemonUmbra 2020-02-17 14:01:38 -05:00 committed by GitHub
parent a740044e21
commit daff482092
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 40 additions and 54 deletions

View file

@ -1,11 +1,14 @@
--- a/net/minecraft/tileentity/ConduitTileEntity.java --- a/net/minecraft/tileentity/ConduitTileEntity.java
+++ b/net/minecraft/tileentity/ConduitTileEntity.java +++ b/net/minecraft/tileentity/ConduitTileEntity.java
@@ -131,7 +131,7 @@ @@ -131,10 +131,8 @@
BlockPos blockpos1 = this.field_174879_c.func_177982_a(j1, k1, l1); BlockPos blockpos1 = this.field_174879_c.func_177982_a(j1, k1, l1);
BlockState blockstate = this.field_145850_b.func_180495_p(blockpos1); BlockState blockstate = this.field_145850_b.func_180495_p(blockpos1);
- for(Block block : field_205042_e) { - for(Block block : field_205042_e) {
+ for(Block block : net.minecraftforge.common.Tags.Blocks.SUPPORTS_CONDUIT.func_199885_a()) { - if (blockstate.func_177230_c() == block) {
if (blockstate.func_177230_c() == block) { + if (blockstate.isConduitFrame(this.field_145850_b, blockpos1, func_174877_v())) {
this.field_205046_i.add(blockpos1); this.field_205046_i.add(blockpos1);
} - }
}
}
}

View file

@ -1,9 +0,0 @@
{
"replace": false,
"values": [
"minecraft:emerald_block",
"minecraft:gold_block",
"minecraft:diamond_block",
"minecraft:iron_block"
]
}

View file

@ -1,9 +0,0 @@
{
"replace": false,
"values": [
"minecraft:prismarine",
"minecraft:prismarine_bricks",
"minecraft:sea_lantern",
"minecraft:dark_prismarine"
]
}

View file

@ -1,9 +0,0 @@
{
"replace": false,
"values": [
"minecraft:emerald_block",
"minecraft:gold_block",
"minecraft:diamond_block",
"minecraft:iron_block"
]
}

View file

@ -1,9 +0,0 @@
{
"replace": false,
"values": [
"minecraft:prismarine",
"minecraft:prismarine_bricks",
"minecraft:sea_lantern",
"minecraft:dark_prismarine"
]
}

View file

@ -112,9 +112,6 @@ public class Tags
public static final Tag<Block> STORAGE_BLOCKS_QUARTZ = tag("storage_blocks/quartz"); public static final Tag<Block> STORAGE_BLOCKS_QUARTZ = tag("storage_blocks/quartz");
public static final Tag<Block> STORAGE_BLOCKS_REDSTONE = tag("storage_blocks/redstone"); public static final Tag<Block> STORAGE_BLOCKS_REDSTONE = tag("storage_blocks/redstone");
public static final Tag<Block> SUPPORTS_BEACON = tag("supports_beacon");
public static final Tag<Block> SUPPORTS_CONDUIT = tag("supports_conduit");
private static Tag<Block> tag(String name) private static Tag<Block> tag(String name)
{ {
return new BlockTags.Wrapper(new ResourceLocation("forge", name)); return new BlockTags.Wrapper(new ResourceLocation("forge", name));
@ -270,9 +267,6 @@ public class Tags
public static final Tag<Item> STORAGE_BLOCKS_REDSTONE = tag("storage_blocks/redstone"); public static final Tag<Item> STORAGE_BLOCKS_REDSTONE = tag("storage_blocks/redstone");
public static final Tag<Item> STRING = tag("string"); public static final Tag<Item> STRING = tag("string");
public static final Tag<Item> SUPPORTS_BEACON = tag("supports_beacon");
public static final Tag<Item> SUPPORTS_CONDUIT = tag("supports_conduit");
private static Tag<Item> tag(String name) private static Tag<Item> tag(String name)
{ {
return new ItemTags.Wrapper(new ResourceLocation("forge", name)); return new ItemTags.Wrapper(new ResourceLocation("forge", name));

View file

@ -96,8 +96,6 @@ public class ForgeBlockTagsProvider extends BlockTagsProvider
getBuilder(STORAGE_BLOCKS_LAPIS).add(Blocks.LAPIS_BLOCK); getBuilder(STORAGE_BLOCKS_LAPIS).add(Blocks.LAPIS_BLOCK);
getBuilder(STORAGE_BLOCKS_QUARTZ).add(Blocks.QUARTZ_BLOCK); getBuilder(STORAGE_BLOCKS_QUARTZ).add(Blocks.QUARTZ_BLOCK);
getBuilder(STORAGE_BLOCKS_REDSTONE).add(Blocks.REDSTONE_BLOCK); getBuilder(STORAGE_BLOCKS_REDSTONE).add(Blocks.REDSTONE_BLOCK);
getBuilder(SUPPORTS_BEACON).add(Blocks.EMERALD_BLOCK, Blocks.GOLD_BLOCK, Blocks.DIAMOND_BLOCK, Blocks.IRON_BLOCK);
getBuilder(SUPPORTS_CONDUIT).add(Blocks.PRISMARINE, Blocks.PRISMARINE_BRICKS, Blocks.SEA_LANTERN, Blocks.DARK_PRISMARINE);
} }
private void addColored(Consumer<Block> consumer, Tag<Block> group, String pattern) private void addColored(Consumer<Block> consumer, Tag<Block> group, String pattern)

View file

@ -142,8 +142,6 @@ public class ForgeItemTagsProvider extends ItemTagsProvider
copy(Tags.Blocks.STORAGE_BLOCKS_QUARTZ, Tags.Items.STORAGE_BLOCKS_QUARTZ); copy(Tags.Blocks.STORAGE_BLOCKS_QUARTZ, Tags.Items.STORAGE_BLOCKS_QUARTZ);
copy(Tags.Blocks.STORAGE_BLOCKS_REDSTONE, Tags.Items.STORAGE_BLOCKS_REDSTONE); copy(Tags.Blocks.STORAGE_BLOCKS_REDSTONE, Tags.Items.STORAGE_BLOCKS_REDSTONE);
getBuilder(Tags.Items.STRING).add(Items.STRING); getBuilder(Tags.Items.STRING).add(Items.STRING);
copy(Tags.Blocks.SUPPORTS_BEACON, Tags.Items.SUPPORTS_BEACON);
copy(Tags.Blocks.SUPPORTS_CONDUIT, Tags.Items.SUPPORTS_CONDUIT);
} }
private void addColored(Consumer<Tag<Item>> consumer, Tag<Item> group, String pattern) private void addColored(Consumer<Tag<Item>> consumer, Tag<Item> group, String pattern)

View file

@ -40,7 +40,6 @@ import net.minecraft.block.material.Material;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.client.particle.ParticleManager; import net.minecraft.client.particle.ParticleManager;
import net.minecraft.client.renderer.ActiveRenderInfo; import net.minecraft.client.renderer.ActiveRenderInfo;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.MobEntity; import net.minecraft.entity.MobEntity;
@ -55,7 +54,6 @@ import net.minecraft.fluid.IFluidState;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
import net.minecraft.potion.Effects; import net.minecraft.potion.Effects;
import net.minecraft.item.DyeColor; import net.minecraft.item.DyeColor;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.pathfinding.PathNodeType; import net.minecraft.pathfinding.PathNodeType;
import net.minecraft.state.IProperty; import net.minecraft.state.IProperty;
@ -82,7 +80,6 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.IPlantable;
import net.minecraftforge.common.Tags;
import net.minecraftforge.common.ToolType; import net.minecraftforge.common.ToolType;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@ -570,7 +567,26 @@ public interface IForgeBlock
*/ */
default boolean isBeaconBase(BlockState state, IWorldReader world, BlockPos pos, BlockPos beacon) default boolean isBeaconBase(BlockState state, IWorldReader world, BlockPos pos, BlockPos beacon)
{ {
return Tags.Blocks.SUPPORTS_BEACON.contains(state.getBlock()); return state.getBlock() == Blocks.IRON_BLOCK ||
state.getBlock() == Blocks.GOLD_BLOCK ||
state.getBlock() == Blocks.DIAMOND_BLOCK ||
state.getBlock() == Blocks.EMERALD_BLOCK;
}
/**
* Determines if this block can be used as the frame of a conduit.
*
* @param world The current world
* @param pos Block position in world
* @param conduit Conduit position in world
* @return True, to support the conduit, and make it active with this block.
*/
default boolean isConduitFrame(BlockState state, IWorldReader world, BlockPos pos, BlockPos conduit)
{
return state.getBlock() == Blocks.PRISMARINE ||
state.getBlock() == Blocks.PRISMARINE_BRICKS ||
state.getBlock() == Blocks.SEA_LANTERN ||
state.getBlock() == Blocks.DARK_PRISMARINE;
} }
/** /**

View file

@ -495,6 +495,19 @@ public interface IForgeBlockState
return getBlockState().getBlock().isBeaconBase(getBlockState(), world, pos, beacon); return getBlockState().getBlock().isBeaconBase(getBlockState(), world, pos, beacon);
} }
/**
* Determines if this block can be used as the frame of a conduit.
*
* @param world The current world
* @param pos Block position in world
* @param conduit Conduit position in world
* @return True, to support the conduit, and make it active with this block.
*/
default boolean isConduitFrame(IWorldReader world, BlockPos pos, BlockPos conduit)
{
return getBlockState().getBlock().isConduitFrame(getBlockState(), world, pos, conduit);
}
/** /**
* Determines if this block can be used as part of a frame of a nether portal. * Determines if this block can be used as part of a frame of a nether portal.
* *