Compatibility
Minecraft: Java Edition
Platforms
75% of ad revenue goes to creators
Support creators and Modrinth ad-free with Modrinth+Links
Creators
Details
LegacyCraft – The Return of Old Craftsmanship
📜 Description
LegacyCraft brings the nostalgia of Minecraft’s early days back to modern servers! Experience classic, lost, or forgotten mechanics, recipes, and game systems from past Minecraft versions – from the Alpha age to Release 1.7. This plugin is a homage to Minecraft’s roots, when every block had meaning and each mechanic had to be discovered. Perfect for survival servers seeking to evoke nostalgia, roleplay servers with historical themes, or content creators planning unique challenges.
✨ Core Features
🕰️ Epoch System
- Players can switch between various Minecraft eras (Alpha, Beta, Release 1.0, Release 1.7)
- Each era enforces specific item and mechanic restrictions
- Configurable server-wide or per player
🛠️ Classic Recipes
- Golden Apples: Crafted with 8 gold blocks
- Vintage Fire Charges: Made with coal and blaze powder
- Legacy TNT: Higher explosion power like in older versions
🧰 Historical Workbenches
- Special crafting tables for different eras
- Each workbench enforces era-accurate crafting rules
- Custom GUI for an authentic experience
⚙️ Vintage Mechanics
- Zombies can break doors, like in early Minecraft
- Era-specific combat mechanics
- Various item/block restrictions depending on the active epoch
📋 Commands
Command Description /legacycraft Shows plugin information /legacycraft help Displays help menu /legacycraft epoch <epoch> Changes your current epoch /legacycraft epoch list Shows available epochs /legacycraft bench <type> Opens a legacy workbench /legacycraft reload Reloads plugin configuration (admin only)
🚀 Installation
- Download the latest version of LegacyCraft
- Place the .jar file in your server’s plugins folder
- Restart your server
- Configure the plugin via config.yml
- Enjoy the nostalgia of early Minecraft versions!
⚙️ Configuration
The plugin is fully configurable via the config.yml file:
# Enable/disable the epoch system
epochSystem:
enabled: true
# Available epochs
epochs:
alpha:
description: "Alpha Era – the beginning of Minecraft (pre-Beta)"
beta:
description: "Beta Era – before the official release"
# more epochs...
# Legacy Mechanics
legacyMechanics:
doorBreaking:
enabled: true
chance: 15 # Percentage chance a zombie will try to break a door
time: 60 # Ticks required to break a door (20 ticks = 1 second)
# more mechanics...
🎮 Player Experience
As a player, you can:
- View available epochs with /legacycraft epoch list
- Switch your current epoch with /legacycraft epoch <epoch>
- Open historical crafting benches with /legacycraft bench <type>
- Craft old recipes and relive forgotten mechanics
- Enjoy early Minecraft nostalgia while still using modern server features
📌 Server Admin Tips
- Use different epochs for different worlds or regions
- Create epoch-based quests or challenges
- Combine with economy plugins for a unique economic system
- Host special events with shifting eras
🔒 Permissions
legacycraft.use Allows use of basic LegacyCraft commands
legacycraft.admin Allows use of admin-level LegacyCraft commands
🛡️ Compatibility
- Supported Minecraft versions: 1.18-1.21+
- Server software: Spigot, Bukkit, Paper
- Recommended plugins: Economy plugins, Quests, Permissions systems
📚 Developer API
LegacyCraft offers an easy-to-use API for integration with other plugins:
LegacyCraft api = (LegacyCraft) Bukkit.getPluginManager().getPlugin("LegacyCraft");
String playerEpoch = api.getPlayerEpoch(player);
📝 About the Author
LegacyCraft was born from a deep love for Minecraft’s history. As longtime players, we’ve witnessed the game’s evolution from its Alpha beginnings to the present day – and now we want to share that journey with the community.
🔮 Future Features
- Era-specific sound effects
- Old texture packs for an authentic feel
- Legacy quest system
- Time-travel events with automatic epoch shifts
- Community-driven expansions of old mechanics
LegacyCraft – A bridge between Minecraft’s past and present.
LegacyCraft – API Documentation
This documentation describes the public API of the LegacyCraft plugin, which can be used by other plugins.
Overview
The LegacyCraft plugin provides an API that allows other plugins to:
- Query and change a player's epoch
- Check if an item is available in a specific epoch
- Open legacy crafting benches
- React to events related to the plugin
API Access
To access the LegacyCraft API, you must first obtain a reference to the plugin:
LegacyCraft api = (LegacyCraft) Bukkit.getPluginManager().getPlugin("LegacyCraft");
Make sure to declare LegacyCraft as a dependency in your plugin.yml
:
depend: [LegacyCraft]
# OR
softdepend: [LegacyCraft]
Example Integration
Here is a simple example of how you might use the LegacyCraft API in your plugin:
public class MyPlugin extends JavaPlugin {
private LegacyCraft legacyCraftAPI;
@Override
public void onEnable() {
// Check if LegacyCraft is available
Plugin plugin = Bukkit.getPluginManager().getPlugin("LegacyCraft");
if (plugin instanceof LegacyCraft) {
legacyCraftAPI = (LegacyCraft) plugin;
getLogger().info("LegacyCraft API successfully hooked!");
} else {
getLogger().warning("LegacyCraft not found!");
}
// Register commands and events
getCommand("mycommand").setExecutor(new MyCommand(this));
getServer().getPluginManager().registerEvents(new MyListener(this), this);
}
public LegacyCraft getLegacyCraftAPI() {
return legacyCraftAPI;
}
}
API Methods
Epoch Management
/**
* Returns the current epoch of a player
* @param player The player
* @return The current epoch or "modern" if none is set
*/
public String getPlayerEpoch(Player player) {
return playerEpochs.getOrDefault(player.getUniqueId(), "modern");
}
/**
* Sets a player's epoch
* @param player The player
* @param epoch The epoch to set
* @return true if the epoch was set successfully
*/
public boolean setPlayerEpoch(Player player, String epoch) {
if (epoch.equals("modern") || availableEpochs.contains(epoch)) {
playerEpochs.put(player.getUniqueId(), epoch);
return true;
}
return false;
}
/**
* Returns all available epochs
* @return A list of all available epochs
*/
public List<String> getAvailableEpochs() {
return new ArrayList<>(availableEpochs);
}
Item Compatibility
/**
* Checks whether a material is from a newer version than the specified epoch
* @param material The material to check
* @param epoch The epoch
* @return true if the material is not available in the specified epoch
*/
public boolean isItemFromNewerVersion(Material material, String epoch) {
// Implementation within the plugin
}
Legacy Workbenches
/**
* Opens a legacy workbench for a player
* @param player The player
* @param benchType The type of workbench (alpha, beta, release)
* @return true if the workbench was opened successfully
*/
public boolean openLegacyWorkbench(Player player, String benchType) {
if (legacyWorkbenches.containsKey(benchType)) {
player.openInventory(legacyWorkbenches.get(benchType));
return true;
}
return false;
}
/**
* Returns all available legacy workbench types
* @return A set of all available workbench types
*/
public Set<String> getAvailableWorkbenches() {
return legacyWorkbenches.keySet();
}
Events
LegacyCraft provides custom events that other plugins can listen to:
LegacyEpochChangeEvent
Triggered when a player changes their epoch.
public class LegacyEpochChangeEvent extends PlayerEvent implements Cancellable {
private final String oldEpoch;
private String newEpoch;
private boolean cancelled;
// Constructor and getter/setter
}
Usage Example:
@EventHandler
public void onEpochChange(LegacyEpochChangeEvent event) {
Player player = event.getPlayer();
String oldEpoch = event.getOldEpoch();
String newEpoch = event.getNewEpoch();
player.sendMessage("You are switching from " + oldEpoch + " to " + newEpoch + "!");
// Cancel the event if the player is not allowed to switch
if (newEpoch.equals("alpha") && !player.hasPermission("myserver.epoch.alpha")) {
event.setCancelled(true);
player.sendMessage("You do not have permission to enter the Alpha epoch!");
}
}
LegacyWorkbenchOpenEvent
Triggered when a player opens a legacy workbench.
public class LegacyWorkbenchOpenEvent extends PlayerEvent implements Cancellable {
private final String benchType;
private boolean cancelled;
// Constructor and getter/setter
}
Configuration Access
/**
* Returns a ConfigurationSection for a specific epoch
* @param epoch The epoch
* @return ConfigurationSection for the epoch or null if not found
*/
public ConfigurationSection getEpochConfig(String epoch) {
return getConfig().getConfigurationSection("epochSystem.epochs." + epoch);
}
Best Practices
- Always check if LegacyCraft is available before using the API.
- Use
softdepend
instead ofdepend
if your plugin should work without LegacyCraft. - Respect the player’s chosen epoch in your mechanics.
- Listen to LegacyCraft events to stay in sync with changes.
Example Integration: Economy Plugin
@EventHandler
public void onEpochChange(LegacyEpochChangeEvent event) {
Player player = event.getPlayer();
String newEpoch = event.getNewEpoch();
// Adjust currency according to epoch
if (newEpoch.equals("alpha")) {
switchCurrency(player, Currency.GOLD_NUGGET);
} else if (newEpoch.equals("beta")) {
switchCurrency(player, Currency.GOLD_INGOT);
} else {
switchCurrency(player, Currency.EMERALD);
}
}
Example Integration: Quest Plugin
@EventHandler
public void onLegacyWorkbenchOpen(LegacyWorkbenchOpenEvent event) {
Player player = event.getPlayer();
String benchType = event.getBenchType();
// Update quest progress
if (benchType.equals("alpha")) {
questManager.progressQuest(player, "discover_alpha_crafting");
}
}
Contact & Support
If you have any questions about the API or need help integrating it into your plugin, feel free to contact us:
- Discord: https://discord.com/invite/wu6pvdGdka
- Email: contact@julijerry.de