Skip to content

Commit

Permalink
Utilize RecipeManager and TagManager from Redstone Transformer (#1116)
Browse files Browse the repository at this point in the history
  • Loading branch information
smartboyathome authored Jul 14, 2021
1 parent 82c33f6 commit e16336e
Show file tree
Hide file tree
Showing 31 changed files with 324 additions and 4,545 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
*.java text eol=lf
*.properties text eol=lf
text eol=lf
8 changes: 7 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<api.version>1.16.5-R0.1-SNAPSHOT</api.version>
<redstone.transformer.version>1.0.0-SNAPSHOT</redstone.transformer.version>
<linkstone.version>1.0.0-SNAPSHOT</linkstone.version>
<minecraft.version>1.16.5</minecraft.version>
<maven.build.timestamp.format>yyyyMMdd-HHmm</maven.build.timestamp.format>
Expand Down Expand Up @@ -78,7 +79,12 @@
<dependency>
<groupId>net.glowstone</groupId>
<artifactId>block-data-generated</artifactId>
<version>1.0.0-SNAPSHOT</version>
<version>${redstone.transformer.version}</version>
</dependency>
<dependency>
<groupId>net.glowstone</groupId>
<artifactId>data-pack-generated</artifactId>
<version>${redstone.transformer.version}</version>
</dependency>
<dependency>
<groupId>org.fusesource.jansi</groupId>
Expand Down
41 changes: 0 additions & 41 deletions scripts/convert_recipes.js

This file was deleted.

78 changes: 51 additions & 27 deletions src/main/java/net/glowstone/GlowServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,12 @@
import net.glowstone.command.minecraft.XpCommand;
import net.glowstone.constants.GlowEnchantment;
import net.glowstone.constants.GlowPotionEffect;
import net.glowstone.data.GlowTag;
import net.glowstone.datapack.FuelManager;
import net.glowstone.datapack.RecipeManager;
import net.glowstone.datapack.TagManager;
import net.glowstone.datapack.vanilla.VanillaFuelManager;
import net.glowstone.datapack.vanilla.VanillaRecipeManager;
import net.glowstone.datapack.vanilla.VanillaTagManager;
import net.glowstone.entity.EntityIdManager;
import net.glowstone.entity.FishingRewardManager;
import net.glowstone.entity.GlowPlayer;
Expand All @@ -131,7 +136,6 @@
import net.glowstone.i18n.GlowstoneMessages;
import net.glowstone.inventory.GlowInventory;
import net.glowstone.inventory.GlowItemFactory;
import net.glowstone.inventory.crafting.CraftingManager;
import net.glowstone.io.PlayerDataService;
import net.glowstone.io.PlayerStatisticIoService;
import net.glowstone.io.ScoreboardIoService;
Expand Down Expand Up @@ -305,9 +309,13 @@ public class GlowServer implements Server {
*/
private final GlowScoreboardManager scoreboardManager = new GlowScoreboardManager(this);
/**
* The crafting manager for this server.
* The recipe manager for this server.
*/
private final CraftingManager craftingManager = new CraftingManager();
private final RecipeManager recipeManager;
/**
* The fuel manager for this server.
*/
private final FuelManager fuelManager;
/**
* What manages the mapping of Material to BlockData and the mapping between State ID and BlockData.
*/
Expand Down Expand Up @@ -376,7 +384,7 @@ public class GlowServer implements Server {
/**
* The {@link Tag}s of this server, per registry, mapped by namespaced key.
*/
private final Map<String, Map<NamespacedKey, Tag<? extends Keyed>>> tags;
private final TagManager tagManager;
/**
* Default root permissions.
*/
Expand Down Expand Up @@ -519,7 +527,9 @@ public GlowServer(ServerConfig config) {

loadConfig();
bossBars = new ConcurrentHashMap<>();
tags = new HashMap<>();
tagManager = new VanillaTagManager();
recipeManager = new VanillaRecipeManager(tagManager);
fuelManager = new VanillaFuelManager(tagManager);
}

/**
Expand Down Expand Up @@ -1043,7 +1053,6 @@ private void loadConfig() {
whitelistEnabled = config.getBoolean(Key.WHITELIST);
idleTimeout = config.getInt(Key.PLAYER_IDLE_TIMEOUT);
maxPlayers = config.getInt(Key.MAX_PLAYERS);
craftingManager.initialize();

// special handling
warnState = WarningState.value(config.getString(Key.WARNING_STATE));
Expand Down Expand Up @@ -1472,7 +1481,7 @@ public void reload() {
ipBans.load();

// Reset crafting
craftingManager.resetRecipes();
recipeManager.resetToDefaults();

// Load plugins
loadPlugins();
Expand Down Expand Up @@ -1538,17 +1547,18 @@ public BlockData createBlockData(Material material, String data) throws IllegalA

@Override
public <T extends Keyed> Tag<T> getTag(@NotNull String registry, @NotNull NamespacedKey tagKey, @NotNull Class<T> clazz) {
// TODO: what are we supposed to do with clazz?
return (Tag<T>) tags.computeIfAbsent(registry, k -> new HashMap<>()).computeIfAbsent(tagKey, k -> new GlowTag<T>(tagKey));
return tagManager.getTag(registry, tagKey, clazz);
}

@Override
public @NotNull <T extends Keyed> Iterable<Tag<T>> getTags(@NotNull String registry,
@NotNull Class<T> clazz) {
// TODO: what are we supposed to do with clazz?
// TODO: 1.13 impl
//return tags.computeIfAbsent(registry, k -> new HashMap<>()).values();
return null;
public @NotNull <T extends Keyed> Iterable<Tag<T>> getTags(@NotNull String registry, @NotNull Class<T> clazz) {
Set<Tag<T>> tags = new HashSet<>();

for (NamespacedKey key : tagManager.getAllKeysInRegistry(registry)) {
tags.add(tagManager.getTag(registry, key, clazz));
}

return tags;
}

@Override
Expand Down Expand Up @@ -1661,12 +1671,21 @@ public File getConfigDir() {
}

/**
* Return the crafting manager.
* Return the recipe manager.
*
* @return The server's recipe manager.
*/
public RecipeManager getRecipeManager() {
return recipeManager;
}

/**
* Return the fuel manager.
*
* @return The server's crafting manager.
* @return The server's fuel manager.
*/
public CraftingManager getCraftingManager() {
return craftingManager;
public FuelManager getFuelManager() {
return fuelManager;
}

/**
Expand Down Expand Up @@ -2476,37 +2495,37 @@ public boolean unloadWorld(World world, boolean save) {

@Override
public List<Recipe> getRecipesFor(ItemStack result) {
return craftingManager.getRecipesFor(result);
return recipeManager.getAllRecipesForResult(result);
}

@Override
public Recipe getRecipe(@NotNull NamespacedKey key) {
return craftingManager.getRecipeByKey(key);
return recipeManager.getRecipe(key);
}

@Override
public Iterator<Recipe> recipeIterator() {
return craftingManager.iterator();
return recipeManager.getAllRecipes();
}

@Override
public boolean addRecipe(Recipe recipe) {
return craftingManager.addRecipe(recipe);
return recipeManager.addRecipe(recipe);
}

@Override
public void clearRecipes() {
craftingManager.clearRecipes();
recipeManager.clearRecipes();
}

@Override
public void resetRecipes() {
craftingManager.resetRecipes();
recipeManager.resetToDefaults();
}

@Override
public boolean removeRecipe(@NotNull NamespacedKey key) {
return craftingManager.removeRecipe(key);
return recipeManager.removeRecipe(key);
}

@Override
Expand Down Expand Up @@ -2743,6 +2762,11 @@ public String getServerId() {
return Integer.toHexString(getServerName().hashCode());
}

@Override
public int getMaxPlayers() {
return config.getInt(Key.MAX_PLAYERS);
}

@Override
public String getUpdateFolder() {
return config.getString(Key.UPDATE_FOLDER);
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/net/glowstone/block/GlowBlock.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@
import net.glowstone.block.data.states.StatefulBlockData;
import net.glowstone.block.entity.BlockEntity;
import net.glowstone.chunk.GlowChunk;
import net.glowstone.datapack.tags.ExtraMaterialTags;
import net.glowstone.net.message.play.game.BlockChangeMessage;
import org.bukkit.Bukkit;
import org.bukkit.FluidCollisionMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Tag;
import org.bukkit.block.Biome;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
Expand Down Expand Up @@ -266,7 +268,7 @@ && getRelative(BlockFace.UP).getType() == Material.DOUBLE_PLANT) {

@Override
public boolean isEmpty() {
return MaterialUtil.AIR_VARIANTS.contains(getType());
return ExtraMaterialTags.AIR_VARIANTS.isTagged(getType());
}

@Override
Expand Down Expand Up @@ -390,7 +392,7 @@ public boolean isBlockPowered() {
return true;
}

if (MaterialUtil.BUTTONS.contains(getType())
if (Tag.BUTTONS.isTagged(getType())
&& ((Button) getState().getData()).isPowered()) {
return true;
}
Expand Down
56 changes: 56 additions & 0 deletions src/main/java/net/glowstone/block/GlowTags.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package net.glowstone.block;

import com.destroystokyo.paper.MaterialSetTag;
import com.destroystokyo.paper.MaterialTags;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.Tag;
import org.bukkit.block.data.Bisected;

/**
* Useful constant groups of materials, many of which were just 1 or 2 materials pre-Flattening.
*/
public class GlowTags {
private static NamespacedKey keyFor(String key) {
//noinspection deprecation
return new NamespacedKey("glowstone", key + "_settag");
}

public static final Tag<Material> WOODS =
new MaterialSetTag(keyFor("woods"))
.endsWith("_WOOD")
.notStartsWith("STRIPPED_")
.ensureSize("WOODS", 6);

public static final Tag<Material> AIR_VARIANTS =
new MaterialSetTag(keyFor("air_variants"))
.endsWith("_AIR")
.add(Material.AIR)
.add(Material.STRUCTURE_VOID)
.ensureSize("AIR_VARIANTS", 4);

public static final Tag<Material> BISECTED_BLOCKS =
new MaterialSetTag(keyFor("bisected_blocks"))
.add(mat -> Bisected.class.isAssignableFrom(mat.getData()));

public static final Tag<Material> BEACON_BASE =
new MaterialSetTag(keyFor("beacon_base"))
.add(
Material.EMERALD_BLOCK,
Material.GOLD_BLOCK,
Material.DIAMOND_BLOCK,
Material.IRON_BLOCK
);

public static final Tag<Material> TRANSPARENT_BLOCKS =
new MaterialSetTag(keyFor("transparent_blocks"))
.add(
Material.AIR,
Material.GLASS,
Material.GLASS_PANE
)
.add(
MaterialTags.STAINED_GLASS_PANES,
MaterialTags.STAINED_GLASS
);
}
Loading

0 comments on commit e16336e

Please sign in to comment.